TrueType字体技术简介.docx_第1页
TrueType字体技术简介.docx_第2页
TrueType字体技术简介.docx_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

TrueType字体原理简介TrueType是由Apple公司和Microsoft公司联合提出的一种新型数学字形描述技术。它用数学函数描述字体轮廓外形,含有字形构造、颜色填充、数字描述函数、流程条件控制、栅格处理控制、附加提示控制等指令。TrueType采用几何学中二次Bezier曲线及直线来描述字体外形轮廓,特点是:TrueType既可作打印字体,又可用作屏幕显示;由于它用指令对字形进行描述,因此它与分辨率无关,输出时总是按打印机分辨率输出。因为二次函数导函数的连续性,所以无论放大或缩小,字符总是光滑的,不会有锯齿出现。但相对PostScript字体来说,其质量要差一些。特别是在文字太小时,就表现得不是很清楚,下面就TrueType技术作一点简单的介绍。一、字体的轮廓实现TrueType字体标准的主要思想是将所有的文字看成是一些相互独立的图像区域的组合,这些图像区域由一条封闭的曲线围成,而这条曲线由一些相互联系的点构成。由此,要记录一个文字, 只需记录这个文字的图像区域, 进而只需记录曲线, 最后只需记录构成这些曲线的点的相对坐标就可完成对文字的记录和处理。在一个TrueType类型的字体中,文字图像的形状是由它们的外围线来描述的。这些外围线形成了一系列的图像域。一个简单的文字可能只有一个图像域, 而大部分的文字可能包含两个甚至更多的图像域。而一些控制字符因为不可见, 从而没有图像域。例如,字符7由一条闭合曲线组成,所以它只包含一个图像域;而字符i由两条闭合曲线组成,所以它包含两个图像域,而字符B则由三条闭合曲线组成,所以它包含三个图像域。在TrueType字体文件中,每个字符的图像域的轮廓线由直线和曲线组成,每一条曲线可由一系列的二次Bezier曲线组成。字形的轮廓是由一串有序控制点组成,控制点有在线上和不在线上两种属性。这些控制点通过二次Bezier曲线来决定实际的轮廓曲线,图1(a)是最简单的二次Bezier曲线的模型。其中,P0、P2点是实际轮廓曲线必须通过的点,P1点为不在线控制点。实际轮廓曲线上的点P的坐标P(x(u),y(u)由如下公式决定:x(u)=x0+2(x1-x0)u+(x2-2x1+x0)u2y(u)=y0+2(y1-y0)u+(y2-2y1+y0)u2其中,P0(x0, y0)、P1(x1, y1)、P2(x2, y2)分别是P0、P1、 P2 点的坐标;u为参数,取值范围为0u1。图1图2通常情况下,控制点不止一个,对多个控制点的情况,由于TrueType仍然使用二次Bezier曲线,其处理方法以图1(b)为例说明如下:取控制点P1, P2的中点P12作为一个控制点,则P0 P1 P12三点构成了如图1(a)所示的情形,仍用上述的处理方法就可以得到一段实际轮廓曲线。接下来,又将P12作为P0 P2将作为P1,按照以上原则处理下去,最后得到了整条轮廓曲线。TrueType的字形就是由若干个封闭的轮廓曲线构成的。图2中,0和1点是在线控制点,2点为不在线控制点,TrueType对字形轮廓上的控制点都给出一个编号,编号按照顺时针的方向进行排列。在TrueType类型的字体中,曲线的记录是通过记录这些点的坐标来实现的,这必然就涉及到坐标系的建立和确定。在数字化一个字体的时候,一个关键性的决定就是坐标系的选择与确定。这样,构成闭合曲线的所有的点就可以通过该坐标系被描述出来,并且成为一个位置确定的点。在TrueType字体中,坐标系是一个二维平面坐标系。X坐标表示的是点的水平位置,Y坐标表示的是点的垂直位置,坐标系原点为(0, 0)。需要注意的是该坐标系不是一个无限平面,每一个点的坐标范围必须在-16384至16383之间。在不同的系统分辨率下,这个范围可能会更小。每一种文字的坐标系位置的选择也是不确定的,这是由设计人员自己决定的。由于不同的输出设备有不同的分辨率,所以,在不同的分辨率下如何保持各点间的相对位置不变也是需要解决的一个问题。TrueType字体通过点坐标和象素之间的相互转换,保证了在不同输出设备上不出现变形等问题,使得TrueType字形显示可以真正做到“所见即所得”。二、字体的填充Microsoft和Apple公司未公开TrueType字形的填充技术,而常用的填充技术有两种方法:(1)绕数填充法:Windows提供采用绕数填充法的多边形充填函数。但用于直接补偿 Bezier曲线的矢量字库的实际算法时,达不到要求的输出质量,特别是输出大于零号字符时,绕数填充法将无法满足输出质量。(2)递归法填充:递归法的方法是,填充时从填充点出发,向四周扩散,直到碰到边界为止。具体地说,字符的边界值是不同的。先得到填充点的值,然后依次比较填充点的上、下、左、右四点的值,相同值则填充一点,否则就是边界,再从刚才新填充点出发,重复上述操作,直到没有新的填充点为止。这种方法可能会出现一些问题,例如:对于一个不算大的区域图形往往只填充了一部分就停止,正确填充与填充点的位置有关,递归法调用次数太多导致堆栈溢出等等。当然还有一些其它填充方法,这里只作一个简答的介绍,不深入的分析各种算法。TrueType字体中还有一些其它重要的问题,但是大致原理就是上面的论述,实际使用的过程中也可能会有出入,更详细的内容可以参

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论