国标汉字字符集(GB2312-80)在汉字操作系统中以汉字库的形式提供,并对汉字库的结构做了统一规定。汉字库的结构如图:
HZK16的GB2312-80支持的汉字有6763个,符号682个。字库有94个区,其中一级汉字有3755个,按声序排列,二级汉字有3008个,按偏旁部首排列。每个区有94个位,每个位存一个汉字。这样每个汉字在汉字库中有确定的区号和位号。区号在前,位号在后,合成一个4位十进制数字,这就是区位码。区位码用两个字节存放(GB2312汉字是由两个字节编码的,范围为A1A1~FEFE。A1-A9为符号区,B0到F7为汉字区),第一个字节表示区号,第二个字节表示位号。只要知道了区位码,就可以知道该字在字库中的地址。
16×16点阵库中,每个点阵模用32个字节来描述,其中的每个点使用一个二进制位。当需要显示时,把某个汉字的16×16点阵信息直接送到显示器上,值为1的点在屏幕上显示一个亮点,值为0的点则不亮,这样就可以显示出相应的汉字。
在国标字库中,每个汉字还可以使用国标码。国标码与区位码之间的换算关系:
国标码的区号=区位码的区号+32(或20H)
国标码的位号=区位码的位号+32(或20H)
或 区码=区号-0xa0 (因为汉字编码是从0xa0区开始的,所以文件最前面就是从0xa0区开始,要算出相对区码)
位码