西夏文輸入法的設計(一):困難之處

一直都很想做一個西夏文輸入法,因爲網上找不到一個能用的西夏文輸入法。以前看到一個叫“中華西夏文處理系統”的輸入法,據說是根據鄭碼設計的,可惜部提供下載。我最討厭這種部提供下載的東西,所以只能自己設計一個西夏文輸入法。

首先遇到的第一個問題是編碼設計。我們有五筆輸入法、倉頡輸入法、鄭碼輸入法等漢字輸入法。這些輸入法的取碼方法都不同、重碼率也各有高低。比如倉頡的重碼率就比五筆低,這根編碼的取碼的方法有關。所以怎樣取碼西夏文就顯得格外關鍵。

根據維基百科所述:

“由於本以漢字檢索為目的,倉頡取碼依據視覺辨識原理,能反映漢字的細微特徵,幾乎所有不同字形或異體字,都有不同的編碼,因此重碼率為當今中文輸入法最低者……”

注意,這裏提到倉頡輸入法”能反映漢字的細微特徵”,這點格外關鍵,因爲西夏文筆畫繁雜,有些時候差一筆字就不同,所以怎樣反映“西夏文的細微特徵”則成爲西夏文輸入法編碼設計的關鍵所在。我曾經想根據倉頡輸入法的編碼給西夏文取碼,可是才取碼100個字就發現重碼率很高,不難想象這麼設計後6000多個的西夏字的重碼率會有多高。所以倉頡編碼行不通。《夏漢字典》是根據四角號碼進行檢字的,如果根據四角號碼來設計西夏文輸入法重碼率也不低,所以也行不通。

第二個問題是西夏文的正字還沒有確定,也就是說我們不知道每個西夏字的準確寫法是什麼。最新版《簡明夏漢字典》和老版《夏漢字典》在字形上就有很多不同,對照《同音》後我就更迷惑了。而《同音》的不同版本對於同一個字也有不同寫法。比如有些字在《同音》的某個寫本中有“橫折撇”這一個筆畫,在其他寫本中則編成了一橫和一撇兩個分開的筆畫。所以我猜測在設計西夏文輸入法時“橫折撇”和一橫加一撇必須用同一個編碼。如果每個西夏字的準確寫法沒確定,西夏文輸入法則很難設計。

第三個問題是西夏文還沒被unicode收入,目前能用的西夏文字體不多。本網站採用的西夏文字體是基於今昔文字鏡的西夏文字體修改而來的。而今昔文字鏡收入的的6000多個西夏字則分佈在兩個字體文件裏。我一直不明白爲什麼非得要兩個文件才夠,一個就不夠嗎?希望unicode早日收入西夏文,不然西夏文映射到漢字的分區上也不是個解決辦法。

目前我的想法是對6000多個西夏字進行拆分分析,整理出常見的偏旁、部件、結構,然後對每個結構取碼。這個計劃的工程量巨大,不過好在已有前輩做過此類的工作,我就直接採用他們的分析結果,希望能對西夏文輸入法的取碼設計有所幫助!