LVGL字体转换与支持

1.前言

在LVGL中,自带了中英文字体,英文字体倒是挺全的,字号从8到48都有。而中文字体呢,则只有16号字体的lv_font_simsun_16,更严重的是,包含的汉字还不全。。。 本文章主要讲两个方面。

  1. 一是如何使用LVGL自带的字体
  2. 二是当自带字体不满足需求时,如何定制自己想要的字体

2.使用LVGL自带字体

对于使用LVGL自带的字体,很简单。主要两个步骤,一是把LVGL自带的字体文件加入编译系统中去,二是使用它。 在OneOS-Lite中,我们通过配置的方式,使能指定字体。

如此,我们可以把对应的字体宏打开,保证其加入编译系统中去。举个栗子:英文26字号对应的需要打开的宏是:LV_FONT_MONTSERRAT_26。

其次,则是使用,示例代码如下:

   char *text = "hello world";
    lv_obj_t *label = lv_label_create(lv_scr_act());
    lv_obj_set_style_text_font(label,&lv_font_montserrat_26,0);
    lv_label_set_text(label,text);

3.定制字体

对于中文字体,很多时候,LVGL自带字体是无法满足的,这时候就需要使用LVGL的字体在线转换工具了。 首先进入LVGL官网,右上角找到字体工具:Font convertor。

如何使用官网字体转换工具?

  1. 为要输出字体命名。例如“lv_font_songti_bold”
  2. 以 px为单位指定高度(字体大小)
  3. 设置bpp (bit-per-piel)。值越高,字体越平滑(抗锯齿)
  4. 选择TTF 或 WOFF 格式字体文件
  5. 设置要包含在字体中的 Unicode 字符范围或在符号字段中列出字符
  6. 可以同时选择多个字体文件转换,并为其指定范围和/或符号。这些字符将被合并转换到同一个文件中。
  7. 单击转换按钮以下载转换出来的 lv_font_songti_bold.c 文件。

4.使用定制字体

建议把该文件放到项目工程文件夹里面,然后使用我们的CUBE工具,输入命令scons --ide=mdk5 -s把它加入编译系统中去。或者,自己使用keil手动添加也是可以的。 其次,就是如何使用自己的定制字体,代码如下:

    char *text = "中移物联网OneOS-Lite";
    extern lv_font_t lv_font_songti_bold;
    lv_obj_t *label = lv_label_create(lv_scr_act());
    lv_obj_set_style_text_font(label,&lv_font_songti_bold,0);
    lv_label_set_text(label,text);

和LVGL自带字体的使用方法对比,也就是多了一个: extern lv_font_t lv_font_songti_bold;或者也可以这么写LV_FONT_DECLARE(lv_font_songti_bold)

5. 附言

以上就是LVGL字体转换与支持,字体转换工具除了官网在线版,也有官方离线版,另外第三方的工具也有很多,这里讲其一,以供交流。

6.关注&&联系

开源轻量操作系统: https://gitee.com/cmcc-oneos/OneOS-Lite

docs文档中心: https://oneos-lite.com/

知知乎乎:蓁蓁

{{o.name}}
{{m.name}}

猜你喜欢

转载自my.oschina.net/u/5412040/blog/5528552