现代个人计算机软件中可以进行排印或者出版准备工作的系统,以所见即所得型为主流,从早期的 Apple MacPublisher、Aldus PageMaker,到曾经非常兴盛的 QuarkXPress,以及现在的 InDesign 莫不如是,甚至连 Microsoft Word 都可以归入此类 1 。但是,在桌面计算机的图形化用户界面尚未普及时,字符终端上其实已经出现了优秀的排字工具。这一工具也许并不够直观,不过这或许也不失为其优点:写作者可以将精力集中于文档的内容、而非其展现形式之上;作为源文件的纯文本并不依赖于平台而存在,易于管理和版本控制;用于处理源文件的程序也可以极富扩展性。这实际上是典型的计算机程序设计理念,这样的系统也的确是出于一个计算机科学家之手——你也许已经猜我在说什么:TeX。
关于 TeX 的缘起与得名,乃至背后的设计哲学,TeX Users Group 网站这篇简短的介绍是一个很好的切入点,有兴趣的读者不妨自行探索。摘要而言:1969 年,计算机科学界泰斗高德纳(Donald E. Knuth)所撰写的 The Art of Computer Programming (TAOCP) 第一卷付梓,排印时所使用的是颇为高德纳所欣赏的 Monotype 排字机。七年后,活字印刷基本上被照相排印所取代,而 TAOCP 第二卷第二版也于此时完成。高德纳从出版商那里拿到排好版的样稿,看过之后大失所望:新采用的照相排印系统所制做的书版质量远不及早先的金属活字版本。受到计算机科学界的同事、麻省理工人工智能实验室负责人 Patrick Winston 以数字形式排印自己的新书 2 所启发,他意识到字体排印实际上就意味着将 0 (空白)和 1 (油墨)布置为合理的模式。高德纳说(大意):「作为一个计算机科学家,我的工作与 0 和 1 的模式紧密相关,我应该能够为此做点什么」。于是他开始研究数学著作的传统排版规则(TAOCP 中有大量的数学公式)和良好排印的要素,以及字体设计的相关知识——在当时,高德纳需要使用的数学符号尚无数字化的字体可言。一开始他计划用六个月的时间开发相关的程序,但实际上,直到十年之后,TeX 排版系统以及矢量字体设计语言 METAFONT 才最终定型。高德纳的这一工作获得了许多人的帮助,其中一些名字许多 TIB 的读者应该不会感到陌生:Hermann Zapf,Chuck Bigelow,Kris Holmes,Matthew Carter 与 Richard Southall 3 。最终的结果就是,「作为无可救药的完美主义者」 4 ,高德纳为了给自己的计算机编程理论书籍排版,创立了一整套高质量的数字排印系统,并且免费发布,从而成为学术界事实上的标准排印工具沿用至今。
高德纳开发 TeX 的初衷是要让计算机为自己的书籍自动排字,这也就意味着他需要一种数字形式的字体。问题在于,1978 年 PostScript 还不存在,而且因为 TAOCP 这卷计算机科学书籍的本质,他需要的不仅仅是一种字体,而是包括各种变体和数学符号在内的整整一套字体。最后他决定,开发一种编程语言与 TeX 配套,专门用于生成字体,这种语言就是 METAFONT 5 。高德纳的目标是,利用这种编程语言,以某一种优雅的字体为基础,生成一整套适合于 TAOCP 的字体族。这种基础字体必须足够地「中立」,适用于各类文本,同时又必须足够复杂,以便展示 METAFONT 的强大能力。并且,这种基础字体最好还能是美国的。一番探索之后,高德纳决定将注意力集中在二十世纪初的那些强调可读性的字体上,尤其是 Monotype Modern 。这一字体由 Monotype 在 1900 到 1902 年之间设计完成,而高德纳所看中的是 Monotype 的美国分公司所制作的 Modern 8A 4 。Modern 的外观与 Didot 类似,粗细对比很强烈,衬线纤细而扁平,X 字高(x-height)相对于升部(Ascender)及降部(Descender)来说较高。以它为蓝本,高德纳设计了后来于在世界上最为广泛应用的字体之一:Computer Modern。
如图所示,Computer Modern 具有多种变体。衬线、无衬线,等宽、非等宽,粗体、打字机体应有尽有,斜体甚至有两种:用于数学变量的 italic,和用于定理描述的 slanted ;此外字体还包含有各式各样的数学符号。所有这些字体都由 62 个参数控制,对其加以调整即可生成出更多不同的字体。目前比较流行的 TeX 宏扩展 LaTeX 标准版本中,Computer Modern 这一字体族所提供的字体数量一般是 75 种。用于生成这些字体的源代码都被高德纳公开发布,不仅如此,这一字体在他的另一套著作,Computers and Typesetting 之中有专门的一卷加以描述——包括全部的源代码——而这卷书有 588 页,自然也是使用 Computer Modern 字体排印的。这在字体设计史上大概是独一无二的事情,用高德纳的话来说,这本书「属于精确描述其自身外观的那一类书籍」。
由于高德纳的精益设计,TeX 在数学公式排版时表现卓越且易于使用。但是,当美国数学学会(American Mathematical Society, AMS)开始使用 TeX 制作其出版物时,发现它仍旧欠缺许多数学符号,以及如西里尔字母这样的、广泛用做数学符号的字符集。这些字符并不难以补充,不过 AMS 同样也需要德式的黑字体 Fraktur 及手写体,他们希望能有专业的字体设计师指导。于是,Hermann Zapf 被邀请来充当顾问。在高德纳的协助和鼓励之下,Hermann Zapf 专门为数学学会制作了一种模仿数学家板书风格的手写字体。这种字体以数学家莱昂哈德·欧拉命名,也就是 AMS Euler 字体族。1981 年,这些新字体和其他对 TeX 的扩展由 AMS 包装并发布,称为 AMS-TeX,成为 TeX 最早的扩展版本之一,专供需要进行大量数学写作的用户使用。需要注意的是,AMS Euler 是一种为排印数学符号而设计的字体,而不是用于正文。此后,AMS Euler 被高德纳用于 Concrete Mathematics: A Foundation for Computer Science 一书,并修正了若干瑕疵。6
参考
- 台湾计算机技术专栏作家侯捷先生出版过一本 Word 排版艺术,系统地讲解了各种利用 Word 排版个人出版物乃至正式书籍的技巧。^
- 这本新书很可能是 1977 年第一版的 Artificial Intelligence。^
- Charles Bigelow 与 Kris Holmes 是 Lucida、Geneva、Monaco 乃至 Wingdings 等字体的设计者; Richard Southall 似乎是一位字体工程师,具体作品不详,恳请知情读者补全。 ^
- Yannis Haralambous,Fonts & Encodings,附录 F。^ & ^
- METAFONT 可以指一种计算机语言,也可以指处理这一语言之源代码的系统。简要而言,METAFONT 可以用来写下一系列指令,告诉计算机如何在二维坐标系上绘出一个字符,进而设计出一套字体。这自然没有图形界面的字体设计软件直观,不过在 METAFONT 开发之时,虽然图形界面的计算机已经出现,但距离字体设计领域的应用还很遥远。^
- User’s Guide to AMSFonts, Version 2.2d.^
4 个相关讨论
Laura 那天跟我说他们 Engineering 的一个讲师上工程课时给学生叨咕了好长时间 TeX 的 Computer Modern 的好处,演示了连笔之类的功能,与 Word 等默认字体做了对比,讲了一堆,把学生吓坏了。
ye those passionate TeX evangelists… can’t love them more. LaTeX is not almighty, but still, worth to learn for any1 who enters a college, needs math, and wants some good looking stuff printed, yet too lazy to fight with the stupid microsoft word.
为什么我觉得这个 CM 字体跟 Century 系列字体非常地相似呢?
Concrete Mathmatics 里面的正文字体是 Concrete,slab 风格,也非常不错。
Concrete 字体其实是个Computer Modern的变种。Knuth写书的时候发现CM字体太细,调整了几个CM的参数,就自动产生了一个加粗版本的CM字体,名为Concrete字体。因此Metafont这套东西虽然现在鲜有人用了,其思想还是很伟大的。可惜Concrete到现在为止还没有完整的矢量版本,不太适合屏幕阅读: (