字体的发展过程(掺杂着一丝知识产权)

Skip to the Article

转载自:http://2simple.cn/2008/06/blog-post_14.htm  作者范蠡祭

花了一点时间研究了一下字体,发现这个东西还是蛮复杂的。

首先,字体的应用场景为打印和屏幕显示。
其次,字体的发展与硬件发展有着密切联系。

有了这两个脉络,再来看字体的发展,就比较清晰了。

最早的电脑没有显示器,后来有了单色显示器,那么屏幕上就要显示文字,敲击键盘上的字母A,屏幕上就要出现一个A,这个怎么实现呢?还是活字印刷、打字机的思路,预先设置一套数字化的字体图形库,敲击A的时候调用其中的A,把A的图形打印到屏幕上,就搞定了。由于当时的显示设备是单色显示器,所以字体用点阵字体(bitmap font)就足以应付了。

打印并不受限于屏幕,只受限于打印机。Adobe公司开发了一套页面描述语言PostScript来满足这方面的需求,纸张所能表现的分辨率比当时的屏幕要大的多得多,所以点阵字体是不能满足打印需求的,PostScript中使用Type 1字体来解决这个问题。Type 1字体是第一种矢量字体(outline font),靠二维坐标系中的关键点和三次贝塞尔曲线(贝塞尔是个好人)描述字体的边缘,打印的时候根据字体大小进行计算确定字体边缘,然后往里面填充墨水,就输出为漂亮的字体了。也就说,当思并没有什么所见即所得(WYSIWYG)一说,编辑一个文档跟现在写HTML差不多,区别是PostScript要打印出来才能看到效果(今天可以转成PDF预览了),而HTML可以在浏览器里面直接显示。这是上个世纪70年代的事情。

随着计算机的发展,灰阶显示器和彩色显示器出现了,软件方面也开始向图形化界面升级,点阵字体不能满足屏幕显示的需求了。Apple是个人电脑图形化的先锋,所以它最先着急,Type 1字体是加密的,Adobe拿它卖钱(商人和科学家的区别啊),当然不会白给Apple用,所以Apple就自己开发了一套TureType字体,1991年,这套字体跟随System 7操作系统(Apple的第一个彩色GUI系统)一起发布了。TureType跟Type 1的主要区别在于它使用二次贝塞尔曲线而非三次(因为实时渲染的计算量还是专利?),这造成了Type 1字体无法通过TureType的渲染那引擎直接输出在屏幕上。同时,Adobe也开始研究将Type 1字体用于屏幕显示的技术,这对Apple是个坏消息,如果矢量字体继续被Adobe垄断下去,甚至屏幕上显示用的字体都要从Adobe购买,势必会增加操作系统的成本,进而阻碍它推广自己的软硬件。

Apple就把TureType授权给了Microsoft,换回来一套TrueImage(从来没被用过)。这个交换看上去赔本,实际上是个好事。Microsoft靠卖DOS赚了大把的钱,它有了TureType之后投钱开发了几套与Type 1“兼容”的字体(与相应的Type 1字体看上去差不多,字符宽度完全一致)。有了微软的这个工作成果,System 7.x和Windows 3.X就可以用TureType字体进行所见即所得桌面出版了,输出到打印机的时候调用相应的Type 1字体即可。Adobe见大势已去,开放了它的Type 1字体(Adobe的知识产权保护没做好啊)。

后来,显示器的分辨率提升,怎么样把字体显示的更漂亮又成了一个问题。Apple和Microsoft都各自开发了一些技术来优化最终的渲染效果,实现抗锯齿。接着LCD又出现了,它的显示原理与CRT不同,每个点都很精确,为了适应LCD的字体显示,又是一轮技术升级,终极目标是逼近打印效果。最后,分久必合,TureType和Type 1统一到了OpenType的框架下,OpenType成为了今天的主流字体,屏幕显示和打印通吃。

虽然字体的格式之争结束了,Windows/OS/Linux三种操作系统对于字体的渲染效果并不统一,Windows用ClearType、Leopard用Core Text、Linux用FreeType,哪种效果好没有看到横向评测。

另外,字母和汉字也有不少区别。字母个数少,做一套矢量字体要比汉字容易的多。字母的结构比较简单,而汉字结构复杂,制作字体的时候难度要大不少,小字体的时候容易糊在一起,所以很多人至今仍习惯看点阵的宋体(这也和Windows一直占据主流有关)。

未来,当显示设备变得更强大,OpenType字体应该会继续适用,但字体渲染引擎需要继续升级。

Are you interested in the followings?

Leave a Comment