超轻量级GB2312点阵汉字库11乘11点阵

admin 2017-6-16 4426


首先是文件大小,167200B 随便一个STM32内部FLASH都可以放,不需要外扩。

我直接烧写的512K的STM32的FLASH最高位置从0x57000处开始的FLASH 还有360K的FLASH可以供应用程序用,应该足够了吧。

#define HZIKU12_START (0x08000000+(0x57000))  //11点汉字库起点地址

#define ASCII57_START (HZIKU12_START+(0x3EE0))  /ASCII57字库起点地址

用STM32带液晶的时候老是为字库头疼,如果板子上准备一个字库又费事半天,

所以想做个超小的字库放FLASH里,GB2312就够用了

找了个11点阵的汉字点阵,把空白部分删除,减少文件体积,不少字模不好看,做了个软件改了改

字的风格类似早期的NOKIA黑白屏手机,说好听就是怀旧点。

另外还做了一个5×7的点阵放在非汉字区的空白的地方,也可以通过指针访问。首地址偏移3EE0的一段

一点不妥就是如果测试的时候会显示几个乱码,基本上没问题,反正那个区也用不到。

用法:

先获得区位码        

index=(区-0xA1)*94+(位-0xA1));        //区位

如果区位码大于 831 表示是汉字 需要减一个偏移量578  

if(index>831)

index-=578;

*(((INT8U *)HZIKU12_START)+(index*22) 获得字模首地址,接下来的22个字节就是这个字的字模了。第一个字节为8点。第二个字节3点。以此类推。考虑过再进行优化用上浪费的5个点,文件大小可以更小,但是用起来就麻烦了,,理论上可以把字库的大小降到130K,意义不大。。


上传的附件:
最新回复 [0]
返回