[原创] 史前技术: 制作小字库
本帖最后由 tomzbj 于 2023-3-4 21:15 编辑我们需要显示汉字时一般要外挂一片SPIFLASH, 因为16点阵的HZK16也得200多k, 存到MCU的ROM里不太现实.
缺点是增加了成本, 多占PCB面积, 多占MCU一个SPI外设.
如果需要显示的汉字不多, 可以只把用到的汉字的字模挑出来做成小字库. 别跟我说取模软件, 取模取出来的烂怂字根本没法看.
写了个python程序, 可以把指定文件里的汉字筛选出来, 按unicode排序, 去掉重复的, 然后做出字库.
使用方法: py gen_smlib.py input.c > output.c
output.c里会有一个用到的汉字的unicode内码表, 根据要显示的字的内码找到索引值, 再按索引值找到相应的字模即可.
程序见附件,包括了11/12/14/16点阵的字库 (按unicode排序).
参考之前的贴子: https://www.amobbs.com/thread-5775880-1-1.html
实际显示效果如图:
牛,原来都是一个个去取模的,时间长了难免有重复的。 感谢大神分享 感觉将来要用到,先收藏。 挺实用的工具
另外效果图最左边第九排开始乱码了? Huaan 发表于 2023-3-4 21:38
挺实用的工具
另外效果图最左边第九排开始乱码了?
(引用自5楼)
嗯, 所有这几个字库都缺了西里尔字母和希腊字母, 最左边的HZK11还缺了假名、序号、特殊符号,基本光剩汉字了。
这几个字库我是用GB2312的转成UNICODE顺序排列的,所以还是只有GB2312的6000多个字,勉强够用。以后有机会了再做完整的吧~ 我一直以为用字库和取模的是一样的 用汉字内码排序为好,程序字符串中汉字是2字节内码表示的。
9.9元LED屏软件常用的 先收为敬。 AWEN2000 发表于 2023-3-5 06:24
用汉字内码排序为好,程序字符串中汉字是2字节内码表示的。
(引用自8楼)
你说的2字节内码不是GB2312/GBK吧。。。现在是2023年了,早该统一用utf-8了好吧?
utf-8转unicode非常容易的,有简单的公式。
智涅 发表于 2023-3-4 23:07
我一直以为用字库和取模的是一样的
(引用自7楼)
字库只有固定的几种点阵啊,我这里有11,12,14,16的
此外就是24和32了,这两种就可以支持不同字体了,仿宋楷体什么的
矢量字库也可能自带几种点阵字体,不一定有,取模软件也不一定支持。 我以前也用python做过取模的脚本,每个字都可以形象的定义显示效果,方便查看,很久了,好像发过帖子。
前段时间看到 esphome支持中英文文字在TFT屏上的显示,也是直接在选定的字体直接取模需要的文字,不需要的不取,也蛮好的
页:
[1]