单片机要显示英文和多国文字,字库问题怎么解决?
做出口产品的嵌入式开发者必看:多语言样章、拉丁文与西里尔文语言对照,以及标准字库芯片和自定义字库芯片两条解决路线。
适合:做出口产品、界面要显示外文或多国语言的嵌入式开发者。先讲清外文显示为什么比想象中麻烦,再看两条现成的路。
一、外文显示,麻烦在显示之前
产品做到出海这一步,才发现界面文字是个工程问题:
- 字符集从哪来? 英文 ASCII 简单,但俄文的西里尔字母、越南文的声调附加符号、日韩的假名和谚文,各有各的字符范围。要显示一种语言,先得搞清楚它到底有哪些字符;
- 字体覆盖全不全? 随便找个字体文件取模,很可能缺字符——屏幕上某个位置永远是一个空白方框,客户验收时才发现;
- 编码怎么对应? 中文用 GBK 或 UTF-8,外文又是另一套编码分布,多国语言混排稍不留神就是乱码。
这些事和产品功能毫无关系,纯粹是"为了把字显示出来"付出的成本。自己一项项搞定,几天就没了。
二、先有个概念:字库芯片
之前没接触过这类器件的话,一句话介绍:字库芯片就是把整套字模数据烧进一颗专用小芯片(常见 SOP8 封装,SPI 接口),单片机发编码、读字模,自己的 Flash 和文件系统都不用动。
做这类芯片最久的是高通字库(GENITOP),字库覆盖全球 180+ 国家语言。用字库芯片解决外文显示,有两条路。
三、多国语言包括哪些?先看文字体系
很多人看到"拉丁文""西里尔文"会以为这是两种具体语言。其实它们是两组文字体系:拉丁文不只是英语,西里尔文也不只是俄语。同一个文字体系下,可以对应很多语言和国家。
下表按高通标准字库规格书中的文字体系整理。国家/地区为主要使用地举例,不是完整国家清单;具体型号包含哪些字符集和字号,仍以对应型号规格书为准。
| 文字体系 | 包含哪些语言(举例) | 主要国家/地区(举例) |
|---|---|---|
| 拉丁文 Latin | 英、法、德、西、葡、意、荷、越南、印尼、马来、土耳其、波兰、捷克等 | 欧洲、美洲、大洋洲,以及越南、印尼、马来西亚和部分非洲国家 |
| 西里尔文 Cyrillic | 俄、乌克兰、白俄罗斯、保加利亚、塞尔维亚、马其顿、哈萨克、吉尔吉斯、塔吉克、蒙古等 | 俄罗斯、乌克兰、白俄罗斯、保加利亚、塞尔维亚、北马其顿、哈萨克斯坦、吉尔吉斯斯坦、塔吉克斯坦、蒙古国等 |
| 希腊文 Greek | 希腊语 | 希腊、塞浦路斯 |
| 阿拉伯文 Arabic | 阿拉伯语,以及使用阿拉伯字母的波斯语、乌尔都语、普什图语等 | 沙特、阿联酋、埃及、摩洛哥、伊朗、巴基斯坦、阿富汗等 |
| 希伯来文 Hebrew | 希伯来语 | 以色列 |
| 泰文 Thai | 泰语 | 泰国 |
| 天城体 Devanagari | 印地语等 | 印度等 |
| 高棉文 Khmer | 高棉语 | 柬埔寨 |
| 中日韩方块字 | 中文、日文、韩文 | 中国、日本、韩国等 |
拉丁文里面,具体有哪些?
- 英语、法语、西班牙语、葡萄牙语:英语对应英国、美国、加拿大、澳大利亚等;法语对应法国、比利时、加拿大等;西班牙语对应西班牙及拉丁美洲多国;葡萄牙语对应葡萄牙、巴西等;
- 德语、荷兰语、意大利语:德语对应德国、奥地利、瑞士等,荷兰语对应荷兰、苏里南等,意大利语对应意大利等;
- 北欧和波罗的海语言:丹麦语、挪威语、瑞典语、冰岛语、芬兰语、爱沙尼亚语、拉脱维亚语、立陶宛语等;
- 中欧和南欧语言:波兰语、捷克语、斯洛伐克语、匈牙利语、罗马尼亚语、斯洛文尼亚语、克罗地亚语、土耳其语、马耳他语、阿尔巴尼亚语等;
- 东南亚和非洲部分语言:越南语、马来语、印尼语、塔加洛语、斯瓦希里语等。
所以"拉丁文字库"要解决的并不只是 A–Z,还包括 é、ñ、ü、ç、ł、č,以及越南文的大量声调附加符号。
西里尔文里面,具体有哪些?
- 东斯拉夫语言:俄语、乌克兰语、白俄罗斯语;
- 南部斯拉夫语言:保加利亚语、塞尔维亚语、马其顿语等;
- 中亚和蒙古地区语言:哈萨克语、吉尔吉斯语、塔吉克语、蒙古语等,部分规格书语言表还列入阿塞拜疆语、土库曼语、乌兹别克语等。
这里有个容易踩的坑:语言名相同,不代表使用的字母一定相同。例如塞尔维亚语同时存在西里尔字母和拉丁字母写法,阿塞拜疆语、乌兹别克语、土库曼语也有拉丁字母写法。选型时不要只报"我要乌兹别克语",最好直接拿客户的实际界面文案核对字符。
四、多语言字库样章:模拟器里的真实点阵效果
下面统一用"设备已就绪"这句设备状态文案,展示高通字库的实际字形。图片由 GT-HMI Windows 模拟器真实渲染,不是浏览器字体或排版示意图;显示环境为 480×320 客户区,采用字库 0.0.28 的 24px、4bit 灰度黑体。
拉丁文字库实渲样张:英语、德语、法语、西班牙语、葡萄牙语、越南语;GT-HMI Windows 模拟器,480×320,24px 4bit 灰度黑体,字库 0.0.28
西里尔文、希腊文及中日韩字库实渲样张:俄语、乌克兰语、保加利亚语、希腊语、简体中文、日语、韩语;GT-HMI Windows 模拟器,480×320,24px 4bit 灰度黑体,字库 0.0.28
样张里可以直接看到,德语的 ä、法语的 ç、越南语的复合声调,以及俄语、乌克兰语和希腊语字符,都由同一套多语言字库正常取模显示;不是用几个拉丁字母近似替代。灰度黑体也比纯黑白点阵更适合展示小字号界面文字的笔画边缘。
以上样张用于展示自定义字库的实际渲染效果,并非某一颗标准字库芯片的实拍。阿拉伯文、希伯来文还涉及从右到左排版,泰文、印地文等涉及上下组合或合体。有字符只是第一步,复杂文字还要配对应的排版规则。
五、路线一:标准字库芯片——上板即用的现成方案
字库出厂固化好,买回来焊上板、跑通 SPI 就能显示。外文方向常用的型号举例:
| 型号 | 字库内容 | 封装 | 适合场景 |
|---|---|---|---|
| GT30L24A3W | 12/16/24 点中文 + 繁体(BIG5 全集)+ 日韩 + 外文(含 ISO8859) | DFN8 / SOP8-B | 多语言 + 多字号 |
| GT5DL32A3W | 16/24/32 点中文(GBK)+ 繁体 + 日韩 + 外文(Unicode+Codepage) | DFN8 4×3 / SOP8-B | 语言覆盖要求高 |
| GT20L24F6Y | 12/24 点纯外文,Unicode 覆盖英/法/德/西/葡/越/俄等 173 国 | SOT23-6 | 只要外文、板上空间紧张 |
| GT22L16A1Y | 16 点中文(GB2312)+ 繁体 + 日 + 韩 + 外文 | DFN8 2×3 | 中日韩 + 外文一屏混显 |
完整型号上百款,官网有按语言、字号、封装筛选的选型表,两分钟能定位到型号。
这条路的优势:最快上手,零配置,型号选定就能量产。 局限:字库是固定组合——选定型号后,语言、字体、字号都不能改。以后客户要加一种语言,得看有没有对应型号,没有就得换芯片、重新打样。
六、路线二:自定义字库芯片——语言随时加
另一条路是用高通的自定义字库芯片:芯片出厂是"空"的存储载体(16Mb–128Mb,SPI 接口),装什么语言由你自己配:
- 打开官方免费软件 GT-HMI Designer2,进入字库选配;
- 需要的语言直接勾选——常用外文都有预设标准字符集,一键导入;需求特殊就自定义导入,按语言、按字符范围挑,每个字库占多少容量界面里看得清清楚楚;
- 中文和外文放同一个字库组,导出编译成一个
resource.bin; - 烧录器烧进芯片,上板就能用。多国语言混排的编码对应,官方字库已经处理好了。
GT-HMI Designer2 多语言选配实操:中英日韩各选一个 16 点阵字符集,总容量 609.41KB 一目了然
一个细节:同一个字库组里是同一字号的字符集,界面要几个字号就配几组,导出时软件按组编译,操作上只是多几步勾选。
这条路的价值在"以后":出口产品很少一步到位——先在东南亚卖,后来加俄语区;说明书印三国语言,客户说界面最好八国。自定义芯片因为芯片和字库解耦,加语言 = 软件里加字符集 + 重新烧录,硬件和采购都不动。
七、两条路怎么选
- 语言组合确定不变(比如就中英双语,出口市场固定)→ 标准字库芯片,最快最省事;
- 语言可能增加、市场还在拓展 → 自定义字库芯片,一次硬件到位,语言随便加。
八、顺手送一个工具
开发中查某个字符的编码,GT-HMI Designer2 内置了编码查询工具,GB2312 / GBK / GB18030 / Unicode / UTF-8 / BIG5 互查;官网也有在线版,不装软件也能用。
编码查询实操:输入文字选「单独」模式,每个字的 UTF-8 / GB18030 / GBK / GB2312 / Unicode / BIG5 编码一次看全
高通(GENITOP)始于 1992 年,深耕汉字信息处理与嵌入式 GUI 技术,字库覆盖全球 180+ 国家语言。
语言随时加、硬件不用换——用 GT-HMI Designer2 免费配一份自己的多语言字库。
前往查看