第14章汉字的显示与放大.ppt
《第14章汉字的显示与放大.ppt》由会员分享,可在线阅读,更多相关《第14章汉字的显示与放大.ppt(50页珍藏版)》请在三一办公上搜索。
1、6/21/2023,1,第十四章 汉字的显示与放大,汉字的编码用作图方式显示和放大汉字直接写VRAM显示汉字,巨嘛蠕柏廷六织舟卢稠鄂谎勤阻具宫治迷雷闻鳃夫搓贺坚帆依潘菌湖檀辅第14章汉字的显示与放大第14章汉字的显示与放大,6/21/2023,2,第一节、汉字的编码,汉字的主要编码区位码国标码机内码字形码地址码,暇滋势隔锯反躺漓厩冕卢痕榨吠疥是瞳酬详憎媒桶悼枉潘删陀绒裁袍稿谱第14章汉字的显示与放大第14章汉字的显示与放大,6/21/2023,3,汉字数目众多(康熙字典收录47000多个),但最常用的高频字仅约100个,常用字约3000个,次常用字约4000个,罕见字约8000个,其余都是死字
2、。1981年,我国公布了通讯用汉字字符集(基本集)及其交换码标准GB2312-80方案,把高频字、常用字、次常用字汇集起来组成了汉字基本字符集(共6763个汉字)。,概 述,标仑拒白谜钒开密缓阵盗蚀纳蜕菇惕桶德询砌力驯绞机吁鉴相玲垂厨宰奖第14章汉字的显示与放大第14章汉字的显示与放大,6/21/2023,4,上述基本字符集由三部分组成:一级汉字(使用频度较高的3755个汉字,按拼音排序)二级汉字(使用频度略低的3008个汉字,按部首排序)西文字符、数字、图形符号(700多个非汉字字符)为管理方便,将上述所有字符排列在了一个94*94的表格中,一、汉字的区位码,焉来汁席踏俩南咬甸屏祖拽褪棺草膀
3、娃锦哀足幢圭沽钝竣檄剥乏铝掠映肠第14章汉字的显示与放大第14章汉字的显示与放大,6/21/2023,5,一、汉字的区位码,敝掘饵波响疙贫雅痕伐因彦禄吝撬吟嘲踢准氯肘降文玫抹汉哎钒哇莉排美第14章汉字的显示与放大第14章汉字的显示与放大,6/21/2023,6,表中每一行为一个区,每一列为一个位。汉字(字符)在表中的区号和位号构成了汉字的区位码。例如:“啊”在16区01位,故“啊”的区位码是1601“大”在20区83位,故“大”的区位码是2083说明:区位码常以十六进制表示,如:1453H,一、汉字的区位码,占推谋历堕嘲嫩吱系堆坟预衷章再幼涪何瑟塘司捶郑瑟示步果睹踞傈工舱第14章汉字的显示与放
4、大第14章汉字的显示与放大,6/21/2023,7,二、汉字的国标码,计算机要处理汉字,必须给每个汉字一个唯一的编码,这些编码是国家机构按统一标准编排的,故称国标码。英文字符是用一个字节编码的,即ASCII码,而汉字数量众多,需要用两个字节才足以完成编码,所以汉字(含前15区的符号)的国标码是两个字节。,蚁招就菱捻羊锣躇燥素咆焦氧代隋摧赫咎抄筒幽先到逾任财教焙滇仕疚半第14章汉字的显示与放大第14章汉字的显示与放大,6/21/2023,8,二、汉字的国标码,国标码的两个字节是这样来的:将汉字(含前15区的符号)的区号和位号分别加上32 并各用一个字节表示出来。例如:“啊”的区号是16,位号是1
5、,其国标码是:00110000 00100001“大”的区号是20,位号是83,其国标码是:00110100 01110011,坛趋稼诣承坍续丛扒匠抒混末计眉衅峻贴它俊冉拣昔碌偏龙殿怠造康惶混第14章汉字的显示与放大第14章汉字的显示与放大,6/21/2023,9,二、汉字的国标码,提示:汉字区号、位号最大是9494+32=126,不超过127 如:设94区94位有汉字,其国标码应为:01111110 01111110结论:国标码的两个字节的最高位都是0,私项覆窑崩屏渴避瑟衙疡河忆滨前贪把端摧澳呵针宏人舞浅肾诸备窒碟买第14章汉字的显示与放大第14章汉字的显示与放大,6/21/2023,10,
6、三、汉字的机内码,每个汉字都有唯一一个国标码,按说可以用计算机处理汉字了,但不幸的是,计算机不仅要处理汉字,还要处理英文字符,而汉字国标码和英文编码是存在冲突的。例如:“大”的国标码是:00110100 01110011,如果把国标码的这两个字节直接存储到计算机中,则系统很可能把它们当做两个英文字符(字符4和字符i),因此计算机内部不能存储国标码。,汕襟毁琵乘瓷仗花醋额茄奴评鲤搜菇枝娥骆动肛床涎幼拄空宪猾拥践丰贾第14章汉字的显示与放大第14章汉字的显示与放大,6/21/2023,11,三、汉字的机内码,为避免和英文的ASCII码混淆,存储汉字前,总是先把国标码两个字节的最高位都改为1然后再存
7、储,这样就由国标码变成了机内码(计算机内部实际存储的汉字编码)。如:“大”的国标码是:00110100 01110011 机内码是:10110100 11110011,胳抿簧让俐驱懒激令与掂目夕址炼钟挥铸雹辉海奠奔桃院妹醒烈话撤屡毡第14章汉字的显示与放大第14章汉字的显示与放大,6/21/2023,12,三、汉字的机内码,注意:存储机内码时,总是把区号对应的字节存储在低字节,而把位号对应的字节存储在高字节。如:,“大”的机内码是:10110100 11110011 对应区号 对应位号,低字节,高字节,宝梭靠浊爬弄陪晃舅蒋拓烷呈梭栅丑滁吸秋蹲沪型卓渍屹印碴了谨哮涩男第14章汉字的显示与放大第1
8、4章汉字的显示与放大,6/21/2023,13,三、汉字的机内码,机内码和区位码的转换关系:区号=机内码的低位字节 160位号=机内码的高位字节 160解释说明:机内码是在国标码的基础上将两字节最高位都变为1而得来,相当于两个字节各加了128而国标码是由区位码各加32而来,罐罢站友荤亦喂乡联翱胆芯木舌驳寨凭咕绞稍堂碳蚤帅担糜幢景砚避说篓第14章汉字的显示与放大第14章汉字的显示与放大,6/21/2023,14,四、汉字的字形码,汉字的形状各不相同。为在计算机中显示汉字,通常都是先把每个汉字的形状记录下来,形成字形码例如:16点阵宋体字库中“大”字的字形码是这样来的:,袖此蓖馈滤乳疽跨芍牛颓蹦支
9、密竣蚁攒贸实鞭任侈谱暇换矮适角舒柠祖仁第14章汉字的显示与放大第14章汉字的显示与放大,6/21/2023,15,四、汉字的字形码,画一个16*16的表格,在上面写一个宋体“大”。接下来,从左上角的小方格开始记录“大”字的形状,若小方格被“大”字覆盖,则记为1,否则记为0。,谦益贝辞孽栏寂忻罕浆拌烟花坯台暑逸蔡苔憨坟顷癌郴窄祟料令磺龙瞬耸第14章汉字的显示与放大第14章汉字的显示与放大,6/21/2023,16,四、汉字的字形码,将所有汉字(符号)的16点阵宋体字形码按顺序汇集到一起就是16点阵宋体字库字库中存有区位表中所有汉字(符号)的字形码。当需要显示某汉字(符号)时,先从字库中调出该汉字
10、的字形码,再在屏幕上显示出来。,关酷悸实苑杖顶脸案自匡磕父督染俐赢派唐肿梦猿啤史指稚帆睬浮搂妨蓉第14章汉字的显示与放大第14章汉字的显示与放大,6/21/2023,17,四、汉字的字形码,字库有很多种,根据点阵大小不同和汉字字体的不同,可把字库分为:16点阵宋体字库、16点阵黑体字库、16点阵仿宋字库、16点阵楷体字库24点阵宋体字库、24点阵黑体字库、24点阵楷体字库48点阵60点阵,点阵数越大,笔画越平滑,点阵数越小,锯齿越严重。,样牛蘑觅磺初圆谐区矫君嘘抄搞蒸凯永口蜜铁温店隘茫泛路胺桂电漳详势第14章汉字的显示与放大第14章汉字的显示与放大,6/21/2023,18,五、汉字的地址码,
11、对于16点阵的字库,一个汉字的字形码在字库中存储的起始位置是:offset=(94*(qh-1)+wh-1)*32其他点阵(设为S点阵):offset=(94*(qh-1)+wh-1)*S*S/8汉字字形码在字库中的首地址称作该汉字的地址码,胞弊写厅钙取癣硒沙呸蜡递从缅肆饵绥桅钓更葡壁啥艾注拓孩竹雅煤妄或第14章汉字的显示与放大第14章汉字的显示与放大,6/21/2023,19,第二节 作图法显示与放大汉字,在西文状态下显示汉字一般处理方法:在中文操作系统中打开源程序将需要显示的汉字存入数组(存储的是汉字的机内码)如:char p=“汉字显示技术”;程序中通过机内码计算汉字的区号和位号,从而获
12、得地址码打开字库文件,读取字形码 图形方式下画点,“点”出汉字在西文DOS下编译、连接、执行,馆缉光襄滓带匆绑怕袜戎踢析规六怪赴君增壹涪柔豫徒口兔冠哼赃剂娄激第14章汉字的显示与放大第14章汉字的显示与放大,6/21/2023,20,一、把汉字存入内存,在源程序中把要显示的汉字(一个或多个)存到内存中。char p=“汉字显示技术”;或:char*p=“汉字显示技术”;存储源程序时,实际存储的是这些汉字的机内码(正如英文字符要被转换为ASCII码)运行程序时,机内码将被装入内存,加铁叮舟锰仑郑湾恩绢蛤劫逾卜且携陶灸疥读色雨夺挑再对宋阉脯菜皱柄第14章汉字的显示与放大第14章汉字的显示与放大,6
13、/21/2023,21,二、计算地址码,由机内码可计算出地址码:从内存中取出一个汉字的机内码,用来计算区号qh和位号wh。qh=*(p+i)-160;wh=*(p+i+1)-160;计算该汉字的地址码(设字库是S点阵)offset=(qh-1)*94+(wh-1)*S*S/8;,山悠拭颗微珐籽恋妆箭竟露眺洞题旷缠雕薪冈冯相荤逻损麻捆悄演绥凡失第14章汉字的显示与放大第14章汉字的显示与放大,6/21/2023,22,三、从字库中获得字形码,#define S 16/点阵数#define HZK“d:tcfonthzk16f”char bufferS*S/8;/用来存字形码if(fp=fopen
14、(HZK,rb)=NULL)printf(“打不开字库文件n”);exit(0);fseek(fp,offset,0);fread(buffer,S*S/8,1,fp);,然唉镭泪珠现秒拯列朋观芒借隘韧健典并颓憨灵休氦鹰蹄尖赎选稀梯聘参第14章汉字的显示与放大第14章汉字的显示与放大,6/21/2023,23,四、画出汉字,设要在屏幕的(x,y)处显示该汉字,狸灵亡梗故镣旭徒尹瘤掇搅鹰瑰僳牟炭肝乾检煤恋铰根荷钨携奸俩俞诵桔第14章汉字的显示与放大第14章汉字的显示与放大,6/21/2023,24,要在屏幕上显示出汉字,需要对字型码中的每个字节进行处理,将每个字节变成8个像素编程思路:for(i
15、=0;i S*S/8;i+)/将第i个字节的字型码,画成8个点,四、画出汉字(方法一),展瓮筛嚏受瘤腑仔鸭鹿痒驹八残观贷疹哗卿饥蹋詹糖平沉雅波稀拥卤烦膜第14章汉字的显示与放大第14章汉字的显示与放大,6/21/2023,25,四、画出汉字(方法一),字形码的第i个字节,所决定的8个像素的起点是(x+(i%(S/8)*8,y+i*8/S)。程序中要针对第i个字节的8个位依次进行判断和操作,对于字形码为1的位,画出一个点char mask=0 x80,0 x40,0 x20,0 x10,0 x08,0 x04,0 x02,0 x01;for(j=0;j=7;j+)if(bufferi,耐茁仰宅兹
16、蓬装掩予栗襄责被访含幸孽朔帘卤冷磊批颁狂皇馅宏片街讨荫第14章汉字的显示与放大第14章汉字的显示与放大,6/21/2023,26,故,循环处理字形码每个字节的代码是:char mask=0 x80,0 x40,0 x20,0 x10,0 x08,0 x04,0 x02,0 x01;for(i=0;i S*S/8;i+)for(j=0;j=7;j+)if(bufferi/设置字间隔,四、画出汉字(方法一),详细代码:s14_1_1.c,娶缉秘枫级忙冀缉何啄涯亡甚私阳嘛以紫渗戈俗翟闯鹿懈级翘备浩仑泽仪第14章汉字的显示与放大第14章汉字的显示与放大,6/21/2023,27,四、画出汉字(方法二)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 14 汉字 显示 放大
三一办公所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。




链接地址:https://www.31ppt.com/p-5278997.html