宇浩輸入法詳細教程和規則細節
目錄
初識宇浩
漢字輸入法
漢字輸入法,顧名思義,就是漢字(部首、筆畫)錄入進電腦中的方法。大多數時候,輸入的過程,有兩個階段:
- 用户將漢字,用一定規則,編成一串字母、數字、符號的組合,輸入電腦中。
- 輸入法會串字符,根據一定的規則,轉化爲對應的漢字,顯示到屏幕上。
本教程中的「輸入法」,特别指代上文中提到的第一階段,亦卽:用户將漢字,用一定規則,編成一串字母、數字、符號的組合,輸入電腦中,並獲得想要的漢字。
輸入法種類
輸入法,根據其特點,一般分爲三類
- 拼音(音碼)
- 字形(形碼)
- 音形(形音)混合。
音碼輸入法,最常見的例子就是拼音。我們將漢字對應的拼音,直接輸入到軟件中,軟件會顯示對應的漢字供你選擇。這其中包括了一個反饋的過程,卽:輸入字母——獲得候選——輸入數字——獲得漢字。
形碼輸入法,最常見的例子是五筆字型。我們將漢字拆成若幹部件,輸入每一個部件對應的代碼,軟件會顯示出漢字。常見的形碼,還包括五筆字型,鄭碼,倉頡等等。這其中有時包括了一個反饋的過程,但因爲形碼的確定性,大多數時候是不需要確認的,卽:輸入字母——獲得漢字。
判斷一個輸入法是音碼還是形碼的最簡單的方法,就是:對於任意一個漢字,不用知道它本身的讀音便能輸入。
因此,「宇浩」繁簡通打輸入法,是一種形碼輸入法。
形碼和音碼的對比
形碼輸入法和拼音最大的區别,在於拼音輸入法,知道讀音,便能輸入漢字。而形碼輸入法,知道寫法,便能輸入漢字。
音碼的優點,便是像説話一樣去打字。你只要知道標準的發音,便可以打出字來。同時,漢語拼音也是當代人的必修課,不需要特别地學習,因此,它的學習成本近乎爲零。
音碼的缺點,那便是同音字很多,經常需要選字。雖然當代的不少輸入軟片在「智能化」上下足了工夫,但在輸入一些書面語、古文、或者生僻字詞時,還是需要選字。大量翻頁會打輸入的節奏。筆者正是因爲寫小説時候被翻頁打斷思路而使用了形碼。
形碼的優點,便是像寫字一樣去打字。你不需要知道每個字的具體讀音。同時,因爲編碼比較離散,你甚至不怎麽需要去選字。這在寫作時,保證你的思路不被打斷。在看打、或者打古文的時候,形碼的速度很快。
形碼缺點是,如果你一下字忘了這個字的寫法,那就會卡住,必須臨時改用拼音輸入法(反查)。
至於音碼和形碼哪個更好?這就是仁者見仁、智者見智的問題了。當然,也依賴於你的需求和使用場合。筆者在日常對話時使用全拼,在寫作時使用形碼,做到揚長避短。
宇浩輸入法特點
「宇浩」作爲一種形碼輸入法,除了繼承了剛剛所説的形碼的全部重點外,還有一些自身的特點。這些特點,自然受到了筆者偏好的影響。這裏僅舉例一二:
- 大字集。也就是説,用「宇浩」可以打出所有的漢字(CJK + 部首 + 筆畫),並且有99000多個漢字的單字拆分,且一直保持保持更新維護。
- 繁簡通。也就是説,你可以直接打出繁體漢字和簡化漢字。繁簡字根不佔用同一個碼位,因此繁簡混輸的時候也很少選字。
- 低重碼。也就是説,每個編碼一般只對應唯一的候選項,你不需要進行選字,可以不用打斷思路地進行輸入。
- 手感好。筆者不喜歡使用 Z 鍵,所以這個鍵位被空了出來,用於反查或其他功能。
這裏對比一下五筆、鄭碼、宇浩等十餘種常見輸入法在不同漢字字符集下重碼數據,供大家參考。
學習步驟
學習「宇浩」,一般從瞭解拆字和熟悉字根開始。
拆字,就是把漢字按照一定的規則,拆成唯一的部件組合。拆分出來的部件,便叫做「字根」。字根不僅包括你我熟知的「偏旁部首」,也包括了一些基本筆劃,甚至是一些漢字。因此,筆畫輸入法(橫豎撇捺折),也是一種特殊的形碼。那麽我們爲什麽要創造别的形碼呢?因爲一個字若用十幾個、甚至幾十個字母代替,太没有效率。故而,我們會截取一些比較大的部件作爲字根。
對於漢語使用者,拆字並不是一件陌生的事情。我們自小就學會將一個字拆成分離的部首,進行檢索。大多數時候,這是非常直觀的。
比如:
- 「部」字,大家會自然地將他拆分爲「立口阝」三個部分。
- 「程」字,大家會自然地將他拆分爲「禾口王」三個部分。
對於「宇浩」而言,大多數的字,也是這麽拆分的。並且大多數的偏旁部首,也都是「字根」。
所以恭喜你,對於大多數的漢字,你已經可以憑藉直覺進行拆分了。
本教程推薦的學習步驟如下。
- 看字根圖,大致瞭解「宇浩」的字根有哪些,以及它們對應的編碼。
- 瞭解「宇浩」拆字的規則,學會如何得到唯一的拆分方法。
- 學習編碼規則,學會如何將拆好的字根轉化成最終的「宇浩」。
- 記誦最常用的100個字根的編碼(在輸入法「新手」模式下,可以基本輸入最常用的500個漢字)。
- 直接在輸入軟件中練習前500常用字(覆蓋了77%的字頻),邊練習邊記憶字根。
- 閲讀進階教程,更加深入地瞭解一些「宇浩」的特點。
以上内容不論順序,可以交叉或同步進行。
字根編碼
常用字根
本章介紹宇浩輸入法的字根。介紹之前,先説明一件事。
我注意到,最常用的50個字根,佔了60%的使用頻率。最常用的100個字根,佔了85%的使用頻率!這説明,有針對性的記憶字根,使得學習曲線更加平坦,收效更加顯著。
按照使用頻率降序,前50的常用字根爲:
口一月丶日人亻扌白土丷二又丿宀木尚辶小冖厶心氵八女大艹𠂇匕寸也乙戈目讠不龰阝竹了十夂王刂儿力凵冂子斤
前51到100的常用字根爲:
火米丁彐纟文立士夕乂门卜自尤彳羊止禾贝尸工乚上囗至手𬺰艮车石田己几牛见走甲且彡犬巾西方刀殳七弓巴矢示
所以,在接下來的學習中,請務必按照上面的次序記憶字根,而不是一股腦地背誦全部。先練熟邊際收益高的字根,會顯著加快上手打字的進程,增加學習樂趣和成就感。而偏僻的字根,可以等未來慢慢熟悉。
字根圖
我們將字根的鍵位畫出來,這便是字根圖。每一個鍵位上的大寫字母,就是大碼,是一群字根的「家」。而字根右下角的小寫字母,則是小碼,也就是單個字根的「姓名」。將大碼和小碼組合起來,就是一個字根的編碼了。
比如:
- 「言」這個字根,在字母
U
的方框裏,同時,右下角的字母是a
,因此,它的編碼就是Ua
。- 「其」這個字根,在字母
D
的方框裏,同時,右下角的字母是j
,因此,它的編碼就是Dj
。
字根圖是查詢字根的重要工具,初學者應當時常將它放在手邊,以利用查詢。以下爲宇浩輸入法全部字根的鍵位圖。繁體特有字根22個,都排在簡體字根後。
大碼和小碼
在「宇浩」中,每一個字根,都對應了兩個字母。換句話説,「宇浩」使用的是雙編碼字根。這一點和鄭碼相同,和五筆不同。特别的:
- 第一個字母叫做大碼。爲了方便教學,本教程用大寫字母表示。大多數時候,我們只需要用到大碼,所以應該重點記憶。
- 第二個字母叫做小碼。爲了方便教學,本教程用小寫字母表示。只有在部份情况下,需要用到,記憶起來也比較簡單。
字根的大碼和小碼的分佈,並不是隨機的,而是有一定的規律。在接下來的教程中會進行介紹。
字根大碼的規律
字根大碼,是按照字根第一筆的筆畫來制定的。「宇浩」同五筆一樣,字根按照筆畫分區。
- ASDFGH 包含了首筆爲「橫」的字根,例如:
A寸
F一
等。橫區在鍵盤中排左側。 - JKLNM 包含了首筆爲「豎」的字根,例如:
J日
K上
等。豎區在鍵盤中下排右側。 - QWERTY 包含了首筆爲「撇」的字根,例如:
P竹
T人
等。撇區在鍵盤上排左側。 - UIOP 包含了首筆爲「捺」和「點」的字根,例如:
U言
I立
等。捺區在鍵盤上排右側。 - BVCX 包含了首筆爲「折」的字根,例如:
B刀
C巴
等。折區在鍵盤下排左側。 - Z 鍵没有字根,可以用來反查拼音或做其他用途。
字根口訣如下:
橫: A 丁丌(jī)行右(亍)瓦,耳下(丅)打(扌丁)七寸。 S 草頭二犬厂,辰考而有臣。(丂𠂇) D 古來十石尤其戊,西雨不走馬豕丰, F 一木甫三工。 G 大王革春(𡗗)夫,框(匚)面弋酉戈。 H 老上(耂)青(龶)士示(礻)兀牙,末世土干未至车。
豎: J 早日山曰田, K 甲申由禺电,下框(冂)凹里业,虫贝水上见。 L 口是心非 M 巾网(罒wǎng)貝皿且具上,小目立刀(刂)卜虎(虍)骨。 N 方框(囗)二三(丨〢〣)豎,黑冊尚止(龰)足。
撇: Q 荒下没右(殳)鱼儿气,撇(丿)川瓜矢几竹舟。 W 周圍(⺆勹)炙顶(⺼)皆同月,千鬼上身生金牛(牜),告頭(⺧)杀上(乂)誰側(隹)缶? E 反文(攵pū)人(亻)欠斤,白爪壬乌夭。 R 雙人(彳)食(饣)匕入舌臼,微禾向夕反犬(犭)毛,衣下(𧘇)古風僉繁鳥。 T 八人手长二三撇(彡),金邊(钅)自用介下卯。 Y 秃蓋(冖mì)心合豸(zhì),阜(𠂤duī)上食九鸟。
捺點: U 兰頭(丷䒑)将(丬)左四點(灬)火,广言亡羊赢外框, I 鹿户三點(ッ)立水(氵)上。 O 辛亥高寶蓋(宀),言旁(讠)點(丶)捺(乀)方。 P 文门亦米走之底(辶chuò),病頭(疒)麻穴衣字旁(衤)。
字根小碼的規律
字根的小碼,都是儘量從它漢語拼音包含的字母中隨機選取。同時,爲了增進手感和雙手互擊:
- 如果拼音中有
Z
或X
,那麽可以選K
來代替。 - 如果拼音中有
U
,那麽可以選V
來代替。
例如:
米
,第一筆爲「點」,故而它的大碼在點區的P
。小碼爲了便於記憶,選取了m
,正好是米字的聲母。因此,「米」這個字根的編碼就是Pm
。
例如:
女
,第一筆爲「折」,故而它的大碼在折區的C
。「女」的頻率很高,所以小碼是n。因此,「女」這個字根的編碼就是Cn
。
我在這裏使用大寫和小寫的拉丁字母,是爲了區分大碼和小碼的槪念,便於理解學習。在實際打字的過程中,不需要區分大小寫。
字根字的輸入
字根字有大碼和小碼,那麽想要輸入字根該怎麽做呢?就是:
- 代表字根:全碼爲三碼,重複小碼,Aaa
- 附屬字根:全碼爲四碼,重複小碼,Aaaa
比如:
月
的大碼是W
,小碼是y
,它是一個代表字根,所以輸入Wyy
就可以打出這個字。勹
的大碼是W
,小碼是y
,它被歸併到了月
上,所以輸入Wyyy
就可以打出這個部首。⺼
的大碼是W
,小碼是y
,它被歸併到了月
上,所以輸入Wyyy
就可以打出這個部首。
拆字規則
先前説過,拆字,就是把漢字按照一定的規則,拆成唯一的字根組合。
我剛剛用的「部」字爲例,説明了拆字的一般形式。這種將字拆成直觀的、分離的部件的方法,足以應付大部分漢字的拆分了。但在實際使用中,遇到這個問題:一個獨體字,本身不是字根,怎麽辦?這時候,我們要把它繼續拆成更小的字根甚至筆劃。
比如:
- 「戋」這個字,我們可以繼續將它拆成「一」和「戈」。查字根圖可知,「一」和「戈」正好是兩個字根,拆字成功。
- 「丸」這個字,我們可以繼續將它拆成「九」和「丶」。查字根圖可知,「九」和「丶」正好是兩個字根,拆字成功。
- 「朱」這個字,我們可以繼續將它拆成「牛」和「八」。查字根圖可知,「牛」和「八」正好是兩個字根,拆字成功。
有時候,獨體字的拆分不是很直觀。比如「再」拆成「王冂」兩個字根。遇到此類字時的拆分,往往需要一些經驗和練習。所以當你遇到不會拆的字時,應該主動查詢它的編碼,及時學習。
更麻煩的情况是,一個字好像有幾種拆分方法。
比如:
- 「井」,可以拆「二{介下}」,也可以拆「一廾」。
這種一字多拆的情况,任何形碼中,都是積極避免的。因爲一字多拆,會造成極大的不確定性,並造成編碼的混亂。
前輩輸入法的拆字規則,一般都有諸如「直觀」、「符合筆順」、「取大」等設置。但是優先級往往不够明確,很多拆分方法並不符合規則,存在不少特例。在常用字範圍内,還可以通過大量練習來完成記憶,但到了大字集,規則不明確、規則相矛盾,都是造成檢字困難的因素。
宇浩輸入法總結了拆字規則,並且不斷自我審視每一個拆分是否符合規則。通過大量的努力,明確了一套優先級系統。使每一個漢字,都有唯一的拆分方案,消除了不確定性1。
「宇浩」拆字有五條原則,按優先級排序如下:
- 字根最少
- 符合筆順
- 結構完整
- 散連交斷
- 字根取大
以上優先級,還可以高度歸納爲:少順整散連交斷大。
取根時,如果有多種不同的拆分方式,則按優先級從高到低依次檢查以上規則,選取符合條件的,排除不滿足的,最終得到唯一的拆分方案。以下爲規則詳細介紹:
字根最少
字根最少,意思是拆分一個字時,應該使得字根的數量最少。保證字根數量最少,是第一優先級最高的規則。
符合筆順
符合筆順,指的是字根的每一筆,完全符合原漢字的筆順。我們要使得完全合筆順的字根儘量多。比如:
- 「裏」可拆成「甲二」,也可拆成「日土」。觀察到「甲二」完全符合「裏」字的筆順,故而選擇它。
符合筆順的優先級低於字根最少。比如:
- 「國」如果完全符合筆順,應該拆成「冂王丶一」,是四個字根。但拆成「囗王丶」,只用三個字根就够了。因爲「少」優先級高於「順」,所以應該拆成「囗王丶」。
結構完整
結構完整,指的是一個拆分,不能過份破壞漢字的整體性。故而「囗」「勹」「冂」等包圍結構不拆散。
如:
- 「昜」拆「日一勹彡」不拆「日丆𠃌彡」。
- 「万」拆成「一勹」而非「{一丿}乛」。
- 「单」可以拆成「丷日十」也可以拆成「丷冂丰」。兩者都是三根,都完全「符合笔順」。因为包圍結構不拆散,故而「单」拆成「丷日十」。
注意,拆分的優先級需要得到貫徹。
- 「匹」拆「兀乚」而不拆「匚儿」。因爲前者完全符合筆順,而「符合筆順」的優先級更高。
散連交斷
「散連交斷」,是漢字部首或筆畫的四種狀態。
- 字根離散,指的是兩個字根互相分離。比如「部」中的「立口阝」,便是三個分離的字根。
- 字根相連,指的是兩個字根互相連接。比如「美」拆爲「䒑土大」,這三個字根都是相連的。
- 字根相交,指的是兩個字根互相交叉。比如「再」拆成「王冂」兩個字根,便是相交的。
- 筆劃斷開,指的是一個筆劃斷開。比如「我」拆成「丿扌戈」三個字根,其中的「扌」和「戈」兩根的橫本是一筆寫成,但我們將橫畫斷開。
「散連交斷」,優先級依次下降,但都排在「字根最少」和「符合筆順」之後。
比如:
- 「兰」可以拆成「䒑二」也可以拆成「丷三」。觀察到,上面的兩點同橫相連,故而拆成「䒑二」符合「能散不連」。
- 「开」可以拆成「一廾」也可以拆成「二{介下}」。觀察到,第一種拆法字根相連,第二種拆法字根相交。故而拆成「一廾」符合「能連不交」。
- 「果」拆作「日木」,不拆成「田木」,這是因爲後者將中間的豎斷開了。因爲「字根相交」的優先級高於「筆畫斷開」,「果」應當拆成「日木」。
- 「我」拆作「丿扌戈」,不拆成「丿扌乚丿丶」。雖然前者將中間的橫斷開了,但因爲「字根最少」的優先級大於「筆畫斷開」,我們選擇只有三根的「丿扌戈」。
- 「熏」拆作「千黑」,不拆成「千囗丷二灬」。雖然前者將中間的豎斷開了,但因爲「字根最少」的優先級大於「筆畫斷開」,我們選擇只有兩根的「千黑」。
字根取大
字根取大,指的是按照筆順拆字時:
- 讓完全符合筆順的部件儘可能地大。也就是説,只要其中某個字根多寫一筆仍然符合筆順,就多寫一筆。
- 讓首筆靠前的字根儘可能地大。
- 讓非歪斜根儘可能地大。
「取大原則」,按定義,是一個兜底原則。它保證了最終只有一個候選方案能够勝出。一般而言,上述兩條中的第二條比較常見。
比如:
- 「井」拆成「二{介下}」,而不拆成「一廾」,因爲「字根取大」原則。讓靠前的字根的筆劃數儘量地多,這裏,「二」的筆畫數大於「一」。
但有的時候,第一條也會被用到。這裏以「妻」字舉例。
「妻」可以拆分爲「十彐女」「キコ女」甚至「龶乛女」。我們按順序檢查規則,發現:
- 三者都是三根。
- 「キコ女」的拆法中,前兩根都不符合筆順;但「十彐女」「龶乛女」的拆法中,有兩根符合筆順,淘汰「キコ女」。
- 「十彐女」「龶乛女」都存在相交。
- 結構合理都不適用。
- 我們最後檢查「字根取大」規則。我們發現,兩個字根是穿插書寫的。根據規則,只要其中某個字根多寫一筆仍然符合筆順,就多寫一筆。「十彐女」可以保證合筆順的字根寫了三筆。而「龶乛女」中,符合筆順的字根只有一筆。因此「十彐女」勝出。
第三條只有一種場合會出現,那就是部分字根有豎變撇的附屬根。如:「千」字根的「丨」變成「丿」,「干」字根的「丨」變成「丿」,稱爲「歪斜根」。
比如:
- 「失」拆「丿夫」而不拆「牛乀」,因爲「牛」的一豎是撇。故而對「夫」取大。
- 「井」拆「二{介下}」而不拆「キ丨」,因爲「キ」的一豎是撇。故而對「{介下}」取大。
- 「緩」拆「糹爪干又」而不拆「糹爪二夂」。雖然前者「干」是豎是撇,但後者出現了「字根相交」。根據規則優先級,「字根相交」低於「字根相連」,故而拆爲「糹爪干又」。
拆字舉例
實際拆字時,如果你感覺拆分方法不唯一,那麽可以用以下方法找到最優解:
- 列出所有可能的候選拆分方案。
- 依照「少>順>散>連>交>斷>理>大」的規則順序,依次比較各個候選拆分。
- 如果所有的候選拆分都不滿足本條規則,則進入下條規則。
- 如果部分的候選拆分滿足本條規則,則該部分的候選拆分方案進入下條規則。
- 直到只有一個候選拆分方案勝出。
以下通過部分例字來説明拆分規則:
一例:亷。候選拆分「亠丷厂彐〢八」和「立丿彐〢八」。
- 「亠丷厂彐〢八」六根,「立丿彐〢八」五根。後者字根最少,直接勝出。
又一例:重。候選拆分「丿車一」和「千里」。
- 「千里」是兩根,滿足「字根最少」,雖然中間一豎斷開,但依然勝出。
又一例:盡。候選拆分「コ土灬皿」「乛龶灬皿」「彐丄灬皿」「{聿上}一灬皿」四種。
- 都是四根,同時滿足「字根最少」。
- 「コ土灬皿」不符合筆順,其他三者都完全符合筆順。淘汰「コ土灬皿」。
- 上半部分都出現字根相交情况。
- 都不適用「結構合理」。
- 進入兜底規則「字根取大」。根據規則,只要其中某個字根多寫一筆仍然符合筆順,就多寫一筆。觀察到,「{聿上}一灬皿」的第一根一共寫了四筆,故而勝出。
漢字編碼規則
多字根字編碼
學習了「宇浩」的拆字規則後,我們可以將任何一個漢字拆成唯一的字根組合。最後一步,便是把字根轉爲「宇浩」編碼。
單字的編碼一般是由4個字母構成。部分字根字爲3個字母。
在「宇浩」中,無論一個字能拆成幾個字根,我們只關心其中的四個根,分别是:
- 第一根:首根
- 第二根:二根
- 第三根:三根
- 倒數第一根:末根
這同五筆輸入法相同,和鄭碼、徐碼不同。
單字編碼規則如下:
- 依次取一、二、三、末根大碼。
- 不足四碼時,補上末根小碼。
- 仍然不足四碼時,補上首根小碼。
最後一條,只有雙根字中會出現。第二條,只有三根字中會出現。
舉例説明:
- 「嫩」字拆成
女Cn 木Fv 口Lv 攵Eh
四根。分别對應了首根、二根、三根、末根。我們直接取四個字根的大碼CFLE
卽可出字。- 「整」字拆成
木Fv 口Lv 攵Eh 一Fi 止Ni
五根。我們只取首根、二根、三根、末根,也就是木Fv 口Lv 攵Eh 止Ni
的大碼,輸入FLEN
卽可出字。- 「算」字拆成
𥫗Qk 目Mu 廾Sj
,只有三根,所以我們取全部根,也就是𥫗Qk 目Mf 廾Sj
的大碼,卽QMS
。此時,注意到不足四碼,故而補上最末根的小碼j
。輸入QMSj
卽可出字。- 「织」字拆成
纟Vs 口Lv 八Ti
,只有三根,所以我們取全部根大碼,也就是VLT
。此時,注意到不足四碼,故而補上最末根的小碼i
。輸入VLTi
卽可出字。- 「认」字拆成
讠人
,只有兩根,所以我們取全部根,也就是讠Oa 人Te
的大碼,卽OT
。此時,注意到不足四碼,故而補上最末根的小碼e
。注意到仍然不足四碼,於是再添上首根的小碼a
。輸入OTea
卽可出字。- 「好」字拆成
女子
,只有兩根,所以我們取全部根,也就是女Cn 子Vk
的大碼,卽CV
。此時,注意到不足四碼,故而補上最末根的小碼k
。注意到仍然不足四碼,於是再添上首根的小碼n
。輸入CVkn
卽可出字。
末尾添加首根的小碼,只是爲了補齊四碼的作用,只有在雙根字中纔會出現。它不需要像徐碼和鄭碼一樣,不管幾碼字,都要判斷首根的性質以決定取不取倒數第二根。所以思維負擔顯著降低。
單字根字編碼
很多的字根因爲字形近似,被歸爲一個字根,由其中一個常用字爲統攝,稱爲「代表根」,其它的字根爲「被代表根」。
- 代表字根,全碼爲三碼:大碼+小碼+小碼
- 附屬字根,全碼爲四碼:大碼+小碼+小碼+小碼
比如:
- 「木」字是字根字,輸入
Fvv
卽可出字。- 「骨」字是字根字,輸入
Mgg
卽可出字。
舉例:
- 「長」「镸」「髟」被歸爲一個字根,由「長」統攝,所以「長」的編碼爲
Haa
,「镸」的編碼爲Haaa
,「髟」的編碼爲Haaa
。- 「户」「戶」「戸」被歸爲一個字根,由「户」統攝,所以「戶」的編碼爲
Iee
,「戶」的編碼爲「Ieee」,「戸」的編碼爲「Ieee」。- 「月」「勹」「⺼」被歸爲一個字根,由「月」統攝,所以「月」的編碼爲「Wyy」,「勹」的編碼爲「Wyyy」,「⺼」的編碼爲「Wyyy」。
注意到,字根字編碼規則和單字編碼的規則是一致的: 假設字根大碼爲
A
,小碼爲a
。 首先,依次取一、二、三、末根大碼,故取A
。 接着,不足四碼時,補上末根小碼,故取a
。 最後,仍然不足四碼時,補上首根小碼。最終編碼爲故取Aaa
。
Q:字根字重複小碼的原因是什麽?
A:首先是爲了讓字根編碼規則和單字編碼規則一致。其次,如果字根字是兩碼,但字根本身比較罕用,那麽會浪費一個寶貴的二級簡碼碼位。很多輸入法會將另一個常用字設置成二簡,而讓字根字選重,或者通過其他方式爲字根字增加一碼。這個方式實際上卻在事實上形成了新的重碼。宇浩輸入法直接在根源上解決這個問題。
空格鍵的使用
在很多輸入法軟件中,空格鍵(以下用_
表示)用來上屏首選字。
根據以上的學習内容,我們發現:「宇浩」的編碼最長不超過4個字母。由於這個特性,我們在輸入完編碼後,不一定需要按空格鍵將字打上屏幕。
空格鍵只在以下情况需要使用:
- 一個字的編碼低於4位,需要按空格鍵上屏首選。比如「人」字,需要按
Te_
上屏。 - 一個字的編碼等於4位,且後面没有其他的字需要輸入,則需要按空格鍵上屏首選。
以下情况,不需要使用空格鍵:
- 一個字的編碼等於4位,且有後續字符等待輸入。我們不需要按空格鍵。只要直接輸入下一個字的首碼,這個字就會自動上屏。我們稱之爲「五碼頂屏」。例如:我們打「淋雨」二字,「淋」字的編碼是
〔氵木木・IFFv〕
。輸入v
後,我們直接輸入「雨」字的編碼〔雨・Dyy〕
,則「淋」字會自動上屏。
簡碼設置
學完了「宇浩」的單字編碼,我們發現,「宇浩」的單字碼長一般是2到4位之間。不少常用的字,碼長是4位,比如字頻第一的「的」字,編碼爲EWOd
。
一種科學的輸入策略,應該使得常用字的碼長更低,從而加快輸入的速度。試想,如果輸入「的」字,每次都要按EWOd
四下按鍵,真是太浪費時間了。
形碼對此的優化方式,就是設置簡碼,也就是給部分漢字設置更短的編碼:比如,我們在輸入「的」時,只要按上一個字母和空格鍵,就能實現輸入。
在「宇浩」中,簡碼的設置十分科學,使得每一個字簡碼和全碼的編碼規則保持一致。當然,這也和文本環境有關。比如簡體和繁體環境下,字頻不同,簡碼也不相同。這裏主要介紹的是基於簡體現代文字頻的簡碼設置。
一級簡碼字
一級簡碼字,又稱一簡字,指的是用一個字母爲編碼實現輸入的漢字。「宇浩」中,有25個高頻漢字設置爲一簡字,只要按下一個字母,加上空格,卽可上屏。在我們的日常交流中,一簡字大約佔據了25%的使用頻率。只需要按兩個按鍵,可以有效提升輸入速度。
一簡字的編碼,就是該字全碼的第一個字母。
比如:
- 「我」全碼爲
〔丿扌戈・QAGg〕
,一級簡碼爲Q
。輸入Q_
卽可實現上屏。- 「的」全碼爲
〔白{⼓同月}丶・EWOd〕
,一級簡碼爲E
。輸入E_
卽可實現上屏。
從A到Y排列,一級簡碼字分别是:
可給好不的一大到没是上中還回就之我後在人着了然出心
在字根圖中,一簡字就是每個字母方框的左上角的漢字。
宇浩的字根設計,使得最高頻的漢字分佈在最容易按的鍵上,比如:「的」在E
上,「一」在F
上,「了」在V
上,「没」在I
上,「不」在D
上,「上」在K
上。
二級簡碼字
二級簡碼字,又稱二簡字,指的是用兩個字母爲編碼實現輸入的漢字。「宇浩」中,有676個高頻漢字設置爲二簡字,只要按下兩個字母,加上空格,卽可上屏。
二簡字的編碼,就是該字全碼的前兩個字母。
比如:
- 「起」全碼爲
〔走己・DBjk〕
,二級簡碼爲DB
。輸入DB_
卽可實現上屏。- 「把」全碼爲
〔扌巴・ACbo〕
,二級簡碼爲AC
。輸入AC_
卽可實現上屏。
三級簡碼字
三級簡碼字,又稱三簡字,指的是用三個字母爲編碼實現輸入的漢字,只要按下三個字母,加上空格,卽可上屏。
三簡字的編碼,就是該字全碼的前三個字母。這裏不再舉例。
注意到,三簡字需要按四個按鍵才能上屏,同輸入單字全碼按鍵數一樣,因此,三簡字的設置主要爲了騰出四碼碼位,實現避重。
三級簡碼字,可在打字時進行熟悉,不需要特别去記憶。
詞語編碼規則
除了設置簡碼,「宇浩」還將常用的詞語,也編成4個字母的編碼。這樣可以降低每一個字的平均碼長,提高打字速度。
「宇浩」的詞語編碼規則,分爲三種情况。
兩字詞
兩字詞,取每個字全碼的前兩碼卽可。
比如:
- 「人生」:「人」的編碼爲
〔人・Tee〕
,「生」的編碼爲〔生・Wgg〕
。因此,「人生」的編碼爲〔人生・TeWg〕
。- 「事情」:「事」的編碼爲
〔{于下}口彐・ALXx〕
,「情」的編碼爲〔心龶月・YHWy〕
。因此,「事情」的編碼爲〔{于下}口心龶・ALYH〕
。
三字詞
三字詞,取前兩字的第一碼,和第三個字的前兩碼卽可。
比如:
- 「泡泡糖」:「泡」的編碼爲
〔氵月巳・IWXs〕
,「糖」的編碼爲〔米广又古・PUBD〕
。因此,「泡泡糖」的編碼爲〔氵氵米广・IIPU〕
。- 「星期三」:「星」的編碼爲
〔日生・JWgr〕
,「期」的編碼爲〔其月・DWyj〕
,「三」的編碼爲〔三・Faa〕
。因此,「星期三」的編碼爲〔日其三・JDFa〕
。
四字詞及以上
四字詞及以上,取前三字的第一碼,和最後一個字的第一碼卽可。
比如:
- 「狐假虎威」:「狐」的編碼爲
〔犭瓜・RQuq〕
,「假」的編碼爲〔亻尸二又・EBSB〕
,「虎」的編碼爲〔虎・Muu〕
,「威」的編碼爲〔戊一女・DFCn〕
。因此,「狐假虎威」的編碼爲〔犭亻虎戊・REMD〕
。- 「中華人民共和國」:這是一個七字詞,所以我們只看前三字和最後一字「中」、「華」、「人」、「國」。「中」的編碼爲
〔口丨・LMsv〕
,「華」的編碼爲〔艹干龷・SHSj〕
,「人」的編碼爲〔人・Tee〕
,「國」的編碼爲〔囗戈口一丶・NGLF〕
。因此,「中華人民共和國」的編碼爲〔口艹人囗・LETN〕
。
詞語輸入的優缺點
用詞語的方式進行輸入,優點在於降低了每個字的平均碼長。
試想「我們今天一起喫飯」這個句子。
- 如果打單字全碼的話,需要按
QAGgEKneTOViFGdiFii_DBjkLDBGYEBu
。- 如果打單字簡碼的話,需要按
Q_EK_TO_FG_F_DB_LDB_YEBu
。- 如果打詞語全碼的話,需要按
QAEKTOFGFiDBLDYE
。可以看到,詞語全碼有效降低了按鍵的次數。
但是,詞語輸入也有其缺點,最主要的缺點包括:
- 如果詞庫太小,不是每個詞語都在詞庫中。很多時候還是需要打單字。
- 如果詞庫太大,則會出現大量的重碼,需要進行選擇,破壞了形碼輸入的流暢性。
- 你輸入一個詞語,卻發現它並不在詞庫中,就需要删除後重新輸入單字。讓人感覺不悦。
- 人工分詞需要消耗額外的注意力。
因此,精簡詞庫,熟悉詞庫,打單字和打詞語相結合,是形碼高手們的修煉之路。
進階討論
字形選取的標準
漢字具有多態性。同一個漢字,在不同的標準、不同的字體下,存在一定的差别。有些字形上的差别,通過 Unicode 的離散來實現。比如「户」「户」「戸」三字,在 Unicode 裏被安排在了不同的碼位上,故而實現了分離。但是很多漢字的不同字形,卻共用 Unicode 碼位(這其實是 CJK 的初衷),那麽這個字到底應該依照哪個標準來拆分,便成了問題。
宇浩輸入法的規定是:
- 一個字只有一種標準拆法,字形標準取自:The Unicode Standard, Version 15.0。各地區優先級降序爲: GTHJKV,卽陸、臺、港、日、韓、越。也就是説,如果存在大陸提交的標準,就依照大陸標準。如果大陸没有提交標準,就按照臺灣標準。依此類推。
- 常用傳統漢字,可以有多種兼容拆法,目的是兼臺灣、香港、大陸古籍的用字標準。比如「起=走己」
DBjk
(大陸標準)和「起=走巳」DCkk
(臺灣標準)兼收。
宇浩輸入法的筆順選取,依照大陸標準《GF 3003-1999 GB13000.1字符集漢字字序(筆畫序)規範》。同時,也兼容臺灣標準的筆順。比如「變=言糹糹夂」UBBE
(大陸標準)和「變=糹言糹夂」BUBE
(臺灣標準)兼收。
字根的内在屬性
上面我們提到了宇浩輸入法拆字規則的優先級。其實,在「字根最少」之上,還有一個隱藏的原則,也就是:字根的内在屬性。
何爲字根的内置屬性?其實就是指某一個字根區别於另一個字根的内在特點。
用例子説明:「吉」拆成「士口」而不是「土口」,這是因爲「土」的下面一筆更長,而「士」的下面一筆更短。這是區别兩個字根的本質原因和内在屬性。
「内在屬性」可以解釋爲什麽有些字這樣拆而不是那樣拆,有些字爲什麽看上去違反了「字根最少」的原則。
用例子説明:「敝」拆爲「丷巾八攵」而非「氺巾攵」,這看似違反了「字根最少」原則,但其實没有。注意到,「敝」字左下的筆畫是撇不是提;在「氺」中,左下角的筆畫是提不是撇。故而,「敝」字裏並不存在「氺」字根。正因爲如此,我們取四根「丷巾八攵」而非三根「氺巾攵」。
在這個章節,我們就詳細討論字根的内在屬性,從而讓某些字的拆分原因更加明確。
字根的連續性
有一部分字根,本身存在離散的部件,比如「戈」字右上的點、「犬」字的右上的點、「三」字的三個橫等等。爲了保證拆字的直觀,保證檢字(尤其是大字集下)的便捷性,我們需要對字根的連續性做出要求,並將它認定爲字根的内在屬性。
字根的連續性定義如下:
一個字根的離散部件,不可被全包圍結構或半包圍結構分割。被分割的兩個部件不得視爲一個字根。
例如:
- 「爲」字的兩點不可以被視爲字根「兩點」,因爲它們被半包圍結構分割。
- 「曵」字不拆「囗戈」而拆成「電丿丶」,因爲「戈」字右上方的點被全包圍結構分割。
口囗之辨
口(音kǒu
),編碼爲Lv
,是個主根。囗(音wéi
),編碼爲Nw
,是個副根。這兩個根如何區分?
答案是,如果方框裏有完整的筆畫,用「囗」Nw
。否則一律用「口」Lv
。
例如:
- 「國」字中,有完整的筆畫,故而必須用「囗」
Nw
。- 「中」字中,雖然「⼁」穿「口」而過,但並未被完全包含在「口」中。由於「口」中没有完整的字根,故而用「口」
Lv
。
此規定也適用於另外兩個包含「口」的字根:
- 「古」下的「口」中如果包含完整的筆畫,應該拆如「十囗」。例如:「鄙」左下方的「口」中有「口」,故而應該拆成「口十囗口阝」。
- 「合」下的「口」中如果包含完整的筆畫,應該拆如「人一囗」。例如:「會」中間的「口」中有「小」,故而應該拆成「人一𫩏丷日」。
日曰之辨
不少輸入法對與「日」「曰」兩字的區分,比較複雜。大槪有兩種情况:
- 有些是基於形狀的,凡是長大於高的都爲「曰」,凡是長短於高的都爲「日」。但這個方法會跟隨着字體的不同而不同,有時候不合字源,也不統一。例如:「書」字源於「聿者」,徐碼中「書」下爲「曰」,但「者」下爲「日」,取碼不統一。「曹」古字爲「東東口」。在徐碼中,「曹」下爲「日」,不符合字源。
- 另外一種區分方法是基於字源。也就是説:凡是在古文中作「口」形,之後隸變爲「曰」形或「甘」形的字,都作「曰」。但這個方法對方一般的使用者難度太大,且分析字源會有疏漏之處,不應用於輸入法。
我們必須注意到,在漢字中,存在「日曰」對立的字形,只有三組,分别爲:「日曰」、「汨汩」、「曶㫚」。在其他的情况下,不存在對立,也就不存在混淆問題。
因此,我基於實用主義原則,對這兩個字根不多加以區分,而採取更簡單的方法。卽:除了上述三組對立情况外,全部取「日」根。換句話説,「曰」根只需要在對立情况下纔會使用,包括:「曰」「汩」「㫚」三個字。
這樣一來,可以顯著降低使用者的記憶和學習負擔。
勹𠂊之辨
「旬」的外框「勹」,同「敖」左下的「𠂊」都是撇加橫折鉤。宇浩輸入法不做區分,都視爲「月」的附屬根Wy
。
點
這裏對「點」的拆分作出解釋:
- 單點和捺在
Od
。 - 相重疊的兩點,卽「头」「冬」中的部分,同「二」
Sr
。 - 左對點「冫」和右對點「飞右」,同「二」
Sr
。故而「兆」拆爲「儿二二」。 - 下對點「八」在
Td
。 - 上對點「丷」「䒑」「⺦」「リ」在
Ue
。 - 所有三點都在
Is
。 - 所有四點都在
Uo
。
「为」「卵」等字的兩點和「冬」下的兩點不同,相隔太遠,且被半包圍或全包圍分割,故而不認定爲「兩點」。
人八入之辨
「人」「八」「入」三字易混,這裏做出區分:
- 凡左撇不低於右捺,作「人」
Te
。 - 凡左撇低於右捺,作「入」
Ru
。 - 凡左撇右捺分離,或者中間被其他筆畫隔開,作「八」
Ti
。
字根包夾
不少字根中存在若干分散的部件,比如:
- 「二」和「三」中的橫畫是分離的。
- 「合」分爲了「一」「一」「口」三個部分。
- 「儿」分爲了「丿」「乚」兩個部分。
這給了它們包夾其他字根的可能。如「亘」可看成「二」包夾「日」。
爲了防止拆分不直觀,我們做出規定,一個字根可以橫向包夾,但不能縱向包夾,例如:
- 卿 = 卯彐厶
- 胤 = 儿幺月
- 亘 = 一日一
- 僵 = 亻一田一田一
這是因爲,漢字的左右對稱多於上下對稱。左右包夾是可預測的,但上下包夾往往不可預測,必須要觀察到最下方。比如,某些輸入法設置了「衣」字根,但「亠」和「𧘇」的出現並不總是成對的,必須看到最下方纔能正確判斷。
腳註
-
當然,漢字不是完全可以量化的,不同字形下,也會出現不同的拆分可能。除了良好的定義外,有時候比例原則也很重要。尤其在大字集上,追求單一拆分方法會扭曲漢字直觀性,不能兼顧不同字形,讓使用者需要大量嘗試才能找到想要的字,這違背了大字集檢字的初衷。因此,對於大字集,我也會設置兼容拆分和容錯碼。 ↩