浅谈计算机字体
字体虽小,但却无处不在。每天我们打开电脑,掏出手机,我们都能看到形态各异的字体。而电脑及手机等设备的屏幕质材不一,要如何让字体在各种屏幕上清晰美观地显示,却又是一门不可小觑的大学问。
我们知道,显示器拥有很多的发光点(起码看上去是发光点),一个个明暗、色彩不同的发光点组成了能显示各种内容的屏幕。既然屏幕上的点可以组成各种图案,那么当然也可以用这些点来排列出文字,显示各种字体。这听上去好像很简单的样子,最初人们也是这样子认为的,于是就简单地使用点阵来显示电脑字体。
点阵字体
点阵字体其本质是图片,用点的虚实来描绘出字符轮廓。人们用一张图片来表示一个字符,并为每个字符提供了正常、粗体、斜体、粗斜体四种变体。于是人们就为各个字母制作了各种各样的图片,简单地实现了字体的显示。这的确很简单,不就把字符画到图片上去嘛,请个临时工,不到几天就能把英文字母通通搞完,简直就是人力资源和高科技的完美协作。
人力资源总是有的
但是很快人们就发现这十分不靠谱了。点阵字体是一张张图片,这就意味着这些图片是有大小尺寸的。当人们试图放大点阵字体的时候,字符纷纷打上了马赛克。这就是点阵字体的一个问题——点阵字体很难缩放,每个字符都只能清晰显示特定字号,放大会打码,缩小会断裂。面对满屏幕的马赛克和凌乱的笔画,大家纷纷表示不能接受。
马赛克阻碍着人类文明的进步
数学拯救了世界,矢量字体诞生了。人们用数学方程来描述笔画,把字符分隔成若干关键点,并用光滑的曲线予以连接。这些曲线可以用有限个参数来唯一确定,通过计算可以无损地放大缩小每一个字符。Adobe(嗯,就是卖Photoshop那个)在1985年提出了一套矢量字体标准PostScript并广泛流行,包含了PostScript Type 1和Type3。Type 1复杂且精细,可向字体内增添自己的隐含信息,面向那些打算在自己的字体增添隐含信息的厂商高价售卖。Type 3则无法增添隐含信息,也包括了其他一些特性,Adobe将其公开出版发行。
设计界的标杆Adobe
由于Type 3是公开发行的,其他厂商迅速搞出了可以创造Type 3字体的工具,人人都能创作字体,Adobe霎时老泪纵横。也许是受了刺激,很快Adobe又创造了另一个版本的PostScript,渲染效率更高,可以在当时十分缓慢的个人电脑上运行。这个版本的PostScript被命名为Display PostScript。
时间来到了20世纪90年代,当时个人计算机市场主要有两家大家都比较熟悉的公司,它们就是苹果和微软。看着个人计算机市场的日益红火,Adobe当然不想放过商机。Adobe向苹果和微软两家公司卖力兜售Display Postscript,只可惜对方就是不买账——字体是操作系统的重要部分,这个部分绝然不可能让第三方来控制的。苹果和微软商量了一下,决定进行合作来开发类似Display PostScript的东西。
设计对白:“我们一起来搞Adobe?”“甚善!”
在拒绝Adobe Display PostScript的兜售以后,鉴于此前也有着一些开发矢量字体的研究,苹果决定制作一个全新的格式,代号为“Bass”。当开发完成后,“TrueType”这种至今仍在广泛使用的字体格式就诞生了。TrueType格式十分常见,如果看到后缀名是ttf的字体文件,那么这就是 TrueType格式的字体了。
被广泛使用的TrueType
但是TrueType在当时并不叫座,因为大部分厂商已经重金购买了Adobe的Type 1字体,不愿意更换。于是苹果向合作伙伴微软进行了求助,共同对抗Adobe。苹果给予微软TrueType认证,微软把自己开发的TrueImage打印技术授予了苹果。这两套东西一个用来显示一个用来影印,合起来就有了PostScript的功能。
但是,很快苹果就发现自己被微软坑了。微软开发的TrueImage打印技术错漏百出,连微软自己都不用。苹果顿时泪流满面,TrueImage事实上也并未在苹果和微软的任何产品中出现。不仅如此,在1996年,微软还出乎意料地和Adobe合作开发新一代字体格式,合并了PostScript Type 1和TrueType技术,推出了OpenType。
微软的TrueImage打印技术不靠谱
OpenType支持Unicode,能支持任何语言文本,体积小,开发难度也比较小,并且具有高级字形特征,效果十分好。由于特性先进,大受业界欢迎。Adobe在2002年末已经将其所有字体库都改用了OpenType,连苹果也在Mac OS X 10.4 Tiger系统开始支持OpenType功能,微软则在Windows 2000以后广泛内置OpenType字体支持。OpenType也在许多软件中得到了良好兼容,比如说PDF可以无缝内嵌OpenType字体,OpenType的确是业界未来的趋势。
业界未来OpenType
实际上,苹果和微软都在系统中都广泛支持OpenType和TrueType,但我们仍可以发现苹果电脑Mac和微软Windows PC在显示字体方面有一些微妙的不同。排除字体本身的原因,这是由于Mac和Windows对字体的渲染方面有一些理念差异。
矢量字体解决了字体本身的精度问题,但是把高精度的字体显示到屏幕上,倒不见得一定会高精度。把字体打印输出,纸张和字体黑白分明,笔画轮廓清晰,衬线体的棱角细节纤毫毕现,这得益于300dpi(dots per inch,每英寸点数)的印刷精度。而显示屏则很少达到这个精度,所以屏幕精度能达到300ppi(pixels per inch,每英寸像素)以上的Retina屏幕能在业界中引发一阵分辨率狂潮。
乔布斯在介绍Retina屏幕
在显示字体的时候,在笔画周围增加一些辅助显示的像素,可以减少锯齿、笔画断裂等由于显示屏精度不够而产生的不良效果,这种技术被称为“次像素渲染”。目前苹果和微软都采用了次像素渲染技术,但对于如何在精度逊于印刷品的显示屏上实现较好的字体显示效果,苹果和微软有着不同的理念。或者说,对于什么才叫 “好的显示效果”,苹果和微软有着不同的理解。
美观和实用的交锋
苹果有着丰富的印刷和出版经验,对印刷成品十分重视。苹果认为,在显示屏上所显示的字体应该和印刷出来的成品效果接近,这样才能让设计师“眼见即所得”,提高工作效率。为此,Mac上面所显示的字体都比较接近字体原样,苹果大量使用次像素渲染来增添字体的细节——即使这样会导致字体看上去有些模糊。
微软则有着长久的桌面系统开发历史,从命令行到图形界面,侧重于考虑计算机用户阅读文字是否方便。微软认为,显示字体的时候应该针对显示屏作一定的优化,使之适应较低精度的像素分布,获得清晰效果,方便用户阅读。微软在渲染字体的时候让字体作了一定程度的变形,令字体看上去足够清晰——即使会让字体偏离本身设计的形状。
网友制作的对比图
我们不能说哪种理念才是正确的,因为这两种想法所针对的人群不同。对于一个设计师来说,他会喜欢Mac,因为他在Mac上制作的作品和最终的成品十分相似,不必反复校对;而对于文字工作者来说(比如说小编),则会更倾向于Windows PC,因为不必离屏幕很近也可以看清楚文字,能减轻眼球负担。
有趣的是,苹果和微软在字体渲染方面理念的差别也导致了双方机器设计的差别。苹果的机器无论是Macbook还是iPhone,屏幕都拼命向高分辨率高精度发展,因为高精度的屏幕可以极大减轻苹果式渲染字体而导致的模糊,最终的结果就是得到几乎和印刷品一样精细而清晰的字体。而微软则在新系统设计上大量使用大字号的文字——不明白的话可以看看Windows Phone的界面,这让能令用户十分容易看清楚界面的文字。
Windows Phone UI中大字体随处可见
说完了苹果和微软在字体渲染方面的差异,再说说Linux的字体渲染吧。很多朋友都觉得Linux太高端,完全不知道是什么东西,实际上很多人手中把持着的Android设备,其系统就是基于Linux Kernel的。事实上Linux的字体渲染介于苹果和微软之间——不如苹果精细,也不如微软清晰,但是比其余两者泛用性都强。
Android设备的屏幕分辨率和质材各种各样,从QVGA到720p,从RGB排列到Pentile排列,什么奇葩都有。人们常常埋怨Android设备上显示的字体不好看,实际上Android在这方面已经足够好了。可以想象一下,如果Android使用Mac的方式渲染字体,那毫无疑问在很多低端机器上的字体都会糊成一坨;若使用Windows PC上的方式渲染字体,那在Pentile屏幕上字体的边缘无疑会多出很多红红绿绿的马赛克。
Pentitle像素排列的屏幕(左)对字体的显示并不好
上面说到了各种机器渲染字体的方式不同,也没有什么优劣之分。但人总会有个喜好,有人说,我就是喜欢苹果Mac上的那种字体渲染,但是又由于种种原因不得不使用Windows PC,每次看到Mac都羡慕嫉妒恨啊。
有人就是喜欢Mac的字体
这也的确,Windows PC上面的字体,特别是中文字体,特别特别是除了雅黑之外的中文字体,虽然能看得很清楚,但是缺乏美观。这是因为除了雅黑全字号使用ClearType次像素渲染技术外,其他大多数中文字体在小字号的时候为了保持清晰度,使用了点阵显示,效果类似于古董货点阵字体。这怎么看都明显不够LifeStyle 啊,一夜回到解放前啊亲,于是有人就在想能不能在Windows PC上使用类似Mac的字体渲染了。
中文非雅黑字体在小字号下会以点阵显示
在Windows PC上,我们可以通过第三方软件接管Windows的字体渲染功能,来实现其他渲染方式。这里我们使用的是一款叫“MacType”的软件。
MacType的前身是日本人写的一款开源软件gdi++,可以通过进程注入自己的动态链接库截取Windows的字体渲染引擎Windows GDI+(gdi32.dll)来接管Windows的字体渲染。gdi++允许自定义字体类型和字体的渲染效果,深得用户喜爱,可惜的是gdi++在 2006年停止了更新。
由于gdi++是开源软件并且品质优秀,自然而然会有第三方的开发者使用其源代码进行开发。MacType就是一款使用了gdi++源代码的软件,在继承了gdi++的优秀特性的同时,也开发了一些新功能。至于MacType的实际使用效果如何,我们下面一起来看看。
首先我们下载MacType的安装程序。MacType支持Windows XP和Windows 7(包括32位和64位)等主流操作系统,但是并不支持Windows 8。安装MacType以后,会出现一个用户向导,可以选择MacType的加载模式,向导界面中对各种模式的特点也有说明。
MacType向导界面:选择加载模式
这里推荐使用MacTray托盘加载。使用托盘加载可以很方便地实时更换各种字体渲染方式,也很容易开启和关闭MacType,对系统也没有额外的改动。
接着MacType会让你选择一个配置文件,不同的配置文件有不同的效果,其中差异大家可以亲自尝试。我们也可以点击左下角的“进程管理”来让MacType只对特定的进程进行字体渲染,之后向导就完成了。
Mactype向导界面:选择配置文件及渲染进程
选择MacTray托盘加载模式以后,MacType会在通知区域显示一个托盘图标。我们可以双击图标来选择对哪些进程加载MacType,也可以右击图标来设置MacType,选择配置文件,或者自定义配置文件。
MacType的配置十分详细,可以用MacTray Tuner和记事本两种方式对字体的渲染核心、反锯齿等一系列特性进行调整,或者是对某些字体进行替换,并且给出实时预览。由于MacType可以对字体渲染方式作十分详细的配置,所以我们可以把字体渲染成苹果Mac风格的,也可以渲染成Windows风格的,还有其他效果,其中妙处大家可以慢慢体会。
使用MacType Tuner修改配置文件
点击“高级”后有更多详细选项
当然,我们也可以去网上下载他人的配置文件来尝试别人配置好了的渲染效果。不过MacType自带的字体渲染效果就有12个,一般而言已经够用了。
配置好MacType以后,很明显可以看到字体的渲染方式有了变化。至于效果如何,大家可以亲自试试。
开启MacType前
开启MacType后
后话:
字体虽小,学问却大。字体的问题涉及计算机运算、显示、影印、美术等多个方面,本文所提到的不过是九牛之一毛。然而字体的重要性又是不言而喻的,我们可以离开图形,但即使回到命令行的时代我们也离不开文字。小小字体美观与否,甚至能影响一个人的心情乃至心态。最后,愿各位每天都有好心情。