![点阵字模生成原理与方法[3].doc_第1页](http://file.renrendoc.com/FileRoot1/2020-1/16/6897c8f7-e741-4ba8-9fa8-97e724b7d68d/6897c8f7-e741-4ba8-9fa8-97e724b7d68d1.gif)
![点阵字模生成原理与方法[3].doc_第2页](http://file.renrendoc.com/FileRoot1/2020-1/16/6897c8f7-e741-4ba8-9fa8-97e724b7d68d/6897c8f7-e741-4ba8-9fa8-97e724b7d68d2.gif)
![点阵字模生成原理与方法[3].doc_第3页](http://file.renrendoc.com/FileRoot1/2020-1/16/6897c8f7-e741-4ba8-9fa8-97e724b7d68d/6897c8f7-e741-4ba8-9fa8-97e724b7d68d3.gif)
![点阵字模生成原理与方法[3].doc_第4页](http://file.renrendoc.com/FileRoot1/2020-1/16/6897c8f7-e741-4ba8-9fa8-97e724b7d68d/6897c8f7-e741-4ba8-9fa8-97e724b7d68d4.gif)
全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
5.7 点阵字模生成原理与方法35.7.1 字模生成原理本设计中因为使用汉字的点阵显示,需要提取汉字字模,因此我们首先来了解汉字点阵字模的提取方法。汉字的点阵字模是从点阵字库文件中提取出来的。例如常用的1616点阵HZK16文件,1212点阵HZK12文件等等,这些文件包括了GB 2312字符集中的所有汉字。现在只要弄清汉字点阵在字库文件中的格式,就可以按照自己的意愿去显示汉字了。下面以HZK16文件为例,分析取得汉字点阵字模的方法。 HZK16文件是按照GB 2312-80标准,也就是通常所说的国标码或区位码的标准排列的。国标码分为 94 个区(Section),每个区 94 个位(Position),所以也称为区位码。其中0109 区为符号、数字区,1687 区为汉字区。而 1015 区、8894 区是空白区域。如何取得汉字的区位码呢?在计算机处理汉字和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-0xa0qh,wh为汉字的区号和位号,c1,c2为汉字的第一字节和第二字节。根据区号和位号可以得到汉字字模在文件中的位置:location=(94*(qh1)+(wh1)*一个点阵字模的字节数。那么一个点阵字模究竟占用多少字节数呢?我们来分析一下汉字字模的具体排列方式。例如下图中显示的“汉”字,使用1616点阵。字模中每一点使用一个二进制位(Bit)表示,如果是1,则说明此处有点,若是0,则说明没有。这样,一个1616点阵的汉字总共需要16*16/8=32个字节表示。字模的表示顺序为:先从左到右,再从上到下,也就是先画左上方的8个点,再是右上方的8个点,然后是第二行左边8个点,右边8个点,依此类推,画满1616个点。 对于其它点阵字库文件,则也是使用类似的方法进行显示。例如HZK12,但是HZK12文件的格式有些特别,如果你将它的字模当作12*12位计算的话,根本无法正常显示汉字。因为字库设计者为了使用的方便,字模每行的位数均补齐为8的整数倍,于是实际该字库的位长度是16*12,每个字模大小为24字节,虽然每行都多出了4位,但这4位都是0(不显示),并不影响显示效果。 还有UCDOS下的HZK24S(宋体)、HZK24K(楷体)或HZK24H(黑体)这些打印字库文件,每个字模占用24*24/8=72字节,不过这类大字模汉字库为了打印的方便,将字模都放倒了,所以在显示时要注意把横纵方向颠倒过来就可以了。这样我们就完全清楚了如何得到汉字的点阵字模,这样就可以在程序中随意的显示汉字了。5.7.2 字模提取程序如果在程序中使用的汉字数目不多,也可以不必总是在程序里带上几百K的字库文件,也许你的程序才只有几十K。这样可以事先将所需要显示的汉字字模提取出来,放在另一个文件里,按照自己的顺序读取文件就可以了。下面的程序说明了具体显示汉字的方法,以1616汉字为例,使用HZK16文件。 #include#include /* x,y为显示坐标,s为显示字符串,colour为颜色 */void hanzi16(int x,int y,char *s,int colour)FILE *fp;char buffer32; /* 32字节的字模缓冲区 */register i,j,k;unsigned char qh,wh;unsigned long location;if(fp=fopen(hzk16,rb)=NULL)printf(Cant open hzk16!);getch();exit(0);while(*s)qh=*s-0xa0;wh=*(s+1)-0xa0;location=(94*(qh-1)+(wh-1)*32L; /* 计算汉字字模在文件中的位置 */fseek(fp,location,SEEK_SET);fread(buffer,1,32,fp);for(i=0;i16;i+)for(j=0;j2;j+)for(k=0;k(7-k)&0x1)!=NULL)putpixel(x+8*j+k,y+i,colour);s+=2;x+=16; /* 汉字间距 */fclose(fp);main()int gd=DETECT,gm;initgraph(&gd,&gm,);hanzi16(246,200,贵州民族学院物电学院二零零三级电子二班杨智斌!,BROWN);getch();closegraph();在TC 2.0下运行上面程序,就在屏幕上打印出你想要显示的汉字,例如该程序运行后会在屏幕上显示:贵州民族学院物电学院二零零三级电子二班杨智斌!程序中每次将一个汉字的点阵字模存储于buffer32缓冲数组里面,因此我们可以编程从该缓冲数据组里面取出对应汉
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川旅游专业试题及答案
- 书籍设计专业面试题及答案
- 关节力线扁平髋改变-洞察及研究
- 2025至2030中国空调涨紧轮行业项目调研及市场前景预测评估报告
- 认识扇形的教学设计课件
- 消防安全检查培训文案课件
- 静脉营养液的输注护理
- 2025至2030中国航空灭火系统行业产业运行态势及投资规划深度研究报告
- 2025至2030医用级羟丙基纤维素行业项目调研及市场前景预测评估报告
- 2025至2030中国药品瓶盖和瓶盖行业产业运行态势及投资规划深度研究报告
- 燃气运营安全管理方案
- 2025-2026学年粤教粤科版(2024)小学科学二年级上册(全册)教学设计(附目录)
- 查冻扣业务知识公安机关等执法单位相关试题试卷
- 济南战役教学课件
- 小学生班干部竞选
- (高清版)DBJ∕T 13-318-2025 《建筑施工盘扣式钢管脚手架安全技术标准》
- 《机械基础(第二版)》中职全套教学课件
- 国网投标离线投标工具使用说明
- 部编人教版六年级道德与法治上册全册教学课件
- 监控中心值班人员绩效考核月度考核表
- 中国消费金融公司发展报告-中国银行业协会
评论
0/150
提交评论