LVGL显示中文
进入lvgl中文文档:显示中文 — LVGL 文档 (100ask.net)
下载字体zip文件,解压得到一个.otf文件
进入LVGL的字体转换网站 Font Converter — LVGL
1.点击Browse指定.otf文件即可
2.range不用管
3.为了节省内存在Symbols中输入自己要使用的文字即可,而不是包含整个字库
4.点击Submit获得c文件
测试代码
LV_FONT_DECLARE(lv_font_Chinese_SiYuan_Blod_28)
ui_Menu_HeartBlood_Label = lv_label_create(lv_scr_act());
lv_style_init(&ui_Menu_HeartBlood_Label_style);
lv_style_set_text_font(&ui_Menu_HeartBlood_Label_style, &lv_font_Chinese_SiYuan_Blod_28);
lv_style_set_text_color(&ui_Menu_HeartBlood_Label_style, lv_color_hex(0x000000));
lv_obj_add_style(ui_Menu_HeartBlood_Label, &ui_Menu_HeartBlood_Label_style, LV_PART_MAIN);
lv_obj_align(ui_Menu_HeartBlood_Label, LV_ALIGN_CENTER, 0, 60);
lv_label_set_text(ui_Menu_HeartBlood_Label, "心率血氧");
解决keil下LVGL无法正常显示中文及error:#8:missing closing quote问题
当我按照上面的步骤进行后,发现无法正常显示中文,只显示了一个框。在网上查阅了资料,很多人都在说可能是编码格式的问题,让我将文件和keil的编码格式改为UTF-8,但都不好使,最后通过以下方式解决了问题。
keil的编码格式
并没有改为UTF-8格式,而是GB2312格式,所以这一步我认为并没有太需要注意的。
字库c文件的编码格式
编码格式在lvgl字体转换网站转换后默认就是UTF-8格式,网上说可以参数改为带有BOM格式的UTF-8编码格式,但是我修改后发现并没有什么卵用。
解决办法
在Misc Controls中加入 --locale=english 编译解决问题
在 Keil 编译器中,
--locale=english
是编译器的一个命令行选项,用于指定编译器输出的语言为英文。这个选项影响编译器、链接器、以及其他工具生成的消息(如警告、错误、信息等)语言。如果未指定此选项,编译器可能会根据系统的区域设置自动选择本地语言。通过使用
--locale=english
,可以确保编译输出始终为英文,这在以下情况下尤为有用:
多人协作:确保团队中每个人看到的一致的英文消息,避免因语言差异导致的理解错误。
查找帮助:很多编译器错误和警告的解决方案在线上有很多英文资料,使用英文消息更容易搜索解决方案。
调试国际化问题:有时需要确认编译器消息是否因为区域设置不同而产生差异。
在编译器设置或命令行中,添加如下选项来强制输出为英文:这样,所有编译器消息都会使用英文显示。