1.前言
在LVGL中,自带了中英文字体,英文字体倒是挺全的,字号从8到48都有。而中文字体呢,则只有16号字体的lv_font_simsun_16
,更严重的是,包含的汉字还不全。。。
本文章主要讲两个方面。
- 一是如何使用LVGL自带的字体
- 二是当自带字体不满足需求时,如何定制自己想要的字体
2.使用LVGL自带字体
对于使用LVGL自带的字体,很简单。主要两个步骤,一是把LVGL自带的字体文件加入编译系统中去,二是使用它。
在OneOS-Lite中,我们通过配置的方式,使能指定字体。
[图片上传失败...(image-59b26d-1653029420350)]
如此,我们可以把对应的字体宏打开,保证其加入编译系统中去。举个栗子:英文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。
[图片上传失败...(image-e7900c-1653029420350)]
如何使用官网字体转换工具?
- 为要输出字体命名。例如“lv_font_songti_bold”
- 以 px为单位指定高度(字体大小)
- 设置bpp (bit-per-piel)。值越高,字体越平滑(抗锯齿)
- 选择TTF 或 WOFF 格式字体文件
- 设置要包含在字体中的 Unicode 字符范围或在符号字段中列出字符
- 可以同时选择多个字体文件转换,并为其指定范围和/或符号。这些字符将被合并转换到同一个文件中。
- 单击转换按钮以下载转换出来的 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/
知知乎乎:蓁蓁
网友评论