[Tech] 數位字型的歷史:從點陣字到 OpenType


早期的電腦——或者說計算機(computer)——是沒有終端(terminal)顯示器概念的,畢竟在那個使用打孔片作為輸入的年代裡,電腦處理的任務大多都是數值運算,其結果以類比的機械結構表示已經相當足夠。

直到 1964 年,IBM 2260 商用電腦上市,作為第一個擁有顯示終端的電腦,雖然其龐大的 CRT 螢幕只能顯示 6 行、每行 40 個,共 240 個字元,卻是計算機歷史上極具重要的突破,標示著人機互動新紀元的開始。

Image Source: Columbia University Computing History

透過矩陣形式儲存點陣圖

伴隨著字元顯示的需求,數位字型的需求也隨之而來。

與現實字模裡的連續曲線不同,當時的顯示器分辨率極為有限,字符的輪廓多以矩陣的形式儲存,工程師在有限的網格空間內,將黑色需要顯示的部分被標示為 1、留白的部分則被標示為 0——以一個僅有 01 的矩陣紀錄,電腦再控制其像素(pixel)的顯示與否。

透過這種點陣圖(bitmap)形式儲存的字型,雖然可以顯示,但比起人工雕鑄的字模來說,其凹凸不齊、就像被啃過一樣的邊緣實在是相當的醜陋。而且如果遇到字符需要縮放的時候(尤其是放大),這種鋸齒狀的邊緣就會越來越明顯。

Ikarus 與 Metafont 的嘗試

想要製作一套看起來「滑順」的字型,比起用格子去儲存外框曲線,我們需要一種新的方式。

1972 年,Peter Karow 發表了 Ikarus 字型軟體(德文拼法的「伊卡洛斯」,就是那個飛太高、太靠近太陽,翅膀融化掉到海裡的伊卡洛斯),使用者可以透過樣條函數(spline)來標記直線與曲線,藉此繪製漂亮的輪廓。

1979 年,Donald Knuth(高德納,就是發明 TeX 的那個神人)在開發 TeX 時,有感於當時的字型品質實在不適合排版,另外編寫了 Metafont 字型描述語言,讓工程師可以透過三次樣條插值(Cubic Hermite spline)來描述曲線的外觀。

以下面這個水餃圖形為例,若要以 Metafont 描述,則需要使用以下的咒語:

Image Source: Wikipedia

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
%file name: beta.mf
%mode_setup;
% Define a beanlike shape for the character B
beginchar("B",11pt#,11pt#,0);
  % Setup coordinates as an equation system
  y1=y2=y3=0;
  y4=y5=y6=h;
  x1=x4=0;
  x2=x5=w;
  x3=x6=2*w;

  % Define pen
  pickup pencircle xscaled 0.2w yscaled 0.04w rotated 45;

  % Draw the character curve
  % z1 is the same as (x1, y1)
  draw z1..z3..z6{z2-z6}..z5..{z4-z2}z4..cycle;
endchar;

end

嗯哼…?

毫不意外的,Metafont 字型描述語言完全沒有流行起來,畢竟在畫出一條線之前,必須要學會如何建構數學方程式——這個門檻連高德納自己都承認「有點難」。

向量轉點陣

Ikarus 與 Metafont 都使用數學方程式的形式來描述曲線,但曲線要怎麼轉成顯示器上的網格呢?

最簡單的方法就是將網格和曲線鋪在同一張紙上,如果曲線塗黑的部分(也就是字本身)超過一半面積以上,則將該格子塗黑;反之則留白,如此一來,所有的曲線就能透過柵格化(rasterization,或譯成光柵化)的方式轉成螢幕能顯示的格式。

不過,柵格化的邏輯雖然簡單,但顯示的效果就跟圖片顯示的一樣,實在是差強人意。

Adobe PostScript

1970 到 1980 年代堪稱是計算機的戰國時代,性能不斷提升的商業電腦取代了笨重的打字機,螢幕與鍵盤成為了辦公室的日常風景之一。

當時還沒有「所見即所得」(WYSIWYG)的概念,使用者在電腦上面看到的文字,會在印表機端重新渲染(render),與實際印出的字型常常是不一樣的;而每台電腦與印表機都有自己的文件規格,不同廠商之間的是無法通用印表機的。總而言之,雖然已經可以透過電腦列印文件,但檔案的相容性依舊是個大問題。

有鑑於此,當時在 Xerox 工作的 John Warnock 和 Chuck Geschke 便有了一個大膽的想法——Interpress 計畫,他們打算發明一種新的印刷描述語言一統天下,打破既有的廠牌壁壘,讓文件不再挑印表機,達到真正的通用。

想當然爾,Xerox 和其他廠商都對該計畫興致缺缺,無論是市占率還是技術,都沒有一個強烈的動機讓他們願意放棄既有的標準保護。但儘管如此,John Warnock 和 Chuck Geschke 還是對 Interpress 計畫有信心,在 1982 年,他們離開 Xerox 創業,將 Interpress 將一步擴充成 PostScript 標準,而公司的名字則以 Warnock 家裡附近一條河流命名——Adobe 成立了。

1984 年,Adobe PostScript 語言正式問世;隔年,Apple 在與 Adobe 合作下發表了第一台使用 PostScript 語言的印表機 LaserWriter,引發了桌面出版(Desktop publishing)的革命。

PostScript 有許多極為領先想法,深深影響了後來的字型格式。舉例來說,為了解決上面所提到在柵格化問題,PostScript 允許每個字符紀錄 Hinting 訊息(可以想成是一個小抄),可以告訴渲染器哪部分的字幹(stem)尺寸要一致(例如 H 的兩個豎筆寬度應該要一樣)、高度應該要保持多高,而不至於歪掉。

可以說,字符由過去單純被動的被柵格化,變成可以主動要求柵格化時要保留的資訊,大大提升了的字型顯示品質。

最重要的是,比起 Ikarus 和 Metafont 透過樣條曲線來描述曲線的形狀,PostScript 引入了貝茲曲線(Bézier curve)。和前兩者相比,基於 de Casteljau 演算法的貝茲曲線只要「拉動」控制點就可以畫出想要的曲線,不僅直觀、易控制、容易進行升階與降階、其計算也更加的快速。也因此,PostScript 標準在很短的時間內便成為了主流。

起初,PostScript 定義了多種規格——其中又以 Type 1 與 Type 3 字型最常見。前者可以免費使用,後者則需要向 Adobe 購買授權。Type 3 雖然完全支援 PostScript 的功能,但 Adobe 卻故意 (現在來看就不怎麼意外) 讓 Type 3 無法支援 Hinting,使得 Type 3 字型在處理小尺寸字型的時候依舊無法很好的被柵格化,使用 Type 3 字型列印出來的品質也只能說相當普通。

若想要使用支援 Hinting 的 Type 1,不僅需要向 Adobe 高額的授權費,還僅能在經授權的 PostScript 印表機上列印。此外,Adobe 還委託許多設計師設計 Type 1 字型,使得市場上高品質的字型幾乎都是 Type 1 格式,反過來壟斷了高階字型的印刷市場。

雖然第三方字型廠商(例如 MonoType)對於 Adobe 壟斷更好的 Type 1 字型一事感到無語 (搞差別待遇可謂是 Adobe 的基因),但 PostScript 還是在市場上取得了極大的成功——畢竟,貝茲曲線的繪製簡單許多,而且現在至少可以販售 Type 3 的字型了。

從 TrueType 到 OpenType

當時,作為作業系統的龍頭,Microsoft 和 Apple 都被迫與 Adobe 合作,以確保用戶願意使用他們的作業系統來進行文字的處理;而在另一方面,兩間公司對於所見即所得軟體的興趣也日益增高,不停的向 Adobe 打聽 Type 1 的渲染技術。然而,Adobe 對 Type 1 悉心保護的態度,使得雙方都無法真正進入到 PostScript 的開發與規格制定過程。

1987 年,受不了 Adobe 的 MicroSoft 和 Apple 決定攜手合作,發布 TrueType 格式的字型規格,並從 System 7(後來常被稱作 Mac OS 7)與 Windows 3.1 開始支援,全面推廣。儘管 Adobe 將 Type 1 字型瞄準在高階專業印刷領域,但在商用及個人電腦市場不斷擴張的情況下,TrueType 字型很快地取代 PostScript 字型,成為市場主流。

不過,Apple 的野心不僅僅止步於此,他們在原本 TrueType 的基礎上越走越遠,擴充出 TrueType GX 與 Apple Advanced Typography (AAT) 格式的字型。雖然他們從未成為主流,但其包含了許多有趣的字型功能,例如可自由開啟關閉的連字、上下文替換、替代字形與文體集,都影響了後來 OpenType 特性的開發。

1997 年,也許是 Adobe 終於願意認輸,也許是受到 Apple 野心的刺激,Microsoft 與 Adobe 握手言和,致力於開發 TrueType 次世代版本,並將其稱為 TrueType Open,也就是後來的 OpenType。OpenType 不僅向下兼容 TrueType 與 PostScript,在多次版本迭代中,也吸收了過去 PostScript、TrueType、AAT 的優點,反映在其擁有的特性(feature)上。

從 1999 年 Adobe 宣告不再生產 Type 1 字型,並逐步將原有的 Type 1 字型重新封裝為 OpenType 格式開始,OpenType 的市佔率不斷攀升。2021 年,隨著 Adobe 正式宣佈旗下的 InDesign、Illustrator、PhotoShop 停止支援 Type 1,PostScript 時代迎來他的終結,OpenType 格式已經成為目前字型與印刷產業事實上的(de facto)標準。


本文同步刊於 iThome。詳見DAY 03 |數位字型的進程:OpenType 格式