哦哇資訊網

揭秘首批中文電腦字型誕生過程,將漢字「搬」進數碼裝置有多難?

由 愛範兒 發表于 科技2021-06-19

新的電子裝置開機時,螢幕映出的首個互動頁面,往往是系統語言選擇。

你可以上下滑動,選擇中文、英文、日文等多達上百種的文字。但如果將時間撥回 40 多年前,這一選項可能只有寥寥幾種,而且沒有中文。

我國文字的歷史源遠流長,但其數字化的歷程卻並不久遠。我們現在之所以能在電子裝置上閱讀中文,離不開最初花費巨大力氣,將中文‘搬’至電腦上的那一群人。

最近,斯坦福大學獲得了 2500 餘件現代中國資訊科技收藏品,包括幾十臺珍稀的中文打字機、文字處理器和電腦等物品,堪稱世界上最大的中國現代 IT 歷史合集。

▲首批中文數字字型模型。 圖片來自:斯坦福大學

該校一位研究中國歷史的教授托馬斯·穆拉尼(Thomas Mullaney),在這些珍貴的藏品裡發現了許多有趣的故事。其中就包括全球首批中文數字字型,是如何被製作出來的。

托馬斯將這段艱辛但充滿藝術的歷程,在《麻省理工科技評論》上講述了出來。我們也得以機會看見這個具有時代意義的歷史片段。

▲托馬斯·穆拉尼

一臺機器帶來的契機

故事要從一個訂單開始說起。

20 世紀 80 年代初,美國圖形藝術研究基金會 (Graphics Arts Research Foundation) 找到了路易斯·羅森布魯姆(Louis Rosenblum),想請他的團隊,為其正在開發的機器 Sinotype III 創建出中文字型。

當時路易斯已年近 6 旬,畢業於麻省理工學院的他,是一名資深的印刷、排版專家。路易斯在 1965 年創立了 Photography Systems 公司,專門解決數字工程、攝影、應用數學等相關問題。

▲路易斯·羅森布魯姆

雖然路易斯及其團隊此前和圖形藝術研究基金會有過多次合作,但這次為 Sinotype III 建立中文字型的專案,卻是最棘手的。

因為當時中國還沒開始生產個人電腦,其他國家或地區生產的電腦無法處理中文。所以在給 Sinotype III 這臺實驗性機器開發中文字型前,路易斯的團隊需要先對

蘋果

二代電腦(

Apple

II)程式設計,使其能夠以中文執行。

▲Apple II。 圖片來自:Wiki

萬事開頭難。由於蘋果二代的 DOS 3。3 作業系統,無法輸入和輸出漢字文字,所以必須得從頭程式設計,包括編寫一箇中文文字處理器。為此,其團隊花費了幾個月的功夫。

他們想出的解決方案,是先透過 BASIC 程式語言,編寫一個‘Gridmater’程式,然後將該程式放入蘋果二代電腦的軟盤上執行。如此一來,便能建立並儲存漢字的數字點陣圖了。

接著,將設計好的漢字點陣圖及其相應的程式碼,植入到系統資料庫,便可讓 Sinotype III 機器處理並顯示中文了。

▲Sinotype III 顯示器的照片,顯示了 Gridmaster 程式和漢字‘電’。 圖片來自:斯坦福大學

這裡插入一個背景知識。早期的數字字型,均採用點陣圖影象(也稱點陣影象)來顯示。

這是一種常見的儲存影象的方式,我們今天相機拍攝的照片、截圖,儲存方式均屬於點陣圖。一張 JPEG、BMP、GIF 等格式的圖片,是由很多畫素點組成,這些點經過排列和染色,便構成了圖樣。

比如我們可以在電腦上將一張圖片放大,放大至一定程度,便可看到正方形的畫素點了。早期的字型便是在一定大小的網格內,透過排列和染色形成的。

▲ 將左圖的眼睛部位放大,便可看到畫素點了

中文數字字型,可比英文難做多了

中文數字字型之所以難做,首要原因就是漢字的數量實在太多了,其次是因為漢字的字形十分複雜多樣。

在計算機問世之初,工程師和設計師約定採用大小為 5X7 的點陣圖網格,來建立低解析度的英文數字字型。如此一來,每個字元的大小約 5 個位元組,計算機的記憶體不會有太多負擔。

在美國資訊交換標準程式碼(ASCII)中儲存的所有 128 個低解析度字元,包括英文字母表中的每個字母、數字 0 到 9,以及常見的標點符號,共計需要 640 位元組的記憶體。而當時蘋果二代的記憶體為 64KB,可以輕鬆承載英文字型庫。

▲ASCII 字元表

而中文由於字形複雜,在 5X7 大小的網格中會糊作一團,難以辨認。因此至少需要一個 16X16 或者更大的網格。

這樣換算下來,每個中文字元的大小至少有 32 位元組。如果將 70000 個低解析度的漢字打包,記憶體至少需要 2MB。再退一步,即便字型檔內只放進 8000 個常用的漢字,也需要約 256KB 的記憶體。

這無疑是一個大難題。因為在上世紀 80 年代初,大多數 PC 的總記憶體容量不超過 64KB,根本裝不下龐大的中文點陣圖字型檔。

▲Sinotype III 顯示器的照片,顯示了中文字型。 圖片來自:斯坦福大學

記憶體告急並不是最令人頭疼的,因為這可以隨著 PC 軟硬體的進步得以解決。如何在 16X16 的低解析度網格中,創造出既容易辨認又美觀的中文字型,是更棘手的難題。

為此,路易斯團隊的設計師們花了數年時間,嘗試創造出滿足低記憶體要求,且清晰易認,甚至有書法美感的中文點陣圖。其中,凌煥銘(Huan-Ming Ling)和艾倫迪喬瓦尼(Ellen Di Giovanni)的貢獻最為突出。

他們先是藉助紙、筆、修正液來手繪出漢字的點陣圖,然後藉助上文提到的 Gridmater 程式將其數字化,植入到 Sinotype III 的系統中。

▲Sinotype III 顯示的中文字型。 圖片來自:Courtesy of Bruce Rosenblum

製作背後的匠人精神

托馬斯教授在檔案資料裡,發現了路易斯團隊設計漢字點陣圖的全過程。在一個裝滿格子圖的冊子中,記錄了設計師們是如何透過手繪散點符號來創造漢字點陣圖的。

我們都知道,漢字的筆畫並非‘橫平豎直’的,入口筆畫、出口筆畫、筆畫漸變都有著豐富的細節。這也是設計師們面臨的核心問題,即如何在 16X16 的方格中,儘可能將這種書法美展現出來。

在這本格子冊中,可以發現每個漢字都經過設計師精心繪製。綠色的‘X’是最初的標記,交由漢字編輯稽核後,如果哪裡不夠規範,路易斯及其團隊便會用修正液蓋住原本的標記,再用紅色的‘X’標記上去。

▲‘背’字的點陣圖草稿。 圖片來自:斯坦福大學

經歷反覆修改,經過最終確認的點陣圖,才會輸入至系統中。

如果要滿足消費者的需求,字型檔裡至少要包含 3000 個常用的漢字。這個工程量對於團隊來說是很大的。人們可能會猜測,他們是否會尋找一些討巧的方法。

例如,對於相同偏旁部首的漢字,可以直接將偏旁部首複製過去。就像下圖中‘評’、‘讀’都是言字旁,按理說設計師只需要設計右側不一樣的部分就可以。

揭秘首批中文電腦字型誕生過程,將漢字「搬」進數碼裝置有多難?

揭秘首批中文電腦字型誕生過程,將漢字「搬」進數碼裝置有多難?

▲中文點陣圖草稿。 圖片來自:斯坦福大學

但是托馬斯教授發現檔案裡類似的工作機制很少。路易斯堅持要求設計師逐字調整、設計,以確保每個字的偏旁部首看起來是協調的。即便有些改動十分細微,令人難以察覺。

托馬斯教授按照檔案資料重新復現了 Sinotype III 的中文字型。可以發現同樣為‘女’字旁的‘娟’和‘娩’,兩個字的‘女’字旁的設計樣式並不一樣。

▲可以看出‘女’字旁的不同嗎? 圖片來自:斯坦福大學

‘女’字旁在‘娟’字中的寬度為 6 個畫素(網格),而在‘娩’字中只有 5 個畫素。另外‘娩’字的‘女’字旁撇點和撇的筆畫,要比‘娟’多一個畫素,視覺上更加修長。

這樣一絲不苟的設計並非個例。托馬斯教授在字型庫裡發現了大量類似的工作,當他將點陣圖的草稿與最終成品放在一起對比時,還能看到許多細微、有趣的變化。

比如在‘羅’字中,左下角的筆畫最初是以 45°向下伸展的。但最終版本,筆畫的盡頭被‘拉平’,更符合書法的藝術感。

▲‘羅’字的兩個版本,左為最終版。 圖片來自:斯坦福大學

可以看出,新增或縮減一個畫素,便會對整體的平衡感、美感造成影響。這也體現出設計師們在創作首批字型的艱辛,以及背後的匠人精神。

實際上,16X16 的網格,對於創作中文字型並不是很友好。最主要的問題是對稱性。

我們知道,大量的漢字是具有對稱性的,而根據數學的規則,只有奇數大小的空間區域,才能創建出完全對稱的形體。

因此,路易斯及其團隊決定只利用 16X16 網格中的 15X15 區域,來實現漢字的對稱。這進一步縮小了設計師的空間,對設計工作提出了更高的要求。

▲ 山、中、田的對稱與非對稱。 圖片來自:斯坦福大學

得益於團隊孜孜不倦的努力和一絲不苟的態度,Sinotype III 的中文字型庫專案順利完成。儘管它並未商業釋出,但它的確是世界上最早能處理、顯示、輸入輸出中文的 PC 之一。

當然,路易斯及其團隊製作字型的方法,在當今的技術語境下看起來似乎太過古板和幼稚。現在廣泛使用的 TrueType 字型技術,能夠以向量方式儲存字型,佔用空間小、渲染快、顯示效果清晰銳利。

▲如今多數字體均是 TrueType 格式。 圖片來自:themex

但正是他們使用‘笨方法’,逐字畫稿、反覆修改,才讓漢字得以進入數字世界。而‘當代畢昇’王選院士主持研製的高解析度字形資訊壓縮技術,更是徹底地解決了漢字編碼儲存的困境。

在這些前輩們的努力下,中文才沒有被網際網路大潮落下,漢語拉丁化的理論被掃進歷史垃圾堆。我們今天能夠使用中文在網際網路上衝浪,應感謝他們曾為此付出的青春。

揭秘首批中文電腦字型誕生過程,將漢字「搬」進數碼裝置有多難?

TAG: 漢字中文路易斯SinotypeIII