ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

LVGL 中文字体转换操作步骤(使用 lv_font_conv)

LVGL 中文字体转换操作步骤(使用 lv_font_conv) 本教程以 SourceHanSansSC-Regular.otf思源黑体 Regular 字重为例演示如何将其转换为 LVGL 可直接编译的.c字体文件。1. 环境准备1.1 安装 Node.js 和 npmlv_font_conv是一款基于 Node.js 的命令行工具因此必须先安装 Node.js 环境。Windows / macOS / Linux前往 Node.js 官网 下载 LTS长期支持版本并安装。安装完成后打开终端命令行执行以下命令确认安装成功bashnode -v npm -v如果显示版本号如v18.x.x和9.x.x则说明环境已就绪。2. 安装 lv_font_conv使用 npm 进行全局安装这样在任何目录下都可以调用该命令。bashnpm install lv_font_conv -g安装完成后验证是否成功bashlv_font_conv --help如果出现帮助信息含参数列表则安装成功。注意如果权限不足尤其在 Linux/macOS 下可能需要在命令前加sudobashsudo npm install lv_font_conv -g3. 获取字体文件本步骤需要SourceHanSansSC-Regular.otf文件。官方下载地址Adobe GitHub 仓库 或 Google Noto 项目 均可获取。Language Specific OTFs Simplified Chinese (简体中文)请下载OTF格式的简体中文SCRegular 字重文件。将下载的.otf文件放置于一个便于操作的目录例如~/fonts/。如果你已经有这 7 个字体文件可直接选择SourceHanSansSC-Regular.otf使用。4. 执行转换命令进入字体文件所在目录执行以下完整命令bashlv_font_conv \ --font SourceHanSansSC-Regular.otf \ --size 20 \ --bpp 4 \ --format lvgl \ --range 0x20-0x7E \ --range 0x4E00-0x9FFF \ --range 0x3000-0x303F \ --range 0xFF00-0xFFEF \ -o my_chinese_font.c参数说明参数值含义--fontSourceHanSansSC-Regular.otf输入的字体文件路径--size20生成字体的高度像素可根据屏幕分辨率调整--bpp4每像素比特数抗锯齿等级推荐4--formatlvgl输出格式必须为lvgl才能被 LVGL 识别--range0x20-0x7EASCII 可打印字符英文字母、数字、标点--range0x4E00-0x9FFFCJK 统一汉字最常用的中文区--range0x3000-0x303F中文标点符号如、。等--range0xFF00-0xFFEF全角字符全角英数、日韩假名等-omy_chinese_font.c输出的 C 源文件名执行后终端会显示进度最终生成my_chinese_font.c及其对应的my_chinese_font.h头文件。5. 优化文件大小重要思源黑体包含数万个字形全量转换会导致生成的.c文件非常巨大可能 100 MB超过大多数单片机的 Flash 容量。建议采用以下两种方法之一大幅裁剪字符集方法一使用--symbols指定具体字符最推荐只列出程序中实际用到的所有字符例如bashlv_font_conv \ --font SourceHanSansSC-Regular.otf \ --size 20 \ --bpp 4 \ --format lvgl \ --symbols 温度湿度设置开关0123456789年月日时分秒 \ -o my_font.c这样生成的字体仅包含这些字符体积通常只有几十 KB。方法二缩小--range范围如果你只需要部分汉字可以减少0x4E00-0x9FFF的范围例如改为0x4E00-0x4F00仅前 256 个汉字等但操作上不如--symbols直观。6. 在 LVGL 工程中使用将生成的my_chinese_font.c和my_chinese_font.h复制到你的 LVGL 工程源码目录例如src/fonts/。在需要显示中文的 C 文件中包含头文件c#include my_chinese_font.h在 LVGL 对象中引用该字体例如clv_obj_t *label lv_label_create(lv_scr_act()); lv_label_set_text(label, 你好世界); lv_obj_set_style_text_font(label, my_chinese_font, 0);确保源代码文件.c保存为UTF-8 编码否则中文字符串会乱码。7. 常见问题及解决命令找不到检查 npm 全局安装是否成功或尝试重新打开终端。内存不足 / 转换超时由于字体较大转换过程可能消耗较多内存。建议使用--symbols缩小字符范围后再试。生成的字体显示模糊或锯齿调整--size或--bpp参数bpp越高抗锯齿越好但文件也越大。缺少某些特殊符号根据需求补充相应的 Unicode 范围例如0x20-0x7E是基本 ASCII0x3000-0x303F是中文标点。8. 完整示例脚本如果你经常需要转换可将命令写成一个脚本如convert.shbash#!/bin/bash lv_font_conv \ --font SourceHanSansSC-Regular.otf \ --size 24 \ --bpp 4 \ --format lvgl \ --symbols 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ。年月日时分秒温度湿度设置开关 \ -o my_font.c给脚本执行权限并运行即可。结束语通过以上步骤你即可成功将思源黑体转换为 LVGL 可用的中文字体文件。根据实际项目需要调整字体大小、字重Regular / Bold及字符范围以获得性能和显示的最佳平衡。如果在操作中遇到任何错误请检查文件路径、权限和网络如需下载并根据错误提示进行修正。
返回列表