靈明輸入法單字編碼
學習了宇浩系列輸入法的拆分規則後,我們可以將任何一個漢字拆成唯一的字根組合。前一章的學習中,我們也瞭解了靈明輸入法的字根編碼規則。
現在,我們討論如何把字根的編碼組合轉爲單字編碼。
最多四根
一個字根,至少有兩碼;一個字,常有多個字根組成。如果我們將所有字根的編碼全部連接起來,往往會得到一個很長的編碼串,這樣做明顯沒有效率可言。為了平衡碼長和離散度,靈明輸入法採取了最多四根、最多四碼的設計。
如何將這些字根的編碼組合為更加實用的單字編碼呢?
在靈明輸入法中,無論一個字能拆成幾個字根,我們只關心其中最多四個字根,分別是:
- 第一根(首根)
- 第二根(次根)
- 第三根
- 最末根(末根)
比如:
木可以拆爲木一個字根,故而木既是首根也是末根,它又叫單根字,又稱字根字。根可以拆爲木艮兩個字根,故而木是首根、艮是末根。它没有第二根、第三根。想可以拆爲木目心三個字根,故而木是首根、目是第二根、心是末根。它没有第三根。整可以拆爲木口夂正四個字根,故而木是首根、口是第二根、夂是第三根、正是末根。籍可以拆爲𥫗丰八龷日五個字根。我們只關注「首二三末」這四個字根,故而𥫗是首根、丰是第二根、八是第三根、日是末根。龷這個根我們不去管它。
編碼規則
接下來我們學習單字的編碼規則,也就是如何把字根的編碼轉變爲不超過四碼的單字編碼。
總口訣
我們首先介紹一個簡單法訣,它可以適用於所有情況。
一二三末,大根免三。
首末大聲,末韻末參。
解釋一下:
- 一二三末:一個漢字,最多取用四個字根:第一根、第二根、第三根、最末根。
- 大根免三:如果首根是大根(有聲碼),則不使用第三根;如果首根是小根(無聲碼),才會使用第三根。
- 首末大聲:首根和末根都取大碼和聲碼(若有),其他根只取大碼。
- 末韻末參:末根的韻碼在最後才加入進來用於補齊至四碼。
我們用填格子的方式來說明兩種情況。
首根是大根的字:
- 填入第一根大碼和聲碼:☑☑☐☐
- 填入第二根大碼:☑☑☑☐
- 填入最末根大碼:☑☑☑☑
首根是小根的字:
- 填入第一根大碼:☑☐☐☐
- 填入第二根大碼:☑☑☐☐
- 填入第三根大碼:☑☑☑☐
- 填入最末根大碼:☑☑☑☑
對於不到四個字根的字,這時候很有可能格子還未填滿,則繼續填入末根的聲碼和韻碼補齊即可。
下面的幾節裡,我們將分情況介紹單字編碼的具體規則。
單根字
如果一個字本身就是字根,那麽它的單字編碼就是字根編碼,不言而喻。
例
- 「弋」的編碼就是對應的字根編碼:
Myi,其中M是大碼、y是聲碼、i是韻碼,它是個大根。 - 「骨」的編碼就是對應的字根編碼:
Kgu,其中K是大碼、g是聲碼、u是韻碼,它是個大根。 - 「木」的編碼就是對應的字根編碼:
Xu,其中X是大碼、u是韻碼,它是個小根,沒有聲碼。
兩根字
如果一個字是由兩個字根組成的,即兩根字,它的編碼規則爲:
- 取首根大碼。
- 取首根聲碼(若有)。
- 取第二根(也是末根)的所有碼。
- 截取前四碼。
例
认字拆成讠人,只有兩根,所以我們取全部根:首根讠、末根人。根據規則,我們取首根的大碼 W 和聲碼(無),然後取末根的所有碼 Ne,得到編碼WNe。
好字拆成女子,只有兩根,所以我們取全部根:首根女、末根子。根據規則,我們取首根的大碼 F 和聲碼(無),然後取末根的所有碼 Hvi,得到編碼FHvi。
旦字拆成日一,只有兩根,所以我們取全部根:首根日、末根一。根據規則,我們取首根的大碼 H 和聲碼 r,然後取末根的所有碼 Fi,得到編碼HrFi。
多字拆成夕夕,只有兩根,所以我們取全部根:首根夕、末根夕。根據規則,我們取首根的大碼 L 和聲碼 x,然後取末根的所有碼 Lxi,最後截取前四碼,得到編碼LxLx。
三根字
如果一個字是由三個字根組成的,即三根字,它的編碼規則爲:
- 取首根大碼。
- 取首根聲碼(若有)。
- 取第二根大碼。
- 取第三根(也是末根)的所有碼。
- 截取前四碼。
例
但字拆成亻日一,只有三根,所以我們取全部根:首根亻、第二根日、末根一。根據規則,我們取首根的大碼 N 和聲碼(無),然後取第二根的大碼 H,接著取末根的所有碼 Fi,最後截取前四碼,得到編碼NHFi。
算字拆成竹目廾,只有三根,所以我們取全部根:首根竹、第二根目、末根廾。根據規則,我們取首根的大碼 N 和聲碼(無),然後取二根的大碼 D,接著取末根的所有碼 Qa,最後截取前四碼,得到編碼NDQa。
织字拆成纟口八,只有三根,所以我們取全部根: 首根纟、二根口、末根八。根據規則,我們取首根的大碼 C 和聲碼(無),然後取二根的大碼 D,接著取末根的所有碼 La,最後截取前四碼,得到編碼CDLa。
智字拆成矢口日,只有三根,所以我們取全部根:首根矢、二根口、末根日。根據規則,我們取首根的大碼 K 和聲碼 s,然後取二根的大碼 D,接著取末根的所有碼 Hri,最後截取前四碼,得到編碼KsDH。
四根字
如果一個字是由四個字根組成的,即四根字,它的編碼規則爲:
- 取首根大碼。
- 取首根聲碼(若有)。
- 取第二根大碼。
- 如果此時只有兩碼,則取第三根大碼。否則跳過此步。
- 取末根的大碼。
從上面的規則可以看出,如果首根是大根(有聲碼),則我們不使用第三根;如果首根是小根(無聲碼),則我們使用第三根。
例
嫩字拆成女木口夂,分別對應了首根女、第二根木、第三根口、末根夂。根據規則,我們取首根的大碼 F 和聲碼(無),然後取二根的大碼 S。此時,我們只取了兩碼,所以我們接着取三根的大碼 D,最後取末根的大碼 J,得到編碼FSDJ。可以看到,嫩字的首根女是小根(無聲碼),所以我們使用了第三根。
韻字拆成立日口貝,分別對應了首根立、第二根日、第三根口、末根貝。根據規則,我們取首根的大碼 B 和聲碼 l,然後取二根的大碼 H。此時,我們已經有三碼,所以我們跳過第三根,直接取末根的大碼 N,得到編碼BlHN。可以看到,韻字的首根立是大根(有聲碼),所以我們沒有使用第三根。
多根字
如果一個字是由超過四個字根組成的,即多根字,只要取用首二三末這四個字根,然後按照四根字的規則進行編碼即可。
同四根字一樣,如果首根是大根(有聲碼),則我們不使用第三根;如果首根是小根(無聲碼),則我們使用第三根。
例
籍字拆成𥫗丰八龷日,超過了四根,我們只取四根:首根𥫗、二根丰、三根八、末根日。根據規則,我們取首根的大碼 N 和聲碼(無),然後取二根的大碼 G,接着取三根的大碼 L,最後取末根的大碼 H,得到編碼NGLH。可以看到,籍字的首根𥫗是小根(無聲碼),所以我們使用了第三根。
體字拆成骨曲一口䒑,超過了四根,我們只取四根:首根骨、二根曲、三根一、末根䒑。根據規則,我們取首根的大碼 K 和聲碼 g,然後取二根的大碼 L。此時,我們已經有三碼,所以我們跳過第三根,直接取末根的大碼 C,得到編碼KgLC。可以看到,體字的首根骨是大根(有聲碼),所以我們沒有使用第三根。
空格鍵的使用
在很多輸入法軟件中,空格鍵(以下用_表示)用來上屏没有達到最大長度的候選字。而在靈明輸入法中,空格鍵基本是不需要使用的。這歸功於靈明輸入法的无空格輸入設計。具體地説:
一個字的編碼等於 4 時,已經是最大長度,無需按空格鍵上屏。只要繼續輸入下一個字的首碼,這個字就會自動上屏。我們稱之爲五碼頂屏(請參閲瓊林擷英瞭解相關概念)。
例如:我們打「整理」二字,「整」字的編碼是
XDJF。輸入XDJF後,我們直接輸入「理」字的首碼Y,則「整」字會自動上屏。一個字的編碼低於 4 時,它一定是以
aoeiu五個元音字母結尾的。因此上,只要輸入法軟件見到這五個字母,就知道一個字已經輸完。只要繼續輸入下一個字的首碼,這個字就會自動上屏。例如:我們打「认真」二字,「认」字的編碼是
WNe,雖然不到 4 碼,但它以元音字母e結尾。輸入e的瞬間,軟件就知道編碼已經結束,我們直接輸入「真」字的首碼L,則「认」字會自動上屏。
靈明輸入法的韻碼,其實同時起到了傳統雙編方案中的小碼和空格的作用。它既能對字根信息進行補充,又能作爲單字的自然分隔符。
空格鍵只需在以下情況使用:
- 一個字雖然已經輸完,但由於有其它候選,不能自動上屏,且後續沒有其他字或標點需要輸入,這時候需要按空格鍵(或數字1)上屏首選。
- 爲了規避重碼,靈明輸入法設置了一些避重簡碼字,它們的編碼不以
aoeiu結尾,這時候需要按空格鍵(或數字1)上屏首選。
