4. 汉字显示(上)—— ESP32-S3 AI编程

      打算在屏幕上显示很多汉字,不是几句或者几个标题菜单什么的,而可能是大量的汉字显示(比如:MP3的歌词),那么就要考虑用到整个汉字字库了。

     1.汉字字库

        常用的汉字编码有GB2312,GBK和BIG5等,而GBK是GB2312的扩充,BIG5是繁体中文(暂时不做考虑)。所以,我打算针对GBK编码做为字库来支撑显示。

      GBK采用双字节编码,共有23940个码位,收录了21886个汉字和图形符号。GBK的双字节编码规则和顺序,内容比较多,我就不去搬运了,想更深入了解的,可以参考如下链接:

https://www.qqxiuzi.cn/zh/hanzi-gbk-bianma.php

      2.把汉字转换为点阵

        要把汉字汉字在LCD上显示出来,光有字库还不行,需要将每个汉字转换成对应的点阵图(例如16×16的点阵),这个活肯定不是人干的,有现成的软件可以用。我采用的是正点原子的字模软件ATK-XFONT v2.0.3

         这个软件用某度一搜索就出来了,很好找。打开软件,按照下面图框的位置分别点击:①——②……⑦——⑧

        按照以上点击后,就会在你选择的路径位置生成2个文件,一个bin文件,一个txt文件。

    其中FontLibrary.bin就是ESP32-S3要用到的字模文件(点阵文件),而FontLibrary.bin_index.txt则是该字模文件对应的汉字索引文件。

    在上面的字模软件使用的时候,可能会关心到的是“阴码”或者“阳码”,取模走向是“逆向”或者“顺向”,取模方式是“逐列”还是“逐行”等。本来在编程的时候,这些方式和方向与编程时汉字变量的高低位息息相关。幸运的是,我们用的是AI编程,这些因素我都不用考虑了,因为他会对字模文件读取后,判断是什么顺序的字模,然后采用对应的方式编程即可。

     是的,我只用告诉AI,我上述生成的两个文件FontLibrary.bin和FontLibrary.bin_index.txt文件在TF卡上的哪个路径文件夹下,AI会自动的去读取,分析判断,并且取出几个字模出来,做显示测试和验证。

     在做字模的时候,我现在只用关心做多大的点阵字即可,我首先做了种,12*12;16*16和24*24三种大小的字模,等显示出来后,根据实际需要,再看要不要做别的尺寸大小汉字字模文件。

    这节暂时告一段路,下一节开始着手汉字的显示AI编程执行动作。

发表评论