一、背景
如果lvgl 提供的默认字体不符合我们的显示要求,我们可以在网上下载开源字体,或者利用系统自带(注意版权问题)的字体文件转换lvgl 能识别和调用的字体。
或者为了压缩存储空间,某些字体我们只需要个别字符,我们可以重新转换这个字体。
二、官方字体转换工具的使用
1. 官方字体转换工具链接
https://lvgl.io/tools/fontconverter
2. 字体转换
2.1. 填写字体基本
这里分别填写:
- 字体名字
- 字体大小
- 每个点占用多少bit。选择4bit-per-pixel ,抗锯齿效果最好。
2.2. 选择本地字体文件
点击 “选择文件”, 选择本地的字体文件( .otf
), 这里选择的是思源黑体字体。
2.3 输入需要转换的字符范围
这里的字符范围以ascii 码顺序表示。例如0x20-0x7F,表示ascii 码从32-127 的字符,包含了常用字符,数字,大小写字母,能够满足大部分的显示需求。
ASCII 码对照表: https://tool.oschina.net/commons?type=4
2.4 点击 Convert 按钮,转换
转换完成后,浏览器自动下载 lvgl格式的 lv_font_CN_Bold_34pt.c
字体文件。直接将该文件拖进我们的工厂目录下,下面介绍怎么使用。
三、怎么使用转换回来的字体文件
1. 声明新字体
参照默认字体的声明方式,在lv_font.h
文件声明新生成的字体
#if LV_FONT_CN_BOLD_34PT
LV_FONT_DECLARE(lv_font_CN_Bold_34pt )
#endif
2. 使能新字体
在生成的lvgl 新字体文件,我们可以看到新字体有一个编译开关,当编译开关为1时,才会编译这个字体。当前字体编译开关为 LV_FONT_CN_BOLD_34PT
。 在lv_conf.h 文件,参照前面自定义字体的使能格式,使能新字体。
#define LV_FONT_CN_BOLD_34PT 1
3. 使用新字体
在生成的字体文件里面,找到一个 const lv_font_t
类型的结构体变量,在这里是 lv_font_CN_Bold_34pt
,通过lvgl 的api ,就可以设置使用这个新字体。例如,设置为默认字体:
/*Always set a default font*/
// #define LV_FONT_DEFAULT &lv_font_montserrat_30
#define LV_FONT_DEFAULT &lv_font_CN_Bold_34pt