HanzFontMaker程序是基于微软.net 2.0平台开发的,所以需要先安装.net 2.0运行时!请用户自行到微软官方网站下载安装。
HanzFontMaker主界面如下图:
设置好Font和MapSize属性之后,点击“输出字库文件”按钮可以在程序目录得到“data.bin”字库文件和“head.c”文件。该字库文件是携带自描述信息的,描述信息位于文件的0起始偏移处,共256字节。其中64字节的字库描述信息和192字节的ASC字符宽高描述信息。由于ASC字符包含数字和字母,很常用,所以在生成的head.c文件中同样包含了96个ASC字符(每字符2字节)的信息。
对于不同的字体,96个ASC字符可能不是等宽的,所以需要一些描述信息来指示每个ASC字符的宽度和高度。每个字符用2个字节来描述就够了,分别是宽度和高度;所以有192个字节的ASC字符宽高描述信息。
偏移量 | 字节数 | 名称 | 描述 |
0 | 2 | HdrSize | 总是为64。它表示有64字节字库描述信息。 |
2 | 32 | DescText | 字库识别文本。“This is an image as font!” |
34 | 2 | CharSize | 字符的字节数。 |
36 | 1 | CharStride | 字符的行扫描宽度(单位是字节)。 |
37 | 1 | CharLines | 字符的行数(单位是:行)。 |
38 | 1 | MapWidth | 字符的位图宽度(单位:点)。 |
39 | 1 | MapHeight | 字符的位图高度(单位:点)。 |
40 | 1 | AscWidth | 最大ASC字符的位图宽度(单位:点)。 |
41 | 1 | AscHeight | 最大ASC字符的位图高度(单位:点)。 |
42 | 1 | GbkWidth | 最大GBK字符的位图宽度(单位:点)。 |
43 | 1 | GbkHeight | 最大GBK字符的位图高度(单位:点)。 |
44 | 20 | Reserved | 保留 |
上面表格中的各字段信息用法如下图所示:
从字库文件的256偏移处开始就是每个字符的点阵信息了。每个字符占用CharSize字节,所以总共有((96 + 8178) * CharSize)个字节(96个ASC和8178个GBK)。由于每个字符的CharSize是统一的值,所以在字库中查找字符点阵数据是非常快速的,只需按照给定的字符编码值计算即可得到点阵数据的偏移地址!
8178个GBK是按照GB2312标准编码的,范围是0xa1a1到0xf7fe;共87个区,每区有94个字符;所以有8178个汉字。
字符的取模规则是“横向左高位”,适合大部分GUI系统使用!
HanzFontMaker还生成字库的辅助C文件,它包含了每个ASC字符的点阵宽度和高度信息,和字库文件中的192字节ASC字符宽高描述信息一致,以便开发者将非等宽ASC字符信息编译在程序ROM中,加快ASC字符的显示速度!
点击“编辑字库文件”按钮可以打开造字程序,这个功能很强大!为了避免使用者误将编辑过的字库文件覆盖,造字程序仅打开“hanz.bin”文件。如果您需要编辑生成的字库文件,请把它重命名为“hanz.bin”,然后点击“编辑字库文件”按钮即可!
字库文件编辑器界面
(第一行显示ASC字符;后续87行显示GBK字符,每行94个字符)
字符位图编辑界面
HanzFontMaker程序支持系统内安装的所有字体!是目前能转换字体最多的点阵造字程序。
HanzFontMaker是免费软件,更强大的体验就让您自己来吧!