修改了一下字体玩玩
在Haier系列发现至少两种字库。一种是24 x 24点阵的,每个字占72字节。字库不包含英文半角字符,换句话说只有汉字库。
字库按汉字区位码表顺序存放,但是不包含10~15区,88~94区的空白区域。
另外一种估计是24 x 12点阵(未经证实)。OP2010提供的卓异hi2023EC 1M系列就是这种。解压后的字库文件大小正好是前一种24 x 24的一半。
以24 x 24点阵字库为例,说明一下制作方法
1. 先了解一下压缩包格式。
压缩包分为12字节压缩包头数据,以及压缩包数据。
12字节压缩包头数据为:
55 AA 5A A5 XX XX XX XX YY YY YY YY
其中55 AA 5A A5为压缩包指示字节, XX XX XX XX为解压后的文件大小,YY YY YY YY为压缩包数据大小。
压缩包数据紧跟着压缩包头数据,从第13个字节开始,长度为YY YY YY YY。压缩包数据使用lzss算法压缩。
压缩工具和压缩包的详细信息请参见:
原来坛子里有高手发布过windows 版的lzss工具,现在找不到了。
[url]http://bbs.lcdhome.net/read-htm-tid-34283-fpage-1-toread--page-1.html[/url]
2. 找到字库压缩包。
搜索55 AA 5A A5 00 08 5D 70,找到那一行数据。其中55 AA 5A A5为压缩包指示字节,00 08 5D 70是字库文件解压后的大小。如果是24 x 12点阵,该处为04 2E B8
同时记下字库压缩包数据大小。
3. 制作字库。
找一个点阵字库生成工具。俺用的是一个免费的工具,HZKCreator。该工具还需要mfc71.dll,如果提示缺少mfc71.dll,就下载一个,放到HZKCreator.exe一个目录下。
选一个喜欢的字体,字体大小选24,然后生成字库。生成的字库文件,比如叫hzk24。
4. 修改字库文件。
打开上一步字库文件,删除10~15区数据,删除的数据区域是EDF0 ~ 18C90。HZKCreator默认不会生成88区以后的数据。
保存后,确认文件大小是548208字节(16进制是085D70)。
5. 压缩字库,压缩后的字库文件大小最好不要超过原字库压缩包数据大小。超过了怎么办,没试过。
6. 替换字库数据。同时修改压缩包数据头内,压缩包数据大小为新字库压缩包文件大小。
7. 修改CRC校验,参见坛内风寒的工具。
俺没有用过风寒的工具,手工修改的。发现俺的bin文件里校验和op2010公布的校验地址不一样。
flash header区没有AS_CRC32。校验区开始位置60000开始,结束位置从bin文件往回倒数最后一个FF的数据,往前四个字节是校验码,再往前是校验区结束位置。