一、背景
前两天在研究一个UI项目,需要支持中文字体。项目用到的是LVGL 7.11版本,默认情况下只支持英文和数字(其他LVGL版本也一样)。所以要想用上中文,必须要自己动手加上中文字体的支持。
二、先来个效果图
-
默认情况是这样的:(只能显示数字 1,其他中文内容都看不到)
-
改完之后是这样的:( 可以完整显示内容)
三、实践过程
1、浏览官网LVGL字体相关资料
官方的LVGL 字体相关说明中找到了添加字体部分。内容如下:
大概是说有三种方法生成字体文件,以及如何在代码中使用字体文件,具体方法请继续往下看。
2、用官方工具生成字体文件
我先选择了在线工具,但我找了几个字体文件后,发现生成经常报错(其中一个错误如下图所示),也没有找到原因。
3、改用第三方工具LvglFontTool
于是又找了一个第三方工具 LvglFontTool,看起来还挺好用的,界面也比较清新。
按照网上的一些提示,选择了对应的字体文件,并选择工具中【加入常用汉字】按钮,然后生成。
4、修改相关源码
生成文件后按照官方提示的加入到代码中,具体修改内容如下:
- 自动生成的
lv_fon_sans_28.c文件主要内容
//下面这个变量需要在其他文件中引用
lv_font_t lv_font_sans_28 = {
.dsc = &font_dsc,
.get_glyph_bitmap = __user_font_get_bitmap,
.get_glyph_dsc = __user_font_get_glyph_dsc,
.line_height