現代個人計算機軟件中可以進行排印或者出版準備工作的系統,以所見即所得型為主流,從早期的 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到現在為止還沒有完整的矢量版本,不太適合屏幕閱讀: (