一、 概述
1.1 Font Converter 简介
LVGL 官方的字体转换工具 lv_font_conv 用于将电脑中的 .ttf 、 .woff 字体文件转换为C数组,进而使 LVGL 可以调用显示自定义的字体。此工具有在线版和离线版两个版本,这里先介绍在线版 lv_font_conv 的使用方法。离线版工具的安装使用可参考下一篇博文《LVGL Offline Font Converter》。
二、 Online Font Converter 使用
2.1 lv_font_conv 的使用
在线工具网址: https://lvgl.io/tools/fontconverter,打开网页后如下图。
图 1. 在线转换工具的使用
如上图,我们设置字体大小为 30,抗锯齿选用 4,抗锯齿数值越大,字体显示质量越高,不过空间占用也更多,选择微软雅黑的 ttf 字库,转换字符为“你好哇”,点击 Convert 即可转换。转换完成后如下图所示,会看到一个 .c 文件。
图 2. 转换完成的 .c
这个文件里面包含了转换的字体数组等先关内容,文件最后有一个结构体,我们在工程中调用的字体就是通过它实现的。
图 3. 字体结构体
三、 在工程中调用字体
将生成的字库 .c 添加到工程中,并在需要调用该字体的文件中声明字体的结构体,比如 extern lv_font_t my_font_MicrosoftYaHei_30;
3.1 直接使用原字体字符
IDE 支持 UTF-8 编码时,打开 LVGL UTF-8(默认开),可直接在代码中调用字符,如下图。
图 4. 开启 LVGL UTF-8 支持
图 5. 调用字体字符
如上图,我们可以直接在代码中调用字符“你好哇”,比较方便。
3.2 通过 Unicode 调用字符
有时不放方便直接代用字符,比如其他语言、图标等,这种情况下,我们就可以把要显示的字符转成 Unicode 编码,从而进行调用。
将字符转换成 Unicode 我用的是 emWin 的小工具 U2C,下载网址: https://www.segger.com/downloads/emwin/
图 6. U2C 小工具
U2C 的使用比较简单,先将要显示的字符保存为 .txt 文件,用 notepad++ 打开,保存为 UTF-8 BOM 编码,如下图。
图 7. 安装 lv_font_conv 工具
接着,打开 U2C 工具,选择刚刚的 .txt 文件,如下图,设置输出文件名及路径即可进行转换。
图 8. 选择输入文件
图 9. 设置输出文件名
转换完成之后可看到新生成的输出文件,打开文件,如下图,这些就是我们要在代码中调用的 Unicode 码,如下图。
图 10. 字符 Unicode 码
接下来就可以在代码中通过 Unicode 调用这些字符了,如下图。
图 11. 调用字符 Unicode
运行结果如下,两种方式均可实现字体字符的显示。
图 12. 字体显示效果
四、参考资料
(1)博客《LVGL笔记9--lv_font字体》 :
(2)PDF 文档《正点原子 littleVGL 开发指南》