汉字显示

区位码:

 

所谓汉字编码,就是采用一种科学可行的办法,为每个汉字编一个唯一的代码,以便计算机辨认、接收和处理。在此介绍的是《国家标准信息交换汉字编码》。这种编码经过加工整理一律以汉语拼音的字母为序,节相同的字以使用频率为序,其查找方法与一般汉语字典的汉字拼音音节索引查找法相同。

  为了使每一个汉字有一个全国统一的代码,1980年,我国颁布了第一个汉字编码的国家标准: GB2312-80《信息交换用汉字编码字符集》基本集,这个字符集是我国中文信息处理技术的发展基础,也是目前国内所有汉字系统的统一标准。由于国标码是四位十六进制,为了便于交流,大家常用的是四位十进制的区位码。所有的国标汉字与符号组成一个94×94的矩阵。在此方阵中,每一行称为一个"区",每一列称为一个"位",因此,这个方阵实际上组成了一个有94个区(区号分别为0 1到94)、每个区内有94个位(位号分别为01到94)的汉字字符集。一个汉字所在的区号和位号简单地组合在一起就构成了该汉字的"区位码"。在汉字的区位码中,高两位为区号,低两位为位号。 在区位码中,01-09区为682个特殊字符16~87区为汉字区,包含6763个汉字其中16-55区为一级汉字(3755个最常用的汉字,按拼音字母的次序排列),56-87区为二级汉字(3008个汉字,按部首次序排列)。

  所以,当我们需要n个任意汉字时,我们不必建一个全部汉字表,而是利用区位码实现常用汉字的提取

 

由于计算机对西文字符采用一个字节表示,汉字用二个字节(GBK内码)表示。为了保证中西文兼容,因此规定每个字节只用七位,若两个字节的最高位均为1,则该字符为汉字。即计算机中的数字和一些特殊符号按ASCⅡ编码方式,汉字和一些符号是GBK内码编码方式来表示。而点阵显示字库是按区位编码方式排列。因此,读字库之前,要完成ASCⅡ编码与区位编码的转换和GBK内码编码与区位编码之间的转换

 

 6.UCDOS 16点字库文件(HZK16j)
    本实验是读 UCDOS 16点字库文件(HZK16j)。字库中的汉字按共阳极16×16点阵模式存储,即每个汉字由16×16=256个点组成,占用16×2=32个连续的字节单元。字节的每一位(bit)表示一个点的属性:1表示亮点,0表示暗点。字符点阵是按照汉字区位码排列的,连续的两个字节表示该汉字字模的一行。

?? (1)GBK内码与相应区位码的转换

    汉字的内码从一些图形字符开始,起始编码为 A1A1H;汉字内码第一位为区码,每区为 94 个汉字,第二位为位码。汉字点阵数据在字库中的偏移量为:
((区码-A1H)*94 + (位码-A1H))*32L,由此可编辑偏移量的源代码为:
    inter_code.ed[0]=character[count];
    count++;
    inter_code.ed[1]=character[count];
    point_quwei=inter_code.ed;
    wei=((point_quwei & 0xff00) >>8 )- 0xa1;
    qu=(point_quwei & 0x00ff) - 0xa1;
    rec=(qu*94+wei)*32L;

  (2)ASCⅡ码与相应区位码的转换

    ASCⅡ码的所有符号全在区位码的第三区,位码的偏移量为0x21H。ASCⅡ码在字库中的偏移量为:(区码*94 + (位码-21H))*32L,由此可编辑偏移量的源代码为:
    inter_code.ed[0]=character[count];
    point_quwei=inter_code.ed;
    wei= ((point_quwei & 0x00ff)-0x21;
    qu=0x03-0x01;
    rec=(qu*94+wei)*32L;

你可能感兴趣的:(汉字显示)