网站大量收购独家精品文档,联系QQ:2885784924

一种提升小曲线轮廓字体显示品质的机理.docx

一种提升小曲线轮廓字体显示品质的机理.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一种提升小曲线轮廓字体显示品质的机理

一种提升小曲线轮廓字体显示品质的机理摘 要:本文提出了一种用于手持显示器设备中,提升显示小曲线轮廓字体的还原质量的算法。本算法由三个步骤组成,首先根据字体曲线的曲率动态离散曲线,然后利用小字体在低像素的特点,根据斜率和分辨率的大小进行去冗余操作,最后对字体边缘进行微调。关键词: 印刷领域;曲线轮廓字体;字形还原算法;Bezier曲线;控制点;低分辨率。 0引言汉字字形的描述经历了从笔画式汉字、点阵式汉字到曲线轮廓汉字的发展过程,目前已进入研究和应用高精度曲线轮廓汉字的阶段。而在新兴的手持设备上,如手机、PDA、手持电子书等,由于其显示的分辨率低、显示速度慢、存储容量小等特点,主要使用的还是点阵字,远落后于PC机和印刷领域。然而,用户对手持设备显示效果的要求越来越高,不仅要求字形可以随意放大和缩小,并且要求可以显示不同风格的字体,面对这些需求,点阵字显然无法完全满足这些需求。如果使用点阵字,每种大小字形都要保存,致使对手持设备的存储容量要求大大提高。我们知道当今世界上的语言种类数量繁多,其中最为复杂的就是汉字,国家标准的GB2312中有6367个汉字,GBK中有20902个汉字,在Unicode CJK Ext. B中更有多达42711个汉字,字体文件非常大,比如收录GBK标准的TrueType字体文件一般要8~9M,而收录Unicode CJK Ext. B的TrueType字库一般要20M以上。另外,要解析这么大的一个字体文件,系统的运行速度也受到较大的影响。曲线轮廓汉字采用曲线和直线段描述字形的轮廓,还原时,先将字形轮廓按要求作缩放变换,再对变换后的轮廓作扫描变换,形成汉字的点阵图像,这一过程从原理上实现了字形的无级缩放。但是由于计算机图像的数字化特点,还原出的曲线轮廓汉字图像最终都会以离散的整数象素来显示。在变换形成离散的点阵表示时,必须经过随机性的舍取,从而导致还原出的字形质量有不同程度的破坏。例如会使还原出的汉字出现笔画宽度不一致,笔锋失去规则,甚至笔画断开、丢失等严重损坏字形质量的失真现象。为了解决这一问题,字体制造商在字体文件中加入了Hint指令用来在字体还原过程中对字形进行网格对齐的调整。另外,由于TrueType的Hinting有专利,Freetype2[1]提供了AutoHint技术,这种技术用来对字形进行自动的网格对齐,但是反而在中文字体显示上容易造成反效果,比如会使字体的某些特征丢失,字体边缘不齐等等。本文提出的优化算法首先根据曲线的曲率动态离散曲线,然后设计了去冗余的算法,根据斜率和显示设备的分辨率去除冗余点,解决了上述的失真问题,并进一步对字形边缘进行微调,使字形笔画更加光滑美观。通过实验结果表明,在低分辨率下,字体还原显示效果明显提升,并且由于控制点的大量减少,存储需求大大降低,显示速度显著提高,较好于其它任何优化算法。1提升低分辨率下的小曲线轮廓字体显示品质的算法思想:一般的曲线字体都是由点和线组成的,而点,又分为控制点和线上点,线分为直线和曲线,一般是二阶或三阶的Bezier曲线。由于在计算机中显示曲线的运算量比较大,速度比较慢,所以大多数情况下我们都采用将曲线离散成不同的直线来逼近曲线。但是由于一个文字尤其是汉字比较复杂,本身就有80-300个控制点,如华文仿宋体的“新”字就有140个控制点:图1 “新”的控制点如果将曲线离散之后可能会产生上千个控制点,而在分辨率较低的情况下就会产生冗余,比如会有两个或多个控制点对应显示设备上的同一个像素点,并且由于控制点比较多,会导致边缘不齐的现象,使字体显得比较难看。本算法在对曲线动态离散的基础上,主要针对离散的过程避免和去除冗余的控制点来提升字体的现实品质。算法主要分为三个步骤,首先通过使用Cas-teljau算法对曲线进行动态离散,然后对产生的控制点进行去冗余,最后对字的笔画进行微调。1.1 去冗余曲线离散之后得到的是一小段一小段的直线,去冗余的步骤是要精简控制点数量,使控制点数量尽量少,且误差控制在合理的范围内。我们的算法是当两条相邻的直线如果斜率相差小于误差精度,我们就认为这两条直线趋近一条直线,则将这两天直线合并为一条直线。设字形轮廓的一个连通区域为数组,为离散之后的控制点的总数,数组元素为离散之后的控制点坐标;为去冗余后的控制点的集合,其中 。去冗余的算法描述如下:(1) 将初始点加入到中(2) 计算到的欧氏距离,为当前点的序号;(3) 判断是否小于精度值,如果小于则跳到(5);(4) 将加入到数组中;(5) 选取下一个,重复(2)(3)(4)(5)直至n = m时结束。误差精度的选取,根据曲率设定几个固定的值。即当在曲率较大的时候即弯曲较大的时候,需要最大限度地保存字体的特征,所以可将的值设定较小,当曲率较小时,字体特征不是很明显,所以我们

文档评论(0)

ligennv1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档