前言

本文使用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);

说明

第一次导入中文库文件或更改中文库名字后,编译可能会报错,建议先“彻底清理”,再“构建项目”。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐