全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
UCDOS曲线轮廓字库结构分析UCDOS 是国产的具有许多优异性能的汉字操作系统, 尤其是其丰富的PostScript 曲线轮廓字体给广大用户留下了深刻的印象。如何充分利用UCDOS 已有的曲线字库, 如制作漂亮的软件界面, 作为自己系统的曲线小字库或向其它类型的字库转换等, 都有必要首先了解UCDOS 曲线轮廓字库的结构。1、曲线轮廊字库的结构及地址计算UCDOS 中各种曲线轮廊字库都存放在UCDOS 的特定的目录中(如C:UCDOSFNT ) , 并用各自特殊的文件名加以区别, 如:ASCPS 英文字体曲线轮廓字库HZKPST 图形符号曲线轮廓字库HZKPSKTJ 简体楷体曲线轮廓字库HZKPSSTJ 简体宋体曲线轮廓字库HZKPSHTJ 简体黑体曲线轮廓字库HZKPSFSJ 简体仿宋曲线轮廓字库另外, 还提供了其他三十余种扩充的简繁体曲线轮廓字库供用户选择。每个曲线轮廓字库都两部分组成: 汉字索引区、字型数据区。汉字索引区由许多索引项组成。每个索引项由六个字节组成, 其中字型数据的偏移地址4 个字节, 字型数据的长度占2 个字节。由汉字的索引提供的字型数据偏移地址及字型数据的长度即可得到该汉字的字型数据。为了确定一个汉字在字库汉字索引区的偏移量, 必须通过汉字区位码或汉字机内码来获得。根据GB2312-80 的规定, 一般的汉字库都收集了7445 个汉字及非汉字的图形字符,其中汉字有6763 个, 非汉字的图形字符682 个。并且为了便于编码与管理, 将它们分为94个区, 每区分为94 个位。同时, 为了使汉字与英文相区别, 规定在计算机内, 汉字的编码用机内码来表示, 一个机内码占2 个字节。每个汉字或非汉字图形字符都唯一地对应一个区位码和机内码。汉字机内码与汉字区位码之间的转换公式如下:机内码= 区位码+ 0xA0A0由汉字机内码或区位码即可求得汉字在曲线轮廊字库索引区中的偏移量, 计算方法如下:OFFSET=(机内码高位字节-0XA0-16)94+(机内码低位字节-0XA0-1)6=(区码-16)94+(位码-1)6例如: 汉字“啊”的区位码1601 (第16 区第1 位) , 可求得“啊”字对应的机内码在曲线轮廓字库索引区中的偏移量如下:机内码= 区位码+0xA0A0=1601+0xA0A0=0x1001+0xA0A0=0xB0A1偏移量OFFSET=(0XB0-0XA0-16)94+(0XA1-0XA0-1)6或OFFSET =(16-16)94+(1-1)6汉字的符号库同汉字库是分开的,16区以前的图形符号偏移:offset=(机内码高位字节-OxaO -1)*94+(机内码低位字节-Oxa0-1)*6=(区码-1)94+(位码-1)6而英文字体的偏移量比较特殊,它共有lO种字体,每种字体有1O0个英文字符,可以这样确定偏移量(设字体号为N ,英文字符的ASCII码为CC):offset=(N*100-F(CC-32)*6在UCDOS 5.0 中从此偏移量连续读取4 个字节转换成长整型数, 即为字型数据地址(Address ) , 紧接着2 个字节转换成整型数便为字型数据的长度(Length )。在UCDOS 6.0 中从此偏移量地址连续读取4 个字节转换成长整型数后, 还需将此长整型数减去十六进制0x10000000 后才为字型数据地址, 紧接着2 个字节转换成整型数便为字型数据的长度(Length ),包括符号库。但英文字符不需要调整。2、字型数据的格式三次曲线字库的字形数据需要解释和重组。读取三次曲线字库的字形数据时每次只能读取四位,方法是当某一字节第一次被读取时, 读取低四位,当该字节再次被读取时, 读取高四位。当读取的数据不需要被当做坐标量时, 读取的四位数据就会被当做命令,并进行解释。如果当前命令需要坐标量, 坐标量分为绝对坐标值和坐标增量。绝对坐标值为一个字节, 为读取的两个四位数据的重组, 重组方法为先读取的四位数据作为高四位, 后读取的四位数据作为低四位。坐标增量为四位或六位的二进制数, 其中最高位为符号位。四位坐标增量为当前读取的四位数据。坐标增量为六位二进制数时同样是通过重组得到的, 方法是将第一次读取的四位数据作为六位数据的高四位, 第二次读取的四位数据的高两位作为六位数据的低两位, 得到第一个坐标增量,然后将第二次读取的四位数据的低两位作为六位数据的高两位, 第三次读取的四位数据作为六位数据的低四位, 得到第二个坐标增量。3、控制字的含义UCDOS 的控制字为4 位(半字节) , 共有16 种不同功能的控制字, 分别控制产生曲线轮廊字型的不同曲线段。具体含义如下:表1控制字的含义及功能控制字参数含义长度功能当前点000000X1,Y116位笔画起始点, 将当前点移至此点X1,Y1000111X18位从当前点画横线至X1点X1,CY001022Y18位从当前点画竖线至Y1点CX,Y1001133X1,Y116位从当前点画线至(X1,Y1)点X1,Y1010044X1,Y1,X2,Y232位以当前点、(X1,Y1)和(X2,Y2)为控制点画二次Bezier曲线X2,Y2010155X1,Y1,X2,Y2,X3,Y348位以当前点、(X1,Y1),(X2,Y2)和(X3,Y3)为控制点画三次Bezier曲线X3,Y3011066X1,Y1,X2,Y232位以(X1,Y1)为左上角,(X2,Y2)为右下点画矩形不变011177#X1,Y112位从当前点画线至(CX+#X1,Y1)点CX+#X1,Y1100088X1,#Y112位从当前点画线至(X1+CY+#Y1)点X1+CY+#Y1100199#X1,#Y18位从当前点画线至(CX+#X1,CY+#Y1)点CX+#X1,CY+#Y1101010A&X1,&Y112位从当前点画线至(CX+&X1,CY+&Y1)点CX+&X1,CY+&Y1101111B#X1,#Y1,#X2,#Y216位从当前点、(CX+#X1,CY+#Y1)和(CX+#X1+#X2,CY+#Y1+#Y2)为控制点画二次Bezier曲线CX+#X1+#X2,CY+#Y1+#Y2110012C&X1,&Y1,&X2,&Y224位从当前点、(CX+&X1,CY+&Y1)和(CX+&X1+&X2,CY+&Y1+&Y2)为控制点画二次Bezier曲线CX+&X1+&X2,CY+&Y1+&Y2110113D#X1,#Y1,#X2,#Y2,#X3,#Y324位从当前点、(CX+#X1,CY+#Y1),(CX+#X1+#X2,CY+#Y1+#Y2)和(CX+#X1+#X2+#X3,CY+#Y1+#Y2+#Y3)为控制点画三次Bezier曲线CX+#X1+#X2+#X3,CY+#Y1+#Y2+#Y3111014E&X1,&Y1,&X2,&Y2,&X3,&Y336位从当前点、(CX+ &X1, CY + &Y1) , (CX+ &X1+&X2, CY + &Y1+ &Y2) 和(CX + &X1+ &X2+&X3, CY + &Y1+ &Y2+ &Y3) 为控制点画三次Bezier 曲线CX+&X1+&X2+&X3,CY+&Y1+&Y2+&Y3111115FX1,Y116位仅读取两个绝对坐标, 不作其它操作不变说明: 参数X1, Y1, X2, Y2, X3, Y3 均表示8 位长度的坐标值, 且为正数, 表示范围为0 至255;参数# X1,# Y1,# X2,# Y2,# X3,# Y3 均表示长度相对当前点的增量, 最高位是符号位,0 表示正数,1 表示负数, 表示范围为-7 至+7;参数&X1, &Y1, &X2, &Y2, &X3, &Y3 均表示6 位长度相对当前点的增量, 最高位是符号位,0 表示正数,1 表示负数, 表示范围为-31 至+31;CX, CY 均表示当前点的坐标值4、三次Bezier 曲线算法实现在下面的三次Bezier 曲线算法中,m 为样本控制点个数; x, y 分别为已知样要点数据的x, y 坐标; n 为分段绘制时的拟合点个数。void bezier3 ( int m , float * x, float * y, int n)int i, j;float a0, b0, a1, b1, a2, b2, a3, b3, t, dt , t2, t3, x1, y1;movtoxy (&x0, &y0 ) ;for ( i=0; i m -3; i= i+3 )a0= x i;b0= y i;a1=- x i* 3+ x i+1 * 3;b1=- y i* 3+ y i+1 * 3; a2= x i* 3- x i+1 * 6+ x i+2 * 3;b2= y i* 3- y i+1 * 6+ y i+2 * 3;a3=- x i+ x i+1 * 3- x i+2 * 3+ x i+3;b3=- y i+ y
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年在线视频直播平台开发项目可行性研究报告及总结分析
- 2025年健康食品市场趋势与产品开发可行性研究报告及总结分析
- 2025年智慧能源管理系统建设可行性研究报告及总结分析
- 2025年数字化营销平台研发项目可行性研究报告及总结分析
- 2025年河北省职业院校(高职)智能电梯装配调试与检验技能大赛考试题库 含答案
- 2025年粮食产销合同
- 无人机驾驶员驾照考试题库审定版
- 2025年(高级)连锁经营管理师资格考试复习试题 含答案
- 2025年乡村振兴与生态农业项目可行性研究报告及总结分析
- 2025年低碳出行方案推广可行性研究报告及总结分析
- 2025年广东普法考试题目及答案
- 肾内科慢性肾衰竭血液透析护理干预培训要点
- 2025中小学教师高级职称专业水平能力题库及答案
- 预防医学科流感疫苗接种指南培训
- 2025年陕西有色金属科工贸服务有限公司招聘(24人)考试笔试参考题库附答案解析
- 新车托运协议书模板
- 旅行社会议协议合同
- 陕西有色校招笔试题及答案
- 提高献血服务质量课件
- 2025年遂宁辅警招聘考试真题带答案详解(完整版)
- 25秋国家开放大学《管理英语2》形考任务参考答案
评论
0/150
提交评论