LVGL -显示中文汉字
·
LVGL -显示中文汉字
LVGL原生字体显示
- 字库转换工具
- LVGL官网提供的在线字库转换工具
https://lvgl.io/tools/fontconverter
- LvglFontTool
LvglFontTool是一款非常好用的汉字字库转换工具,可以生成.c文件和.bin文件。并且可以免费使用,在此非常感谢作者:里飞网阿里的无偿奉献。
里飞网
里飞网论坛
- “选择字体”设置字体及字体大小等参数;
- 要转换的文字可以通过“导入TXT文本”,“加入常用汉字”,“加入所有汉字”等方式添加;
- “清除重复”可以删除导入的重复字符;
- “插入awesome图标”可以添加字符图标,如下图共有670多个图标:
调用方法是直接用图标对应的编码,如"\uF000",“ABC\uF001”,“中\uF003国”。
转换生成字库.c文件《myFontKaiTi14.c》,字库文件名可根据C语言变量定义语法随便定义。
- 修改代码
- 将字库myFontKaiTi14.c文件拷贝到lvgl源码font目录下
- lv_conf.h 通过宏LV_FONT_DECLARE声明添加的字库,可以添加多个自定义字库
#define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(myFontKaiTi14) - lv_conf.h 配置LV_FONT_FMT_TXT_LARGE(当字体索引超过范围才需要设为1)
#define LV_FONT_FMT_TXT_LARGE 1
LV_FONT_FMT_TXT_LARGE 为0是bitmap_index 位域定义为20位最大索引=2的20次方个
测试代码 - 方法1,通过lv_obj_set_style_text_font()设置字体
lv_obj_t *label1 = lv_label_create(lv_scr_act());
lv_obj_set_style_text_font(label1, &myFontKaiTi14, 0);
lv_label_set_text(label1, "abc\uF001中华人民共和国\uF004ABC");
lv_obj_align(label1, LV_ALIGN_CENTER, 0, 0);
- 方法2,通过style设置字体
static lv_style_t style_font;
lv_style_init(&style_font); // 初始化样式
lv_style_set_text_font(&style_font, &myFontKaiTi14); // 样式设置字体
lv_style_set_text_color(&style_font, lv_palette_main(LV_PALETTE_RED));
lv_obj_t *label = lv_label_create(lv_scr_act());
lv_obj_add_style(label, &style_font, LV_STATE_DEFAULT);
lv_label_set_text(label, "中华人民共和国万岁\uF2D6");
lv_obj_t *lable2 = lv_label_create(lv_scr_act());
lv_obj_add_style(lable2, &style_font, LV_STATE_DEFAULT);
lv_obj_align_to(lable2, label, LV_ALIGN_TOP_LEFT, 0, 20);
lv_label_set_text(lable2, "测试文本");
FreeType矢量字库
待续。。。
Tiny TTF矢量字库
待续。。。
更多推荐
已为社区贡献7条内容
所有评论(0)