漢字處理

漢字處理一直是數位中文資料整理的挑戰。要在電子設備顯示文字有兩大要素:字碼字體

字碼是每個字在數位系統內部的編碼,供機器識別、排序、檢索使用。未有編碼的字即是「缺字」,傳統處理方法是製作造字檔以供顯示及列印,然而造字不利於交流,未安裝相同造字檔的設備無法解讀,也難以輸入和檢索。所幸萬國碼(Unicode)在持續更新下,已涵蓋絕大多數中醫古籍用字。本站用字原則上使用萬國碼收錄之用字,以符合國際標準。

然而,即使萬國碼有收錄,許多設備的內建字體往往尚未支援所有萬國碼字元,此時就會有一些字無法顯示。為避免這個問題,可在系統上安裝大字集字體——如中文全字庫的全字庫正楷體、全字庫正宋體或日本製的花園明體

對於無法或不便安裝字體的情況,本站以網路字體的方式提供上述大字集字體,在工具欄選擇後瀏覽器即會自動下載需要的區段使用。所謂「需要的區段」是指,假設罕用字有5萬字,字體檔共25MB,我們會把字體切割成多段,比如50段,形成50個各自支援1000個罕用字的500KB字體,假如網頁中只有1個罕用字,便只需要下載500KB的字體;若有10個罕用字,則下載500KB到5MB,視這些罕用字的實際分布區段而定,透過這種技術可避免耗費太多流量下載用不到的字體。瀏覽器預設會把已下載的字體存入快取,瀏覽其他頁面不須重複下載。

若未安裝也未啟用網路字體,本站也支援自動把無法顯示的Unicode字元轉成圖片。

對於萬國碼未收錄的漢字,本站使用萬國碼標準的IDS(表意文字描述序列)處理。IDC(表意文字描述字元)是一些描述漢字組合邏輯的字元:,將IDC與相應數量的「字」串在一起即形成IDS,表示一個「字」的結構,例如「拾」可以表示為「扌合」,「合」可以表示為「𠆢一口」。這裡說的「字」也可以是另一個IDS,例如「扌合」可以表示為「𠆢一口」。

一些範例如下:

⿰出頁
IDS「出頁」之解讀
⿰虫⿱勿心
IDS「勿心」之解讀
⿳宀珤⿺辶⿰⿰隹貝招
IDS「宀珤隹貝招」之解讀

IDS只表達抽象結構,無法表達更多細節,例如筆劃是否相接、所佔比例大小如何等等。表示「包圍」或「重疊」的「」、「」、「」、「」、「」、「」、「」、「」有時也無法明確表達各「字」的實際位置,例如「土丶」可能表示「𡈽」或「圡」,或其他如「丶」嵌在「土」左上或左下凹陷處,或「丶」與「土」的筆劃於各處重疊等等。除非沒有更好的選擇,原則上應避免容易發生歧義的IDS,例如「𡈽」和「圡」可分別用更明確的「土丶」和「土丶」表示,就應避免用「土丶」。

漢字大部分是組合字,因此古籍缺字絕大部分可以用IDS描述。IDS自1999年的Unicode 3.0即開始支援,由於是國際標準編碼,大部分設備都能直接解讀和利用,不會有造字檔交換的問題。此外IDS也很容易用機器識別及處理,本站會把笈成檢字系統有建檔的IDS自動轉換成圖片顯示,未建檔的字也會把盡可能把無歧義的IDS自動合成圖片,無法自動合成者,讀者可直接閱讀IDS於腦中組合出漢字結構。檢索方面,輸入完整或部分序列皆可找到相關漢字。IDS無法表達的字形則另外建立圖片或字體檔,並且用特殊ID碼處理。

Unicode缺字及IDS自動轉圖
Unicode缺字及IDS自動轉圖(原始碼)

在有IDS以前,大部分缺字處理方案都是不同程度的造字管理工具,例如中文全字庫軟體包是國家級的造字檔及輸入法管理工具。漢字構形資料庫是在造字檔建立一套專門的漢字「基本部件」及「構字符號」,使用者輸入基本部件及構字符號表達缺字,需要時可用漢字構形資料庫提供的巨集包將這些缺字轉換成對應外字集供顯示及列印。

總體而言,我們認為目前最好的缺字處理方式是文件原始檔盡可能用IDS記錄缺字,以便檢索及交流。並開發相應的輔助工具在需要時將IDS自動轉為圖片或造字,以解決顯示、印刷問題。

實用工具

除了缺字以外,即使一個漢字已有編碼,如何查找字碼輸入漢字,也是需要處理的課題之一。

就查找字碼而言,可使用以下工具:

就輸入漢字而言,我們推薦常接觸漢字研究的人使用倉頡輸入法。倉頡輸入法開發之初即特別著重於解決漢字檢索的難題,在巧妙的規劃之下,至今仍是最適合漢字檢索的輸入法,許多漢字檢索專案都使用倉頡碼作為檢索工具,如前述的中文全字庫、漢字構形資料庫、Unihan資料庫、和中醫藥造字檔。

除了檢索罕用字,倉頡輸入法在一般情況也很好用。由於發明人朱邦復一早就放棄著作權(在開放原始碼尚未盛行的1976年,可謂領先世界的創舉),任何人皆可自由使用及改良,倉頡輸入法在中文電腦普及度極高,各大系統皆有內建;商業化方面,改良自倉頡輸入法的大新倉頡輸入法是目前最快的中文輸入法。倉頡輸入法坊間教材很多,但良窳不齊,對於有興趣者,維基教科書提供了非常詳細的資訊,是一個很好的開始。

一般當遇到一個不太認識的罕見字,可先用倉頡輸入法嘗試輸入,若仍無法輸入,再進一步深入查詢。但要注意作業系統內建的倉頡輸入法編碼表較不全,且有一些錯碼,可找適當的輸入法平台(如RIME)匯入支援大字集的倉頡輸入法編碼表使用,必要時尚可自行修訂編碼表。

對於非倉頡輸入法使用者,其他形碼輸入法或注音輸入法也可以,只要輸入法支援大字集即可,但這種輸入法並不多見。