admin管理员组

文章数量:1538180

一、背景

如果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/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 

本文标签: 字体lvgl