【ESP32-S3实现中文显示】
·
前言
本文使用powershell实现指定文字的中文库生成,lvgl中自带一个中文库,但中文比较少,不完全包含想要的中文,因此想自己建立一个中文库。
一、确定字体路径
1、确定字体
使用电脑自带的字体进行生成,Windows系统默认路径为C:\Windows\Fonts,界面如下。
2、确定路径
由于在C:\Windows\Fonts中无法复制路径,需要将选用的字体单独复制到一个文件夹中。在新建文件夹下,按住shift,右键点击字体文件,选择“复制文件地址”,然后找个地方先粘贴一下,或者后面用的时候再复制。
// 示例
"D:\USER\Desktop\word\STKAITI.TTF"
二、生成字库
本文使用ESP-S3的官方例程,lvgl/lvgl: “~8.4.0”(可在idf_component.yml中查看使用版本)。
1、确定中文生成方式
在lvgl的lv_font_simsun_16_cjk.c(路径为managed_components\lvgl__lvgl\src\font\lv_font_simsun_16_cjk.c)中,查看标题,主要看红框内容。
2、生成中文字库
在powershell中,输入以下内容,生成的路径默认为打开powershell的路径,建议在新建文件夹中打开,或者使用cd指令到需要的位置。
// 设置 PowerShell 为 UTF-8 模式
// 参考其他教程,不确定是否必须要设置
chcp 65001
// 生成
// lv_font_conv --font 在第一步中复制的字体路径 --size 字体大小 --bpp 图像色彩深度 --format lvgl --symbols 指定的中文 --no-compress --no-prefilter --force-fast-kern-format --lv-font-name 字体名字 --output 文件名
lv_font_conv --font "D:\USER\Desktop\word\STKAITI.TTF" --size 24 --bpp 4 --format lvgl --symbols "测试使用按实际需要填写" --no-compress --no-prefilter --force-fast-kern-format --lv-font-name lv_font_stkaiti_24 --output lv_font_stkaiti_24.c
三、使用中文字库
1、导入字库
将第2步生成的文件,放到工程下(*managed_components\lvgl__lvgl\src\font),如图。
2、使用
在需要中文显示的位置,加入以下内容。
// LV_FONT_DECLARE(字体名字);
LV_FONT_DECLARE(lv_font_stkaiti_24);
// 示例,新建一个按键,显示中文"测试"
btn_data_scan = lv_btn_create(parent);
btn_data_scan_label = lv_label_create(btn_data_scan);
lv_label_set_text(btn_data_scan_label, "测试");
// 使用接口指定字体类型
lv_obj_set_style_text_font(btn_data_scan, &lv_font_stkaiti_24, LV_PART_MAIN);
说明
第一次导入中文库文件或更改中文库名字后,编译可能会报错,建议先“彻底清理”,再“构建项目”。
更多推荐
所有评论(0)