長久以來,坊間流傳的蒼頡檢字法(蒼頡六代)碼表,由於整理時間較早,且編寫者最初對蒼頡檢字法的輔助字形與規則等理解不足,導致存在許多錯誤和不自洽之處,與官方碼表牴牾,甚至出現了出於作者喜好而修改常見字編碼的情況。
然而,由於倉頡官方使用的內碼系統不同於現今流行的 Unicode,官方交予坊間的資料僅有一份 PDF 文件和一份文本化不完全的 Word 文件。在這份 Word 文件中,僅有部分基本區和少數 A 區漢字得以文本化,其餘漢字則以 &~倉頡碼; 的形式代替,例如:
| 字符 | 蒼檢編碼 | 2003 版五代倉頡編碼 |
|---|---|---|
| &~IKYAJ; | IKYAJ | IKYAJ |
| 㐃 | IL | IL |
由於文本化的不完全以及其中存在的 Unicode 對應錯誤,這份 Word 中的編碼無法滿足日常使用。因此,蒼頡檢字法用戶不得不繼續使用坊間存在諸多錯訛的碼表,導致許多新用戶被錯誤編碼誤導。
出於改善倉頡輸入法生態、為社區盡一份力的意願,朋友 @Arthurmcarthur 與我(@InSb)共同啟動了蒼頡文本化計劃,將《內碼對照表》PDF 中的內容,在 Word 文件的基礎上逐行輸入至電腦,以期讓基於 Unicode 的計算機也能使用到原汁原味的蒼頡檢字法碼表。
本碼表完全忠實於官方蒼頡檢字法碼表,不更改《內碼對照表》的編碼,即使其中存在筆誤亦然,完全體現蒼頡檢字法原貌。
對於尚未收錄於 Unicode 的漢字,我們採用表意文字描述符(IDS,Ideograph Description Sequence)表示,例如:&~AABDD; 目前尚未收入 Unicode,暫以「⿱昍冧」代之。
除了官方的「蒼頡檢字法官方內碼」與「2003 版五代內碼」以外,我們另增二欄,以方便用戶使用:
1. 蒼頡檢字法全碼
《內碼對照表》中收錄的蒼頡檢字法編碼與 2003 版五代編碼皆為內碼,為保證唯一性,蒼頡檢字法編碼後面可能帶有數字。
- 碼長小於五時: 數字不會佔去編碼,例如:「已」
SU1(全碼SU)。 - 碼長等於五時: 數字可能佔去編碼,例如:「𢻽」
MVIY1(全碼MVIYE)。
此欄會參考蒼頡檢字法輔助字形和重碼情況,刪去或補足編碼,以提供完整的編碼。
2. 2003 版五代倉頡全碼
由於該項資料已於《漢文庫典》中提供,我們使用 Danny Lin @Danny0838 爬取的《漢文庫典》數據。
文本化後的碼表以以下形式排列:
| 漢字或 IDS | 蒼頡檢字法官方內碼 | 蒼頡檢字法全碼 | 2003 版五代內碼 | 2003 版五代全碼 |
|---|
經過文本化,若不計入同一Unicode字符不同編碼的情況,則本碼表目前收錄以下區域的漢字,日後若 Unicode 擴增,此處統計可能更新。
| Unicode區塊 | 字數 |
|---|---|
| Unicode CJK基本區 | 20916 |
| Unicode CJK康熙部首增補 | 7 |
| Unicode CJK擴展A區 | 6577 |
| Unicode CJK擴展B區 | 30542 |
| Unicode CJK擴展C區 | 183 |
| Unicode CJK擴展D區 | 6 |
| Unicode CJK擴展E區 | 214 |
| Unicode CJK擴展F區 | 332 |
| Unicode CJK擴展G區 | 140 |
| Unicode CJK擴展H區 | 104 |
| Unicode CJK擴展I區 | 20 |
| Unicode CJK擴展J區 | 126 |
| Unicode CJK相容表意字符 | 16 |
| Unicode CJK筆劃 | 4 |
| Unicode未收錄字符 | 5226 |
| 其他字符 | 78 |
下面不完全列舉本碼表與坊間蒼頡檢字法碼表的不同之處:
| 漢字 | 本碼表(官方) | 坊間蒼頡檢字法碼表 | 備注 |
|---|---|---|---|
| 已 | SU1/SU | SYU | |
| 歹 | MN1/MN | MNI | 坊間編寫時不知有「癶的左邊」輔助字形 |
| 列 | MNLN | MNILN | 同上 |
| 夙 | HNMN | HNMNI | 同上 |
| 㱛 | MNMN | MNMNI | 同上 |
| 鳳 | HNMZ | HNMHZ | |
| 盘 | HYBT | HBYT | 未遵循「上下形上方為半封閉形與下分離時視作字首」規則 |
| 曱 | WMLL | AJ | 坊間蒼頡檢字法取碼原因不明 |
| 甴 | LWLM | JA | 坊間蒼頡檢字法取碼原因不明 |
| 㝱 | JBNI | JMTN | 坊間編寫時不知有相關輔助字形 |
| 铲 | OPY | OPYTH | 坊間「产」部件取碼不統一,此處錯誤地未使用「产」輔助字形 |
| 萨 | TNLY | TNLY | 坊間「萨」編碼正確,但與前述「铲」取碼矛盾 |
| 钦 | OMPNO | OPNO | 未使用「反字身」規則 |
| 锥 | OMPOG | OPOG | 同上 |
| 䦅 | OPTQR | OPTGR | 不存在的字形 |
| 夜 | YOK | YOK/YONK | 坊間蒼頡檢字法編碼時不知有“夜的右下角”輔助字形 |
| 兎 | HLAI | HLUI | 誤用不存在的輔助字形 |
| 嚣 | RRMBR | RRMOR | |
| 𩰲 | NZ | NNMRB | 未使用「Z」部的輔助字形,與「鬻」取碼矛盾 |
| 曾 | CWA | CWFA | 「CWFA」編碼僅適用於上部寫「八」的字形 |
| 𡆵 | WX | WLLL | 未使用「止」部的輔助字形,因坊間編寫時不知有此輔助字形 |
本碼表以下列三種方式提供:
可以在本項目中下載原碼表以供研究。
Rime格式的數字版碼表,保留原官方的數字編碼與原排序,暫未收入Unicode的漢字以方框“□”佔位,您使用時若要輸入重碼字,需要將數字鍵作為編碼鍵入,這叫一個地地道道地地道道。
按此下載含「文傳字庫GB/BG5符號碼」之Rime格式數字版碼表。
Rime格式的碼表,使用我們補全的蒼頡檢字法全碼,去除了未收入Unicode的漢字與編碼,同時重新排序,輸入重碼字時只需選字,更方便使用。
按此下載含「文傳字庫GB/BG5符號碼」之Rime格式全碼碼表。壓縮包內含三種排序版本,可依需求選用。
按此下載含「文傳字庫GB/BG5符號碼」及傳統「ZX??」、「YYY??」符號之Rime格式全碼碼表。壓縮包同樣提供三種排序版本,可自由選擇。
關於符號及排序之詳細說明,請參閱後文「排序」與「符號」兩節。
依「發行」一節所述,本專案提供以下三種碼表排序版本:
• 碼表①:如「特點」一小節所述,在《內碼對照表》基礎上僅新增兩欄,保留原有編碼與排序不變。
• 碼表②:僅提供依原碼表順序排列之版本。
• 碼表③:提供三種排序方式——「一般排序」、「傳統漢字優先排序」與「簡體中文優先排序」。
當同一編碼出現重碼時:
- 「傳統漢字優先排序」會將常用的傳承字置於前列;
- 「簡體中文優先排序」則將常用的簡體字置於前列;
- 「一般排序」假設使用者同時使用繁、簡體字,藉由評分函數綜合評估字形使用頻率。通常情況下,傳承字權重較高,但若某簡體字的使用頻率極高,亦可能優先於傳承字。
在排序時,使用到了字頻表。繁體中文字頻表來自於香港中文大學人文電算研究中心,簡體中文字頻表來自於Jun Da的網站。
蒼檢頡字法開發完成後,由於原「YYY??」符號段已被漢字佔用,官方遂決定將符號移至「ZZ???」區段,並將其命名為「文傳字庫GB/BG5符號碼」。 雖然該符號碼未收錄於《內碼對照表》PDF中,但沈女士曾提及其存在,因此本專案將其內容單獨整理為 zsymbols.txt。 由於「ZZ???」段含有數字,部分輸入法在使用時不便,故另製作去除數字版本,收錄於 zsymbols_without_num.txt。
傳統微軟倉頡所用之「ZX??」符號及原官方「YYY??」符號,則歸入 symbols_legacy.txt。 在〈發行〉一節所述的碼表中:
• 碼表①不含這些符號。
• 碼表②含有 zsymbols.txt 的全部內容;
• 碼表③提供兩種類型:其一包含 zsymbols_without_num.txt 全部內容,其二則在此基礎上再加入 symbols_legacy.txt 的資料。
感謝 @Arthurmcarthur 為本文本化計劃打下基礎,為倉頡社區犧牲了寶貴的時間。
感謝 @wcshds、@yi-bai 先生,為我和 Arthurmcarthur 的文本化工作提供了許多支持,若沒有這些協助,蒼頡檢字法文本化計劃不會以如此高的品質與大家見面。
感謝 @Danny0838 爬取的漢文庫典資料,使得我們可以方便準確地补全2003版五代倉頡的全碼。