前言
英文里的字体叫做Typeface
(印刷用)。我们也可以发现Android中也有一个类叫Typeface
。其实我一直对字体比较感兴趣,从字体的绘制到显示,有一种贯穿计算机底层到应用层的感觉。现在抽空整理一下字体相关的知识。
起源
参考 History and definition of computer fonts.
这是一篇14年2月的文章了,很有年代感了。总所周知,字体起到了一个传达信息的重要功能,所以在印刷和网页设计上也一定离不开字体的渲染。最开始的字体有PostScript和TrueType等等类型。但是从根本上来说,字体对于计算机来说到底是什么呢?这个问题我思考了很久。终究还是要去研究一下才会有个答案。
字体的电子形式成为字体,这个概念来源于字符集。字体形式通常有两种: TrueType 和 OpenType。
TrueType
在20世纪80年代,苹果的麦金塔电脑(Macintosh)就为人们提供了各种各样的字体比如Helvetica, Courier, Times等等。这些字体通常包含两个文件,一个包含了屏幕显示的预光栅化数据,另一个文件来集成输出设备的矢量化信息。这些字体的格式就是1984年Adobe开发的页面描述语言PostScript。
在1991年,Adobe的专利政策使得Apple去发展一种叫做TrueType
的字体格式并且将它发到市场。它和PostScript格式比较像都是由矢量组成的。但是相比于PostScript,TrueType格式(以.ttf结尾的文件)将上面提到的两个文件压缩成了一个文件。同时由于Microsoft在1991年也许可了这种格式的字体的使用并在Windows 3.1上开始使用它,所以这些字体在Mac和Windows上都是可用的。但是它们所要求的是不同的字体格式,所以要在Windows上安装一个Mac字体并不容易,反过来也一样。再加上TrueType字体和印刷产业的PostScript输出设备不是很协调,所以它一开始还是被认为比较low的。
OpenType
后来的故事大家想必也猜得到,MicroSoft和Adobe在1996年发布了一个新字体格式OpenType
(以.otf结尾的文件)。它的出现成功克服了TrueType字体文件的边界问题。OpenType是跨平台的,一个文件可以在Mac和Windows上使用。从那之后,两个系统的文件交换就没有任何问题了。
PostScript符号表只有256个符号,而基于UNICODE符号表OpenType fonts包含超过65000个文字。
Boundary
- x-height: 标准小写字母的高度
- ascender: 描述了超出x-height的小写字母的部分,例如d,f,t,l,h,k
- descender: 描述了低于x-height的小写字母的部分,例如g,j,p,q,y。根据拇指法则,descender最好小于ascender
- cap height: 定义了大写字母的垂直延伸
我们将ascender和descender的总和定义为字体垂直方向上最大高度。它通常被描述为type size
,但是typeface height
或者Hp height
是更合适的。