字体,很简单;字体,却又很难轻易看懂;字体,不会让你简单就能明白……在我们的生活中与现实中,很多事情常常都是互补的。在生活会有很多常见的一些字体。这篇文章就将为你全面剖析 TTF 字体技术和矢量字库的技术原理及实现。(推荐设计师朋友仔细看看)
预警:本文纯干货,文字很多
发布于 2020-05-18 1,945 次阅读
字体,很简单;字体,却又很难轻易看懂;字体,不会让你简单就能明白……在我们的生活中与现实中,很多事情常常都是互补的。在生活会有很多常见的一些字体。这篇文章就将为你全面剖析 TTF 字体技术和矢量字库的技术原理及实现。(推荐设计师朋友仔细看看)
预警:本文纯干货,文字很多
TrueType是 苹果 和 微软 在1991年时合作推出的一种新型数学字形描述技术。它用数学函数描述字体轮廓外形,含有字形构造、颜色填充、数字描述函数、流程条件控制、栅格处理控制、附加提示控制等指令。
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)u2 y(u)=y0+2(y1-y0)u+(y2-2y1+y0)u2
其中,P0(x0, y0)、P1(x1, y1)、P2(x2, y2)分别是P0、P1、 P2点的坐标;u为参数,取值范围为0≤u≤1。
通常情况下,控制点不止一个,对多个控制点的情况,由于TrueType仍然
使用二次Bezier曲线,其处理方法以图1(b)为例说明如下:取控制点P1, P2的中点P12作为一个控制点,则P0P1P12三点构成了如图1(a)所示的情形,仍用上述的处理方法就可以得到一段实际轮廓曲线。接下来,又将P12作为P0P2将作为P1,按照以上原则处理下去,最后得到了整条轮廓曲线。TrueType的设计字形就是由若干个封闭的轮廓曲线构成的。图2中,0和1点是在线控制点,2点为不在线控制点,TrueType对字形轮廓上的控制点都给出一个编号,编号按照顺时针的方向进行排列。
在TrueType类型的字体中,曲线的记录是通过记录这些点的坐标来实现的,这必然就涉及到坐标系的建立和确定。
在数字化一个字体的时候,一个关键性的决定就是坐标系的选择与确定。这样,构成闭合曲线的所有的点就可以通过该坐标系被描述出来,并且成为一个位置确定的点。在TrueType字体中,坐标系是一个二维平面坐标系。X坐标表示的是点的水平位置,Y坐标表示的是点的垂直位置,坐标系原点为(0,0)。需要注意的是该坐标系不是一个无限平面,每一个点的坐标范围必须在-16384至16383之间。在不同的系统分辨率下,这个范围可能会更小。每一种文字的坐标系位置的选择也是不确定的,这是由设计人员自己决定的。由于不同的输出设备有不同的分辨率,所以,在不同的分辨率下如何保持各点间的相对位置不变也是需要解决的一个问题。TrueType字体通过点坐标和象素之间的相互转换,保证了在不同输出设备上不出现变形等问题,使得TrueType设计的字形显示可以真正做到“所见即所得”。
微软和苹果未公开TrueType字形的填充技术,而常用的填充技术有两种方法:
(1)绕数填充法:Windows提供采用绕数填充法的多边形充填函数。但用于直接补偿 Bezier曲线的矢量字库的实际算法时,达不到要求的输出质量,特别是输出大于零号字符时,绕数填充法将无法满足输出质量。
(2)递归法填充:递归法的方法是,填充时从填充点出发,向四周扩散,直到碰到边界为止。具体地说,字符的边界值是不同的。先得到填充点的值,然后依次比较填充点的上、下、左、右四点的值,相同值则填充一点,否则就是边界,再从刚才新填充点出发,重复上述操作,直到没有新的填充点为止。
这种方法可能会出现一些问题,例如:对于一个不算大的区域图形往往只填充了一部分就停止,正确填充与填充点的位置有关,递归法调用次数太多导致堆栈溢出等等。
当然还有一些其它填充方法,这里只作一个简答的介绍,不深入的分析各种算法。
Type1全称PostScript? Type1,是1985年由设计界的扛把子Adobe提出的一套矢量字体标准,由于这个标准是基于PostScript Description Language(PDL),而PDL又是高端打印机首选的打印描述语言,所以Type1迅速流行起来。但是Type1是非开放字体,Adobe对使用Type1的公司征收高额的使用费。
Typ1使用三次贝塞尔曲线来描述字形,TrueType则使用二次贝塞尔曲线来描述字形。所以Type1的字体比TrueType字体更加精确美观。一个误解是,Type1字体比TrueType字体占用空间多。
这是因为同样描述一个圆形,二次贝塞尔曲线只需要8个关键点和7段二次曲线;而三次贝塞尔曲线则需要12个关键点和11段三次曲线。然而实际情况是一般来说 Type1比TrueType要小10%左右。这是因为对于稍微复杂的字形,为了保持平滑,TrueType必须使用更多的关键点。
由于现代大部分打印机都是使用PDL作为打印描述语言,所以True1字体打印的时候不会产生形变,速度快;而TrueType则需要翻译成PDL,由于曲线方程的变化,还会产生一定的形变,不如Type1美观。
这么一对比下来,Type1应该比TrueType更具有优势?为什么如今的计算机上TrueType反而比Type1使用更广泛呢?
OpenType 是Type1与TrueType争斗的最终产物。1995年,Adobe公司和Microsoft公司开始联手开发一种兼容Type1和TrueType,并且真正支持Unicode的字体,后来在发布的时候,正式命名为OpenType。OpenType可以嵌入Type1和TrueType,这样就兼有了二者的特点,无论是在屏幕上察看还是打印,质量都非常优秀。可以说OpenType是一个三赢的结局,无论是Adobe,Microsoft还是最终用户,都从OpenType中得到了好处。Windows家族从Windows 2000开始,正式支持OpenType。打开系统的字体目录(一般是C:\\Windows\\Fonts\\或C:\\Winnt\\Fonts),可以看到:一个红色A的图标的是点阵字体,两个重叠的T的图标是TrueType字体,一个O的图标就是OpenType字体。
貌似是Type1的忠实拥趸,我看到的Agfa字体都是Type1的,不过真的是非常漂亮
说起矢量字体,不得不说一下多边形填充原理。本来是想将多边形填充作为单独的一节内容,可惜说得太细我累大家也累。
WOFF是Web Open Font Format几个词的首字母简写。
这是一种专门为了Web而设计的字体格式标准,这种字体格式专门用于网上,由Mozilla联合其它几大组织共同开发。
WOFF字体通常比其它字体加载的要快些,因为使用了OpenType (OTF)和TrueType (TTF)字体里的存储结构和压缩算法。这种字体格式还可以加入元信息和授权信息。这种字体格式有君临天下的趋势,因为所有的现代浏览器都开始支持这种字体格式。【支持的浏览器:IE9+,Firefox3.5+,Chrome6+,Safari3.6+,Opera11.1+】
WOFF2是WOFF的下一代,WOFF2格式比原来的WOFF提供了30%的平均压缩增益。因为它还只是一个推荐的升级版本,所以没有WOFF的广泛支持。
Scalable Vector Graphics (Font). SVG是一种用矢量图格式改进的字体格式,体积上比矢量图更小,适合在手机设备上使用。【支持的浏览器:Chrome4+,Safari3.1+,Opera10.0+,iOS Mobile Safari3.2+】
Embedded Open Type。这是微软创造的字体格式。
允许OpenType字体用@font-face嵌入到网页并下载至浏览器渲染,存储在临时安装文件夹下。
这种格式只在IE6-IE8里使用。【支持的浏览器:IE4+】
在前端设计作业中,二十年前只有页面中铺满文字就算上线产品,现如今,不加点俏皮的“图标”会让页面显得很 Low 很 Low。
Iconfont 是阿里提供了一个图标库,你可以想象成是一个售卖图标的超市,挑选你需要的图标放入购物车,然后 Iconfont 会为你打包你购物车里的图标,自动生成一种新的字体,你可以选择下载到本地,在你的项目中引入这种字体,这样即便没有网络的情况也可以使用图标。
这种模式的一大优点就是只挑选出需要的图标,不会像其他图标库那样直接下载一整个图标库的内容,尽管你可能只会使用到其中一到两个图标。要知道,有的项目打包上线对大小是有严格要求的,比如微信小程序打包之后的代码大小就要控制在 1 M以下。
关于如何使用 Iconfont,网络已经有人赘述的很详细了,就不在这篇文章讲述了。具体步骤参阅: iconfont字体图标的使用方法。
Font Awesome和阿里的Iconfont有点类似 是为 Twitter Bootstrap 设计的图标字体。通过Web Font的方式来显示一些图标,好处是图标可以被任意缩放、改变颜色,你需要做的只是像修改文字样式那样修改图标样式。
微软的TTF为了保证小字号下的清晰,可谓是用尽了方法。首先,在庞大的字库,内置了数个字号的点阵字,接着才是矢量字。比如宋体,内置了12、14、16、18等几个点阵字库,在这些之外才使用矢量字库来渲染。这也是为什么一个TTF文件要几兆甚至几十兆的容量,不过内嵌的点阵字越多,在不同字号下实现的效果自然越好。别小看了这些点阵字,每一个都是平面设计师在工具上画的,并非由软件生成。唉,可怜的设计师啊~~~~~~
不过,有个特例。比如Arial字体,内部全是矢量字,但各种尺寸下都是这么清晰。为什么呢?
微软在字库中加入了解释程序,interpreter,一种专门用于字库渲染的脚本命令。在不同的字号下,都有相应的语句,将矢量字得以最清晰化。这是一种复杂的技术,微软也觉得不能广泛使用,所以只有在部分的英文字库中才有,而且该脚本对应每个字都有一段代码,容量非常大,用在汉字上几乎是不可能,除非是整个文字不多于100个才能使用。
interpreter就是这么神奇,他也是目前最好的技术,能够将矢量字渲染的和点阵字一样的清晰。他将某些边线的距离拉开,而将另一部分收缩,总之是按照人的想法来做的,这也是编好的程序。
在1998年的时候,微软声称发明 设计 出了一种新的技术,能在LCD上将矢量字体的清晰度提高到300%。而后,出现了名为Microsoft Reader的软件,我还用过几个版本。Adobe也不甘示弱,随即在Acrobat 4中对CoolType进行了支持,而Linux的FreeType库也开始支持次像素平滑。据我多年的研究观察,Acrobat做的最好,最灵活,而微软的缺少适当的调节工具,Linux的次像素平滑简直就是垃圾,照虎画猫。
ClearType使用彩色来描边,显示对比度越是强的文字,比如白底黑字或者黑底白字,都是最清晰的。其实,理论上ClearType能够将显示精度提到到300%,但实际上只能达到200%左右。
ClearType 技术的本意,就是利用并排的三个彩色子像素来勾勒字体的轮廓。所以在小字号下,ClearType 引擎渲染出来的文字其纵向轮廓是彩色的。相比传统的纯灰度抗锯齿,ClearType 拥有更高的精度。联系到这是一个六年前的问题,那时候 Windows 7 才刚刚在国内流行起来。想必大家更习惯的是中易宋体非黑即白的点阵吧,有这样的疑问也不奇怪。
基于这个技术,我还给大家还准备了一个好玩的txt格式的小游戏,放在文章末尾有兴趣的朋友可以下载来玩一玩
一般来说,液晶显示器的点阵分布都非常均匀,每个点都是由红绿蓝3色排列而成。我们通常要显示一个白色,需要将红绿蓝都点亮,而黑色是都不显示。ClearType将点的概念再次扩展,把邻近的两个点3色混淆,借前一个点的颜色而忽略后一点的某种颜色。这样,就可以把传统的一个点的最小单位扩展到1/3个点的单位。
在使用ClearType技术后,原来的字体渲染将更加清晰,当然,只限于LCD显示器,CRT会更加模糊。ClearType还有一个关键的技术,就是Linux的次像素平滑没有学去的地方,一定要考虑到红绿蓝的颜色亮度平衡。一般来说,绿色的亮度最高,而蓝色的最低,所以我们要在显示绿色的时候加点红色和蓝色来调低亮度,而显示蓝色的时候要加入绿色和红色来增加亮度。这种做法也可以使边界的彩边不是那么明显,看起来更像是黑色的字。不过,这种做法使得原本可以提高显示精细程度到300%的技术,降低了许多,不过还是要高于200%。
ClearType 不支持所有字体。只有进行了微调(Hinting)的字体,才能使用 ClearType 技术。而因为支持 ClearType 的字体,需要包含微调信息,字体的容量普遍比较大。另外,因为中文字库非常庞大,对所有字体进行微调是一项及其艰巨的任务,而且 ClearType 很快被其他的字体渲染技术所超越,字体的制作厂商们也不愿意开发支持 ClearType 的字体,导致 ClearType 适用的中文字体少之又少。这些原因限制了 ClearType 的发展。现在在 Mac 系统和 Linux 系统上使用的字体渲染技术的适用范围和效果都优于 ClearType 字体。在 Windows 系统上,也可以是使用源于 GDI++ 技术(比如 MacType)来获得对所有字体有效的字体渲染效果。
在CSS3 font-face,有多个字体类型包括等ttf,eot,woff,svg和cff。我们为什么要使用所有这些类型?如果它们专用于不同的浏览器,为什么它们的数量大于主要Web浏览器的数量?
仅使用WOFF2,或者如果需要传统支持,请使用WOFF。不要使用任何其他格式
(svg和eot是死的格式,ttf并otf有完整的系统字体,并且不应该被用于Web的目的)
简而言之,font-face很老,但是直到最近,IE才支持它。
eot 早于IE9的Internet Explorer是必需的-他们发明了规范,但eot是专有解决方案。
ttf并且otf是正常的旧字体,因此有些人感到恼火,这意味着任何人都可以免费下载昂贵的许可字体。
随着时间的流逝,SVG 1.1增加了“字体”一章,该章解释了如何仅使用SVG标记为字体建模,人们开始使用它。花费了更多时间,事实证明,与仅使用常规字体格式相比,它们绝对可怕,并且SVG 2明智地再次删除了整个章节。
然后,woff由具有相当多领域知识的人设计发明,这使得可以以丢弃对系统安装至关重要但对网络无关的位(使人们担心盗版感到高兴)的方式托管字体,并且允许进行内部压缩以更好地满足Web的需求(使用户和主机感到满意)。这成为首选格式。
2019 edit几年后,woff2被起草并被接受,这改善了压缩效果,导致文件甚至更小,并且能够“部分地”加载单个字体,从而可以将支持20个脚本的字体存储为“块”而是在磁盘上显示,浏览器可以根据需要自动加载字体“部分”,而无需预先传输整个字体,从而进一步改善了排版体验。
如果您不想支持IE 8或者更低版本,iOS 4或更低版本以及android 4.3或更早版本,则可以使用WOFF(对于支持该功能的最新浏览器,可以使用WOFF2(压缩程度更高的WOFF2)。)
这里也给大家提供一个在线字体转换的网站,方便你将各种喜欢的字体设计应用到你的网站或者电脑之中https://www.fontke.com/tool/convfont
这是我之前写的一篇文章,需要免费字体的朋友们都可以去下载。https://520526.xyz/971/
Comments | 13 条评论
来了来了,热气腾腾的评论
干货真多
@_Wr_ 热腾腾的评论
推荐icomoon.io,设计完的svg放上去字体文件就出来了
@2broear 其实cdr就可以直接制作字体
@栖枝perch cdr我都打不开了..
只能靠ai过日子
谢谢科普

谢谢大佬分享
Alacakaranlik Safak Vakti izle, Alacakaranlik Safak Vakti full izle, Alacakaranlik Safak Vakti t�rk�e dublaj izle, Alacakaranlik Safak Vakti hd izle, The Twilight Saga: Breaking Dawn – Part 1 izle, Sonunda iki asik bela ve edward evlenmek’dedir. Edward ile Jacop arasinda bir se�im bir se�im yapmak zorunda kalan bela tercihini tutkuyla asik oldugu edward’dan yana kullanmaktadir. Film Bela ve Edward’in �evresinde d�nerken esrarengiz olaylar olur ikili tatildeyken �ocuklarinin olacaginin farkina varir bu olay akillara sigmayacak bir sey vampir adam ve insan kani tasiyan kisin �ocuklari olmasi bu konuyu aile ile konusmak isteyen ikili bakalim ne diyecekler nasil bir durum ortaya �ikacaktir. Ginelle Wyn Craddock
Alacakaranlik Safak Vakti izle, Alacakaranlik Safak Vakti full izle, Alacakaranlik Safak Vakti t�rk�e dublaj izle, Alacakaranlik Safak Vakti hd izle, The Twilight Saga: Breaking Dawn – Part 1 izle, Sonunda iki asik bela ve edward evlenmek’dedir. Edward ile Jacop arasinda bir se�im bir se�im yapmak zorunda kalan bela tercihini tutkuyla asik oldugu edward’dan yana kullanmaktadir. Film Bela ve Edward’in �evresinde d�nerken esrarengiz olaylar olur ikili tatildeyken �ocuklarinin olacaginin farkina varir bu olay akillara sigmayacak bir sey vampir adam ve insan kani tasiyan kisin �ocuklari olmasi bu konuyu aile ile konusmak isteyen ikili bakalim ne diyecekler nasil bir durum ortaya �ikacaktir. Odele Salim Crotty
Alacakaranlik Safak Vakti izle, Alacakaranlik Safak Vakti full izle, Alacakaranlik Safak Vakti t�rk�e dublaj izle, Alacakaranlik Safak Vakti hd izle, The Twilight Saga: Breaking Dawn – Part 1 izle, Sonunda iki asik bela ve edward evlenmek’dedir. Edward ile Jacop arasinda bir se�im bir se�im yapmak zorunda kalan bela tercihini tutkuyla asik oldugu edward’dan yana kullanmaktadir. Film Bela ve Edward’in �evresinde d�nerken esrarengiz olaylar olur ikili tatildeyken �ocuklarinin olacaginin farkina varir bu olay akillara sigmayacak bir sey vampir adam ve insan kani tasiyan kisin �ocuklari olmasi bu konuyu aile ile konusmak isteyen ikili bakalim ne diyecekler nasil bir durum ortaya �ikacaktir. Laureen Jerrome Vasiliki
Alacakaranlik Safak Vakti izle, Alacakaranlik Safak Vakti full izle, Alacakaranlik Safak Vakti t�rk�e dublaj izle, Alacakaranlik Safak Vakti hd izle, The Twilight Saga: Breaking Dawn – Part 1 izle, Sonunda iki asik bela ve edward evlenmek’dedir. Edward ile Jacop arasinda bir se�im bir se�im yapmak zorunda kalan bela tercihini tutkuyla asik oldugu edward’dan yana kullanmaktadir. Film Bela ve Edward’in �evresinde d�nerken esrarengiz olaylar olur ikili tatildeyken �ocuklarinin olacaginin farkina varir bu olay akillara sigmayacak bir sey vampir adam ve insan kani tasiyan kisin �ocuklari olmasi bu konuyu aile ile konusmak isteyen ikili bakalim ne diyecekler nasil bir durum ortaya �ikacaktir. Shaun Arne Sitnik
tadalafil online 20: https://tadalafilonline20.com/ what is tadalafil