7 点阵字模生成原理与方法[3] 5
1 字模生成原理 本设计中因为使用汉字的点阵显示,需要提取汉字字模,因此我们首先来了解汉字点阵字模的提取方法
汉字的点阵字模是从点阵字库文件中提取出来的
例如常用的16×16点阵HZK16文件,12×12点阵HZK12文件等等,这些文件包括了GB 2312字符集中的所有汉字
现在只要弄清汉字点阵在字库文件中的格式,就可以按照自己的意愿去显示汉字了
下面以 HZK16文件为例,分析取得汉字点阵字模的方法
HZK16文件是按照GB 2312-80标准,也就是通常所说的国标码或区位码的标准排列的
国标码分为 94 个区(Section),每个区 94 个位(Position),所以也称为区位码
其中01~09 区为符号、数字区,16~87 区为汉字区
而 10~15 区、88~94 区是空白区域
如何取得汉字的区位码呢
在计算机处理汉字和ASCII字符时,使每个 ASCII字符占用1 个字节,而一个汉字占用两个字节,其值称为汉字的内码
其中第一个字节的值为区号加上 32(20H),第二个字节的值为位号加上 32(20H)
为了与 ASCII字符区别开,表示汉字的两个字节的最高位都是1,也就是两个字节的值都又加上了128(80H)
这样,通过汉字的内码,就可以计算出汉字的区位码
具体算式如下: qh=c1-32-128=c1-160 wh=c2-32-128=c2-160 或 qh=c1-0xa0 wh=c2-0xa0 qh,wh为汉字的区号和位号,c1,c2为汉字的第一字节和第二字节
根据区号和位号可以得到汉字字模在文件中的位置: location=(94*(qh-1)+(wh-1))*一个点阵字模的字节数
那么一个点阵字模究竟占用多少字节数呢
我们来分析一下汉字字模的具体排列方式
例如下图中显示的“汉”字,使用16×