打算在屏幕上显示很多汉字,不是几句或者几个标题菜单什么的,而可能是大量的汉字显示(比如:MP3的歌词),那么就要考虑用到整个汉字字库了。
1.汉字字库
常用的汉字编码有GB2312,GBK和BIG5等,而GBK是GB2312的扩充,BIG5是繁体中文(暂时不做考虑)。所以,我打算针对GBK编码做为字库来支撑显示。
GBK采用双字节编码,共有23940个码位,收录了21886个汉字和图形符号。GBK的双字节编码规则和顺序,内容比较多,我就不去搬运了,想更深入了解的,可以参考如下链接:
2
.把汉字转换为点阵要把汉字汉字在LCD上显示出来,光有字库还不行,需要将每个汉字转换成对应的点阵图(例如16×16的点阵),这个活肯定不是人干的,有现成的软件可以用。我采用的是正点原子的字模软件ATK-XFONT v2.0.3
这个软件用某度一搜索就出来了,很好找。打开软件,按照下面图框的位置分别点击:①——②……⑦——⑧
按照以上点击后,就会在你选择的路径位置生成2个文件,一个bin文件,一个txt文件。
其中
FontLibrary.bin就是ESP32-S3要用到的字模文件(点阵文件),而FontLibrary.bin_index.txt则是该字模文件对应的汉字索引文件。在上面的
字模软件使用的时候,可能会关心到的是“阴码”或者“阳码”,取模走向是“逆向”或者“顺向”,取模方式是“逐列”还是“逐行”等。本来在编程的时候,这些方式和方向与编程时汉字变量的高低位息息相关。幸运的是,我们用的是AI编程,这些因素我都不用考虑了,因为他会对字模文件读取后,判断是什么顺序的字模,然后采用对应的方式编程即可。