彭民德:《電子計算60年》(29)電腦漢化、文件編輯與鐳射照排

彭民德發表於2016-11-28

早期計算機只能做數值計算, 到了上個世紀60年代,美國資訊交換標準碼(ASCII)的出現,商用計算機開始湧現,計算機除了用於數值計算,也被用來處理大規模的資料,包括處理文字。當時一個重要專案是圖書館的目錄整理,但是不能有效處理英文以外的文字。

二十世紀英文打字機的普及極大地提高了文字資料的錄入速度,後來人們也想設計漢字打字機以便實現漢字輸入。由於漢字的複雜性以及數量眾多,使中文打字機遲遲未能設計出來。

1974年8月,中國開始了“748工程”,針對用計算機處理中文字,展開了各種研究工作。80年代微型計算機的普及,計算機的應用面迅速擴大,導致漢字處理的巨大社會需求。1980年公佈了GB2312-80漢字編碼的國家標準,該標準成為計算機漢化的語言基礎,其功勞自不待言。該標準在對所有漢字進行使用頻度統計的基礎上,把高頻字、常用字和次常用字歸結為漢字基本字符集,共6763個字。對於基本字符集又再按頻度分為兩級,一級常用漢字3755個,二級常用漢字3008個。對兩級常用漢字進行了排序,前者按拼音排序,後者以部首為序。還設計了一個分割槽分字位的區位表,共94區,每區94個位序。這6763個漢字在區位表中便都有了一個唯一確定的位置。比如“啊”字位於第16區第1個字(前15區用來存放其它符號);“大”字位於第20區的第83個位置處。這就意味著,該標準對常用漢字作了編碼。只要用一個8位的位元組表示漢字的區號,再緊接著用一個位元組表示漢字在區中的位序,此相連的兩個位元組,就唯一地表示出一個漢字。比如相鄰兩個位元組“16”“01”是“啊”字的區位碼;“20”“83”,就是“大”字的區位碼。

在GB2312-80漢字編碼的基礎上,再把6763個常用漢字進行數字化,就可以在計算機上建立漢字字型檔。開始用的是16×16點陣,每個漢字都用一個縱向橫向均為16格的方陣去取樣,這16×16個網格點,凡是壓在該漢字上的便取值1,否則為0。於是用16×16/8=32個連續的位元組便可以表示一個漢字。更精細地,則用24×24點陣數字化,每個漢字將用72個位元組長度表示。把所有6763個常用漢字進行數字化,就可以在計算機的硬碟上建立漢字字型檔。GB2312-80釋出後,常用漢字字型檔也很快建立起來了。

有了漢字的點陣字型檔,還要解決漢字輸入問題,怎樣輸入才能告訴計算機程式到合適的地方去找到相應漢字的點陣?。開始人們設計出“大鍵盤”的中文打字機,把幾千個漢字都刻寫在一個大鍵盤上,你想要什麼漢字,從大鍵盤中找到,拿一支筆尖點選它就行了,根據鍵位位序,從漢字字型檔中就可以取出漢字的點陣。但要配備數千個漢字組成的大字盤,昂貴的機器成本和要從數千個細小的漢字中直接挑選所需的一個漢字,複雜的使用技術,決定它不能普及到大眾使用。人們逐步認識到,實現計算機的漢化只能採用跟西文輸入相容的字母數字鍵盤

跟西文相容的鍵盤,一種是以區位碼為輸入,只需用到鍵盤上的數字鍵即可實現。再一種是拼音輸入,漢字拼音跟西文字母是相容的

1983年 電子工業部六所開發成功微機漢字軟體CC-DOS,這是我國第一套與IBM PC-DOS 相容的漢字磁碟作業系統。它用的就是區位碼輸入和拼音輸入。既然是第一套,在中國計算機歷史上,特別是計算機漢字處理歷史上就應該有它的地位

CC-DOS的實現技術,跟整個PC機技術公開的策略相一致,也公開了技術細節。當然PC機的開放性也使得它無法保密。因為只要拿到CC-DOS磁碟,專業人員就可以利用IBM-PC的技術資料把它的程式碼讀出來。CC-DOS就是利用了PC機的技術,把漢字處理程式繫結到PC機上實現漢化的。基本思想是在硬碟上建立漢字點陣字型檔,修改原來的鍵盤中斷管理程式INT 9H的入口,讓鍵盤中斷轉入自編的漢字處理程式,以便支援漢字輸入;修改顯示器管理程式INT 10H的入口,轉向自編的能夠顯示漢字的處理程式,以支援漢字顯示。在修改與恢復的轉換中實現系統中西文相容。它修改INT 9H、INT 10H、INT 16H、INT 17H這幾條與顯示和列印有關的中斷呼叫,以ALT+F1,ALT+F2,ALT+F3等作為中西文轉換鍵,實現漢字的輸入和輸出。它支援區位碼(用ALT+F1切換)、拼音(ALT+F2)等幾種漢字的輸入方式。筆者曾經取出CC-DOS的程式碼閱讀分析,用於研究生課程教學。作為一種技術學習,有的研究生只對CC-DOS程式碼的資料區做了很小一點改動,把開機時顯示的一段預設的宣示版權的文字,改成自己的名字,看到的作業系統版權就變了。原先CC-DOS顯示的是“CC-BIOS 2.10 中國電子工業部第六研究所 1984年8月”,改成了系統一啟動就顯示“長沙鐵道學院漢字作業系統”。當然我們只在實驗室此時此刻用一下,表示學到了CC-DOS的一些開發技術,看到的人為之一笑,不會去做侵權的事。

CC-DOS採用16×16點陣字型檔,漢字型檔以磁碟檔案CCLIB命名。DOS在其引導過程中,先檢查三個系統檔案IBMBIO.com、IBMDOS.com和COMMAND.com在磁碟上的存在和駐留情況,並依次把它們引導至記憶體執行。其後,要檢查是否有autoexec.bat批命令檔案,如果有就執行。CC-DOS正是利用了這個檔案,把支援漢字輸入顯示的功能加上去的。在這個檔案中增加了兩條命令,一條是file1, 其功能是檢查磁碟上是否有漢字型檔檔案CCLIB,如果有就依照其尺寸為其申請記憶體空間。接著執行名為cccc的命令,執行這個程式將調入漢字型檔,修改位於記憶體低地址的中斷向量表的有關指標,讓它們指向自己編寫的支援漢字輸入顯示的程式模組。cccc.exe是CC-DOS的精華,源程式都用IBM-PC的8086/8088組合語言編寫,彙編之後生成可執行程式cccc.exe。程式還是比較複雜的,比如僅僅用於顯示器控制,以支援漢字顯示的“int 10H”的程式,就包含20個子功能模組。用匯編語言寫程式開發難度可想而知。

計算機上有了漢字型檔,特別是有了CC-DOS,就可以利用它,這裡筆者曾經有過一些小的心得。當寫某個應用程式要用到漢字的時候,就可以開啟CC-DOS的磁碟檔案CCLIB,把相關部分調入記憶體,從中找到自己需要的漢字,把它們放到自己的程式中。即使不啟動CC-DOS,在西文的PC-DOS下,只要把CC-DOS系統盤放到軟碟機上就可以取用CCLIB。也可以在CC-DOS支援下,在程式中設定互動地從鍵盤輸入漢字。最快速的方法是從CC-DOS已經讀到記憶體的漢字字型檔區域,使用區位碼,把所需要的漢字找到。筆者曾經在本校主辦的《長院科技》雜誌上,寫過小塊文章,介紹怎樣在程式中快速地自動找到所需的漢字點陣。

1983年後中科院計算所,長沙鐵道學院等單位曾經研究UNIX微型機系統中文化,這是對當時另一類較廣泛使用的微機進行的漢化,也都初有成效。但是由於這類機型後來沒有大量普及,漢化後的相關工作也沒有繼續下去。

雖然若干單位都做了這樣那樣的漢化工作,但是大量的應用還有一個過程,一段時期內還沒有有效的漢字應用軟體。比如,中國記者就還不能夠像西方記者那樣利用計算機做新聞報導。1984年洛杉磯奧運會,新中國第一次進入奧運大家庭,第一天許海峰就獲得首金,國人為之振奮,很快掀起了一股奧運熱。幾天後《參考訊息》在援引德新社關於“中國人得了奧林匹克熱”的報導中記載:【德新社洛杉磯8月3日電】 新華社派了22名記者,4名攝影記者和4名技術人員在奧運會採訪和工作。報導奧運會的7000名記者中,大概只有中國人用手寫他們的報導”(《參考訊息》1984年8月5日)。說明此時西方已經普遍用計算機做文書處理了,而我們的漢字處理技術還沒有過關,還不能協助記者採訪。

因為整個IBM-PC系統是技術公開的,CC-DOS能夠做到的,其他人也可以做得到。繼CC-DOS之後,國人陸續推出了多款中西文相容的作業系統。希望漢字作業系統UC-DOS也是曾經被廣泛採用的一種。

早期的計算機漢化,採用較多的都是區位碼和拼音輸入法。區位碼輸入,因為編碼的唯一性,很容易得到所要的漢字,但是手頭必須有一張區位碼錶,敲擊鍵盤前的人工查表時間影響輸入速度。拼音輸入則只要知道漢字的拼音,按其字母順序直接敲鍵就可以了。但是由於漢字有很多多音字,敲擊某個拼音字母序列後往往有重碼,出現多個同音字。螢幕上又不能同時顯示出所有的同音字,還得一組一組地逐屏顯出,在許多同音字中逐屏挑選往往也很費時間,拼音輸入速度也不快。

王永民先生另闢蹊徑,在對漢字做了獨到的綜合分析後,1983年發明了五筆字型輸入法。他依據漢字的筆畫和字形特徵對漢字進行編碼,採用的是典型的形碼輸入法。王永民認為,所有漢字都可以歸結為5種筆劃型別(橫、豎、撇、捺、折)和3種字形結構型別(上下型、左右型、雜合型)。而且每個漢字都可以被拆分為若干個字根,所謂字根是由若干筆畫交叉連線而成的相對不變的結構,比如偏旁部首。它從漢字常用的200多個偏旁部首中,優選出130個,作為基本字根。反過來,由這些基本字根適當組合起來,一般地就可以得到任何漢字。它將這130個字根佈局到輸入鍵盤上,將A~Y共25個英文字母鍵,按其起筆筆畫分為5個區,每區有5個鍵位。又在這25個鍵位的每個鍵上標註一個常用字根做鍵名(位於鍵的左上角,黑體)每鍵除鍵名外,還標有5、6個其他字根。這樣130個字根全部都被標記在鍵盤上,便構成了漢字的五筆字型輸入鍵盤,一個與西文輸入相容的漢字鍵盤,巧妙地解決了用英文鍵盤造出漢字鍵盤的難題。這在王永民的著作上有詳細講解(王永民 《五筆字型計算機漢字輸入技術》 河南科學技術出版社 1985)。
enter image description here

輸入漢字時,要依據一定的規則對要輸入的漢字進行拆分,把它分成字根序列,而後依序敲擊相應的字根按鍵,漢字便會被找到實現輸入。比如,“堡”字由字根“亻”、“口”、“木”、“土”組成,依次敲擊這些字根對應的鍵位wksf,“堡”字輸入就完成了。有些字根也是一個獨立的漢字,輸入會更簡單,只要連續4次敲擊同一個鍵,或者敲鍵1次後加一個空格鍵即可。如果一個漢字拆分後有5個以上字根,便取其第1、2、3和最後一個字根,因此複雜的漢字,也只要4鍵輸入就可以完成。

五筆字型比拼音輸入法具有重位元速率低的特點,熟練後可快速輸入漢字,專職打字員很容易達到每分鐘百個字以上的速度。但是因為五筆字型輸入法需要把待輸入的漢字擺在面前,不會寫的漢字就無從下手。並且對待輸入的漢字要會按照王氏規則進行拆分,還要知道並記住鍵盤的漢字字根佈局。因此必須經過專門的培訓,很難在大眾中普及。在80年代末至90年代,許多人還是用手寫書寫文稿,而出版社雜誌社要求以WPS或者word文件形式提交,此時電腦打字有廣泛的社會需求,五筆字型打字輸入便催生了一種職業,因而當時也到處有五筆字型培訓班。

1990年代中期,最為普及的計算機作業系統由DOS升級到Windows平臺。微軟公司從中文版Windows 3.2開始,在作業系統裡整合了漢字處理技術,配備了微軟拼音、微軟智慧ABC等漢字輸入法。使國內傳統中文資訊處理產品迅速失去了市場。Windows 2000及以上版本,無論採用何種文字,均已支援中文處理

此後國人改進拼音輸入,使其包含聯想功能、片語學習功能等帶有這樣那樣智慧的輸入法,極大地加快了拼音輸入的速度。比如“拼音加加”輸入法就有學習功能。到今日的網際網路時代,有片語學習功能的搜狗拼音輸入法等被廣泛採用。拼音是我國義務教育的內容,廣大青少年都熟悉,用它來做計算機漢字輸入的人最多。可以預計,今後採用拼音輸入的人的比例還會加大,而採用五筆字型輸入者的比例會減少。在老年群體中,也有手寫輸入等其它輸入法可用。時下中國人,包括非計算機職業的廣大同胞,已經很容易使用計算機漢字了。

有個問題令人深思。隨著計算機的漢化,今後在電腦上工作,就總是跟GB2312-80這6763個常用漢字打交道。雖然每個實現漢化的軟體一般都會提供造字程式,讓人可以使用這個漢字字符集之外的漢字,但是根據筆者自己的體驗,當用到計算機無法表示而需要自己造字的時候,通常情願避開這樣的字,另寫句子表達,省去造字的麻煩。30年下來,6763個常用漢字以外的漢字是不是已經逐步被邊緣化?不久前看CCTV全國漢語聽寫大賽,筆者也在許多漢字面前成了文盲。其實,所引用的“捕蛇者說”等古典名著的例句,有的曾經是中學教材的內容,很多年以前都是熟悉的,現在卻不得而知了,這讓我感慨。聯想到1946年日本只保留1850個漢字的文字改革,現在還有繼續減少的趨勢,我國這個“6763”是不是會事實上成為長久保留的字符集,就像日文的1850個漢字繼續沿用,而其它漢字久而久之就會被大眾遺忘了呢?

解決了漢字的輸入,接著出現了中西文的編輯軟體,既有office word,也有WPS,它們互相吸收,各有長處,常用功能和介面也一致。90年代後許多人開始藉助於它們用電腦寫作

WPS、word等編輯軟體都支援文字編輯,排版,剪貼等操作,支援多種字型字號選擇。在Windows環境下,可以插入圖形、影像、表格和數學公式,不但可以書寫一般文稿,還可以製作表格,寫出各式各樣漂亮的標書、紅標頭檔案。因此,用電腦寫作不但解脫了人們爬格子的苦,而且大大提高了書寫質量。

用電腦寫文件很容易編輯,插入、刪除都很方便,插入文字時,後面的已有文字會自動地依序後推;刪除文字時,後面部分會自動地依序前移,文件總能保持乾乾淨淨的可用狀態,似乎什麼改動都沒有發生過。這比在紙上編輯需要勾勾畫畫,版面會亂七八糟,必須重新謄寫相比,有無可爭辯的優越性。

用電腦寫文件可以整體替換,比如想把“圖象”改成“影像”,可以經編輯選單,到替換子選單,在替換對話方塊中,分別給出被替換的文字串“圖象”和需要的新文字串“影像”,就可以全程替換。

編輯程式支援對已有物件的複製和貼上。物件可以是文字串、影像、表格等。被複制和貼上的物件,既可以來自當前文件,也可以來自其它檔案。

編輯操作的歷史將被記住,可以對此前的不恰當操作予以撤銷,這種回退操作將減少誤操作造成的損失。在沒有這一項功能之前,誤刪操作損失無法挽回。

編輯程式還會幫助我們定期儲存文件,以減少偶然斷電造成的損失。在八、九十年代,長沙市用電沒有保證,尤其是伏天和數九寒天用電高峰季節,斷電沒商量,這項功能也很有用。因為不注意儲存而在斷電時損失數小時工作的故事經常發生。

還有個故事,WPS支援對文件加密儲存,開啟加密儲存的文件需要驗證密碼,很少有人用。這本來是保護文件的好辦法,不過如果忘記密碼就傷腦筋了。我校外語系一位老師的一篇論文因無意間加了密,可是她忘了密碼,打不開了,為此很著急。她找到筆者,幸好WPS還有一把萬能鑰匙“裘伯君”可用。

計算機漢化的一項特別重要的應用,是王選院士等人發明的鐳射照排技術和鐳射照排機。我們今天看到的書籍、報刊就是享受他們的成果,用計算機鐳射照排機快速地印出來的

筆者曾經嘗過以往鉛字排版的苦澀滋味。1985年,為我校漢字資訊處理中心寫一本《UNIX的應用與原理》講義,用來為他們培訓“中西文相容UNIX系統”的使用者,也兼之向校內外交流。該書由學校印刷廠鉛字印刷。當時一本講義有資格鉛字印刷,在學校已經是很難得的待遇了。在印刷車間裡一盒一盒地擺放著很多鉛字,書稿必須逐頁順序地在工作臺上用鉛字來組織。標準大小的頁版都是帶網格的盒子,每個格子容納一個漢字鉛字,頁面開始是空的。排字員根據書稿(當時我的書稿也是手寫的),一個字一個字地從鉛字盒裡找到所需要的字,插到格子裡,有字的一面向外,像圖章一樣,字還是反的。包括標點符號、頁號都得用單獨的鉛字放在固定的格子裡。每一頁都要用單獨的鉛字網格版,順序地排下一千多個5號小字,每人每天能夠排一、兩頁就不錯了。約50萬字300多頁的書稿,兩個人用了三個多月才把它排下來。鉛字版堆放佔了半個排版車間。而後送到印刷車間,印出第一稿清樣。清樣的質量極大地依賴於排字員的經驗,當時講UNIX系統的稿子,大量引用UNIX原始碼的資料結構和程式,用了許多新符號,諸如#、&、^、~、*、$等元字元,跟減號“-”有別的下劃短線“_”,這些符號在其它場合很少見。對於沒有接觸過UNIX的人來說實在不容易排,排版錯誤很多。而後的修改編輯就更難了。刪除幾個錯字要把後面的鉛字逐個地往回勻,而要插入幾個字就先要把該頁後面的鉛字逐個後推,騰出格子後才能插入。如果騰不出足夠的格子,插入就無法進行。跨頁的操作幾乎無法做。折騰下來,待看到第二稿清樣,老的錯沒有改完,又有不少新錯誤了,總體質量比先前那一次沒有多大提高。三稿下來,花去了半年時間,還有很多錯,質量依然很不滿意。

之所以要作上述回顧,毫無埋怨當時的印刷工人之意,當時他們都吃盡了苦頭,很辛苦,要感謝他們。只是想比較地說明,王選院士們的發明,給我們帶來了多麼大的方便,給社會的進步有多麼重大的意義。

王選院士等在落實748工程的時候,從1975年起便開始做精密照排系統預研。在漢字處理技術上也有突破,在他們的鐳射照排系統中,不再簡單地用點陣來描述單個漢字字形,而是用數學的方法,用輪廓描述點撇捺等不規則筆畫,用引數描述橫豎折等規則筆畫的長、寬、傾斜度及變化多端的各種筆鋒。同時成功研製出一整套把折線輪廓復原成點陣的快速演算法和使失真度儘可能小的變倍演算法。這些內容是華光、方正系統的核心技術(參見王選:《王選文集》p5,北京大學出版社 1997.2)。王選院士們的鐳射照排系統輸出解析度達742線/英寸(DPI),相當於每毫米29.2線,有很高的精度,後來又把解析度提高到1016DPI。為了減少資訊的傳輸量,王選和他的妻子陳堏銶教授,不是直接控制鐳射照排機將版面以點陣形式輸出。他們提出了一種頁面描述語言BDPDL,將已經排好的一整個版面圖文,用這種語言加以描述。BDPDL語言程式碼經電子計算系統解釋執行,最終以鐳射照排方式,精細地印在書報上或者製作成膠片。 1979年7月27日,成功輸出了第一張八開報紙樣張。8月11日,光明日報公佈這一樣張,對這一新事物熱情地在頭版頭條用通欄大標題“漢字資訊處理技術的研究和應用獲重大突破”,首次肯定報導了我國自行設計的鐳射照排系統主體工程研製成功(同上,P33)。

enter image description here

enter image description here

由於對自身技術路線的信心,1985年,王選提出“3-5年內使國外照排系統基本上不能進入中國”的目標,宣示了電算強國的雄心壯志。到1988-1990年,華光Ⅳ共售出1700套,便實現了市場佔有絕對優勢的目標。整版報紙用BDPDL語言描述後以程式碼方式遠端傳送,使傳輸資訊量減少到通常傳真方式的1/50,且毫無失真。從1992年起,《人民日報》便通過衛星向全國幾十個城市傳送。平均每2分鐘就能夠傳完一個版面。使京外其他許多城市的讀者每天早上就能看到當天的《人民日報》(同上,P9),這也大大減少了報紙的物理搬運量。

當80年代中期國際上提出PostScript頁面描述語言,並確定為綜合處理文字和影像國際通用工業標準後,王選院士又向這個國際標準看齊,開發了符合PostScript標準的專用協處理器晶片。從1993年起,他們的鐳射照排系統同時支援PostScript level 2 和BDPDL語言(同上,P6),因而其國際上的佔有率也很高。

王選院士的鐳射照排技術,淘汰了以往的人工鉛字排版印刷,極大地提高了書報的印刷速度和印刷質量,大大節省了時空開銷。現在幾乎所有的報紙書刊,都用“方正”和“華光”鐳射照排系統印刷。王選院士用電子計算技術改寫了我國印刷業的歷史,被稱為當代畢昇,鐳射照排之父。1994年,王選先後被評為工程院和科學院的院士。同年榮獲聯合國教科文組織科學獎。2002年,榮獲2001年度國家最高科學技術獎。我國計算機學會的最高獎就以王選的名字命名。

(與本文相關的更多內容,可參看彭民德《電子計算60年》第5章 個人計算靈活方便 電子工業出版社)

相關文章