LVGL 字库怎么选?从打样到产品化量产
LVGL 字库怎么选?自己转字库(官方 lv_font_conv / GT-FontLab Plus)还是专业字库芯片——两个方案都走得通,差别在数据放哪、字库内容谁做、量产之后谁兜底。真实生成与编译实测(GB2312 全集 24px 单组 487KB、8bpp 933KB),加授权、内容、工程、服务四笔账,从打样到产品化量产一次讲清。
适合:用 LVGL 做界面、需要显示中文(或多国语言)的嵌入式开发者。
一、每个中文界面开发者都会撞上的问题
LVGL 开箱自带的字体只有 Montserrat——英文、数字、常用符号,中文一个字都没有。所以"LVGL 怎么显示中文"是社区里被问得最多的问题之一:官方 lv_font_conv、LvglFontTool、bin 文件加文件系统、FreeType 集成实时渲染 TTF……教程数不过来,但它们回答的都是同一件事:怎么把 TTF 转成 LVGL 能用的点阵。
这一步确实不难。真正的分水岭在转完之后:产品要往下走,字库的问题会一个一个冒出来——
- 字符量上去了,数据放哪:编进固件,还是放到外部存储?
- 界面要多种字号、多门语言,这几套字库谁来做、怎么维护?
- 字体的授权干净吗?把 TTF 转成点阵编进商业产品,原字体的许可允许吗?
- 量产之后加字、换字号、扩语言,要不要重新编译、重新发固件?
这些问题在网上没有系统答案。本文用真实生成的字体文件和真实编译数据,把 LVGL 中文字库的两个方案一次说清:怎么做,怎么选。
二、两个方案,先分清
| 方案与工具 | 产出 | 特点 | 适合 |
|---|---|---|---|
方案一 A. 官方工具:lv_font_conv(命令行 / 在线转换器) | C 数组或 bin 文件,编进固件 | 免费、官方、教程最多 | 字符固定且少、一两种字号 |
| 方案一 B. GT-FontLab Plus(浏览器本地工具) | 同规格的 LVGL .c 文件 | 免安装;导出前可整批预览、逐字查缺字与裁切、文本效果预览、容量统计,另有 BIN / C 数组 / 完整 ZIP 多格式 | 要认真核对的工程交付 |
| 方案二:专业字库芯片(如 GT30L32S4W) | 字库烧录在 SPI 芯片里,LVGL 回调现场读取;有商业级点阵、灰度、矢量三种形态 | 数据在主控外,字库内容原厂做好 | 大规模、多字号多语言、量产产品 |
先把接入层面的事实说清楚:LVGL 对内嵌数组和外部读取都原生支持,方案一的两种工具(A 和 B)在同字体同参数下产出同样的点阵数据,方案二的芯片同样由 LVGL 回调现场读取——显示中文这件事,两个方案都走得通。真正的差别在另外三件事:数据放哪、字库内容谁做、量产之后谁兜底,下文逐一展开。
方案一的两个工具怎么挑:字符固定、参数一次定准,官方转换器够用;要认真核对的工程交付,GT-FontLab Plus 可以在导出前把两件事先做掉——用语言区域建议和文本效果预览确认到底需要哪些字符(很多时候全集是惯性,界面文案子集化之后体积砍半不止),用容量统计实时核算体积;确认完直接点"LVGL .c"导出即用字体文件:
GT-FontLab Plus LVGL 导出按钮实拍:鼠标悬停高亮导出区第四个绿色按钮“LVGL .c”,与完整 ZIP、BIN、C 数组并列;导出前可用文本效果预览确认界面文案覆盖、用容量统计估算体积
三、真正拉开差距的:产品化的四笔账
两个方案转出的点阵数据完全一样,产品化阶段才见差别。字库芯片的优势集中在四个维度——授权、内容、工程、服务,先一张表看全,再逐笔展开:
| 维度 | 自己转字库(方案一) | 字库芯片(方案二) |
|---|---|---|
| 授权 | 自己理清许可链:嵌入、商用、再分发逐条核对 | 自有知识产权字库,授权随芯片交付 |
| 内容 | 选字体、逐档取模、逐字核对,逐套维护 | 字号、语言、特殊字库成体系,逐字精修预装 |
| 量产变更 | 重新生成、编译、发布固件 | 自定义可重烧,标准换芯片,固件不动 |
| 后续服务 | 团队自建字体工程能力,自己维护 | 产品级服务:原厂直供,国内外订单有保障 |
授权账:桌面能用 ≠ 产品能卖
字体编进商业产品,许可要同时满足允许嵌入、允许商用、允许随产品再分发——商业字库(如方正)要走 OEM 嵌入授权;Windows 系统字体(simsun 等)不能随意再分发;开源字体也要逐条核对条款。"桌面软件能用"不等于"转成点阵编进卖钱的设备里合法"。方案一(自己转字库)的授权链要自己理清;方案二的高通自有知识产权字库,授权已经含在芯片里。
内容账:字库是一个体系,不止字号
专业字库的内容不止"有几档字号",而是一个体系。以经典款 GT30L32S4W 为例,一颗装下 12/16/24/32 四档字号的中文 GB2312 + 英文(按定宽点阵字节估算四档合计约 1.6MB,仅点阵数据估算,不含索引与外文字符,具体以规格书为准)——这 1.6MB 是做好的专业字库。放大到产品线,内容维度包括:
- 字号体系:多档字号逐字精修,不是同一份点阵的机械缩放;
- 字库类型:商业级点阵、灰度、矢量多种形态(详见"形态不止点阵"一节);
- 多语言与小语种:字库覆盖全球 180+ 国家语言,小语种有专门的处理算法;
- 特殊字库:Emoji、LaTeX 公式、数字符号等专用字库;
- 转码表:Unicode、GB2312、BIG5 等编码转换表。
其中字号体系的真实观感(GT-FontLab Plus 同参数本地生成 12/16/24/32 四档,展示字号梯度):
GT-FontLab Plus 真实生成的四档字号点阵:思源黑体「高」字,12/16/24/32 四档、同一字体同一参数(1bpp),底部对齐呈现字号梯度;GT-FontLab Plus 浏览器本地生成,Chrome 157 / Windows 11,2026-11-08
语言维度的直观感受,可以看 GT-HMI Designer2 的字库选择界面:按语言分类切换(简体中文、English、日本語、한국어、繁體中文……),每个分类下是多档点阵字库列表,勾选即配进工程——
GT-HMI Designer2 字库选择筛选界面实拍:按语言分类的 Tab(简体中文、English、日本語、한국어、繁體中文等),分类下 15×16、24×24 等多档点阵字库列表(简体、繁体、多语言条目);GT-HMI Designer2 软件界面
这样的体系自己从头做,链路是选字体、理清授权、逐档取模、逐字核对裁切与缺字,之后每次调整字符集或字号都要再走一遍。需要更大规模或多国语,标准型号里直接挑;自定义字库芯片还有 16/32/64/128Mb 四档容量可选。
工程账:改一次字库,动不动固件
改字符集、加语言、换字号——方案二的两种芯片各有一种节奏:自定义字库芯片支持反复烧录,字库内容随产品迭代更新;标准字库芯片内容固定,变更时更换芯片,但型号选型固定、调用接口成熟,量产调用无需适配。无论哪种,固件一个字节不用动;方案一则要重新生成、重新编译、重新发布固件——产线上这是"换一颗或烧一颗芯片"与"重新烧录整个应用"的差别。
服务账:专业可靠的产品级服务
产品迭代中,字库需求会自然演进——新一档字号、扩一门语言的市场、新界面的字符调整。方案二背后是原厂产品级的服务能力:在线免费配置、原厂烧录交付,字形质量、编码索引这些字体工程专业环节由原厂团队长期保障,国内外订单的字库交付都有原厂支持。方案一则意味着产品团队要长期维护一套自己的字体工程能力。
形态不止点阵:灰度与矢量
高通字库有商业级点阵、灰度和矢量三种形态。矢量字库是专为嵌入式设计的——RAM 占用仅几 KB,比社区常见的 FreeType 集成方案省很多空间,而且 LVGL 接入方式与点阵字库相同(同一套回调机制),移植代码可直接复用。矢量字库与 FreeType 集成方案的系统对比,留待后续专题展开。
代价也说全
大字库场景下,外挂存储本来就要有——方案二不是净增一颗芯片,而是把这颗空白存储换成出厂已烧录的字库芯片;字符量小到主控装得下时才谈得上"多一颗",而那个场景用方案一(内嵌)就够。真正要掂量的代价是两条:SPI 读取时间(每次取字形几微秒到几十微秒级,界面渲染通常无感,逐像素动画类场景才需要评估),以及底层数据函数的一次性移植——高通芯片只需实现 gt_read_data / r_dat_bat 两个 SPI 底层函数,V8.4 和 V9.3 的完整移植代码在《LVGL 移植高通字库》指南里可以逐行照抄。
要用方案二,从标准字库芯片选型表按语言和字号挑型号——选型页左侧按语言、字库类型、字号等多维筛选,右侧是全部标准型号;字符集或字号组合是自定义的,用 GT-HMI Designer2 免费配一份自定义字库芯片,容量实时算。
官网标准字库芯片选型页面实拍:左侧语言筛选展开 14 项(中文、英文、拉丁文、日文、韩文、西里尔文、阿拉伯文、泰文、希腊文、希伯来文、印地文、高棉文、天城体、数学公式),字库类型分点阵/灰度/矢量;右侧标准字库芯片卡片列表,含型号、点阵类型、排置、封装与一句话说明(共 56 款、第 1/4 页),GT20L/GT21L/GT22L/GT23L 系列可见推荐标记;标准字库芯片选型表页面,Chrome / Windows 11,2026-11-08
四、容量量级参考
一组真实数据,供判断字符量到了哪个区间、主控的 Flash 还装不装得下。官方 lv_font_conv 真实生成、arm-none-eabi-gcc 10.3 -O2 真实编译(取 .o 体积):
| 实测组 | 字形数 | 编译后体积 |
|---|---|---|
| 16px · ASCII 94 字 | 94 | 3.1 KB |
| 16px · GB2312 一级 3,755 字 | 3,849 | 151.7 KB |
| 24px · GB2312 一级 3,755 字 | 3,849 | 270.4 KB |
| 16px · GB2312 全集 6,763 字 | 6,857 | 272.5 KB |
| 24px · GB2312 全集 6,763 字 | 6,857 | 487.2 KB |
体积是"字号 × 字数 × 位深"的乘法:24px 全集一组 487KB,而主流 MCU 内置 Flash 常见 512KB~2MB,应用程序、LVGL 本体、图片资源还要共用同一块 Flash;灰度抗锯齿(8bpp)同一字符集实测 933 KB。多语言有去重红利,也有边界:中英日三语名义字符近 7,000、实际字形 5,248(中英日汉字大量同码,生成器自动去重),但韩文、西里尔等是全新字形,体积按语言数线性叠加——多字号、多语言的组合很容易进 MB 量级。GT-HMI 生态有一组现成实测可作量级参照:一个界面四种字号、四组字库合计 3,707KB(GT 字库组格式口径,非 LVGL C 数组,量级可参照):
GT-HMI Designer2 多字号字库组实测:一个界面四种字号=四组字库,12 号组(中英)180.89KB、16 号组(中英日)502.31KB、24 号组 1088.20KB、32 号组 1936.38KB,合计 3707.78KB 界面右下角实时累计;GT 字库组格式实测,量级参照
C 源文件本身也是成本:487KB 那组的源码 3.3MB,进仓库、进 IDE,每次全量构建都重新编译(实测单次 0.48 秒,8bpp 组 0.96 秒)。
字符固定且少,内嵌(方案一)绰绰有余;全集、多字号、多语言,主控内置 Flash 通常容纳不下——但容量从来不是选型的硬约束:装不下时,外挂一颗 NOR Flash 是嵌入式产品的常规做法。至于这颗外挂的芯片里装什么——自己制作、自己烧录的空白存储,还是原厂组合好、出厂已烧录的专业字库——第三节的代价账已经算清。
五、总结
LVGL 中文字库,先做、再选。
做——字符量小,官方 lv_font_conv 或 GT-FontLab Plus 几步就能转出等价的点阵,内嵌直接用,免费且没有技术门槛。
选——字符量、字号、语言上去之后,题目从"怎么转"变成"字库谁做":容量不是硬约束,字库谁做是专业题——授权干净的成套字库体系(字号、语言、特殊字库)、专业可靠的产品级服务、国内外订单的交付保障;出厂已烧录,上产线即用。
做是几步的事,选是把账算清的事。
高通(GENITOP)始于 1992 年,深耕汉字信息处理与嵌入式 GUI 技术,字库覆盖全球 180+ 国家语言。
数据来源注(2026-11-08 实测):内嵌组数据由官方
lv_font_conv1.5.3 真实生成(黑体 simhei.ttf / MS Gothic,--no-compress --no-kerning),体积为 arm-none-eabi-gcc 10.3 -O2 编译后 .o 体积(含位图、字形描述表与码点查找表);多语言组日文字体由系统 TTC 容器抽取为 TTF 后生成。GT 字库组 3,707.78KB 为 GT-HMI Designer2 编译实测,格式与 LVGL C 数组不同,文中仅作量级参照。芯片容量按型号规格与定宽点阵字节估算,具体以对应规格书为准。
