汉字显示技术

汉字显示技术

ID:38159333

大小:162.12 KB

页数:4页

时间:2019-05-28

汉字显示技术_第1页
汉字显示技术_第2页
汉字显示技术_第3页
汉字显示技术_第4页
资源描述:

《汉字显示技术》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、汉字显示技术汉字编码区位码国家标准的汉字字符集(GB2312—80)在汉字操作系统中是以汉字库的形式提供的。汉字库结构作了统一规定,如图3-19(a)所示,即将字库分成94个区,每个区有94个汉字(以位作区别)每一个汉字在汉字库中有确定的区和位编号(用两个字节),这就是所谓的区位码(区位码的第一个字节表示区号,第二个字节表示位号,因而只要知道了区位码,就可知道该汉字在字库中的地址,每个汉字在字库中是以点阵字模形式存储的,如一般采用16×16点阵形式,每个点用一个二进位表示,存1的点,当显示时,可以在屏上显示一个亮点,存0的点,则在屏上不显示,这样把存某

2、字的16×16点阵信息直接用来在显示器上按上述原则显示,则将出现对应的汉字,如一个“大”字的16×16点阵字模如图3-19(b)所示,当用存储单元存储该字模信息时,将需32个字节地址,图3-19(b)右边写出了该字模对应的字节值。“大”字区位码为2083,表示它位于第20区第84个。图3-19(a)国标(GB2312-80)汉字字符集(b)“大”的字模(16×16)内码汉字使用两字节表示,国家制定了统一标准,称为国标码。国标码规定,每个字节使用后面7位,第一位为0。为了区别于英文的ASCII码,国标码在计算机上使用的时候,规定汉字每个字节第一位设置为1

3、,以表示该两字节为汉字,称为内码。以“大”字为例子:国标码3473H:0011010001110011内码B4F3H:1011010011110011国标码与内码有一定的转换公式,即16进制的区位码,两个字节各加80H,就成为了国标码。汉字字模在字库中存放的位置根据汉字的区位码来确定,内码是汉字在机内的表示。由于区位码和内码存在固定的转换关系,所以当在支持汉字输入的系统中,键盘输入的汉字内码即在程序中存在,将其转换为区位码,再从字库中找到对应的汉字字模,然后再用有关的位操作和循环语句,对每个字节的每一位进行判断,如同过滤一样,如果某位是1,则按设置的颜

4、色在屏幕的相应位置画点(用graphics.h中的显示象素点的函数putpixel()),若某位为0,则不画点,这样就可按预先设置的颜色在相应位置显示出该汉字来。内码到区位码的转换若汉字内码为十六进制数h2h1l2l1,则区号qh相位号wh分别为:qh=h2h1-0xa0;wh=l2l1-0xa0;若用十进制表示内码为dld2,则qh=dl-l60;wh=d2-160;即区位码qw为:qw=100*(d1-160)十(d2-160);反过来,若已经知道了区位码qw。则也可求得区号和位号:qh=qw/100;wh=qw-100*qh;因而该汉字在汉字库中

5、离起点的偏移位置(以字节为单位),可计算为:offset=(94*(qh-1)+(wh-1))*32;注意:字库中每1区有94个字符。这样,就可以找寻到文件的偏移量,读出一个charbytes[32]数组。这样bytes数组中则存了要显示汉字的16×16点阵字模,然后将字模按行扫描的办法,通过循环用putpixel()函数在屏幕设定位置显示出象点,因而组合成一个显示的汉字。问题实现下面的程序(例程3-39)采用3.6.1.3介绍的转换方法,当通过get_hz()函数取得简体汉字系统的16*16点阵字库(这里文件名为HZK16,存放在作者计算机的d:/z

6、y/tc下,用户可从中文DOS或其它中文系统中获得中文字库)中的汉字字模后,(在mat[]中)用dishz()函数显示汉字时,用预先定义的一个数组mask[]中的元素去和字模的相应位相与,若结果大于0,则用putpixel(x,y,color),在x,y处用color颜色显示;若为0,则不显示。mask[]数组中存了一个字节的每位权值,这样用mask[j%8]&mat[pos+j/8]即得到了第[pos+j/8]字节的第[j%8]位的值,因而用该值便可控制显示。在该程序中,用指针变量s作为要显示汉字串的地址指针,因而在取出汉字字模显示后,因一个汉字占两

7、个字节,所以s必须加2,以便取下面的汉字。由于在设定的图形方式下,x的最大值可取639,因此当该行x值未到640,并且未到汉字串尾时,继续再该行显示汉字,否则令x=20,s+=2,在下一行开始显示汉字,这是由两重while循环结构实现的。/*例程3-39*/#include#includeFILE*hzk_p;voidopen_hzk(void);voidget_hz(charincode[],charbytes[]);voiddishz(intx,inty,charcade[],intcolor);main(

8、){intx=20;inty=100;char*s="岱宗夫如何,齐鲁青未了。造化钟神秀,阴阳

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。