
5.7 点阵字模生成原理与方法
[3]
5.7.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))*一个点阵字模的字节数。
[