倉頡輸入法/取碼原則

 基本取碼 倉頡輸入法
取碼原則
例外字 

漢字有時會有兩種或以上取碼方式,因此倉頡輸入法製訂了一些取碼原則,以決定「正確且唯一」的編碼,如下:

  • 完整原則:取碼應反映字形特徵且盡量精簡。[1]
    • 精簡原則:選擇碼數最少的取碼方式。
    • 先繁後簡原則:碼數已最少時,先取大字根,後取小字根。
    • 字形特徵原則:取碼時必須盡量保留字形特徵,包括——[2]
      • 區塊分則:取碼時優先以「區塊」方式,在字根相接處分割。
      • 轉角分則:碼數已最少時,優先選擇能保留筆畫轉角的字根。
      • 對稱分則:對上下對稱、左右對稱的字形,盡量以對稱的方式分拆,可以突破「轉角分則」。
      • 跨越分則:為減少碼數及反映字形特徵,字根在某些情況可相互跨越。
  • 省略原則:漢字分割後,各部分取碼時皆不得超出應取碼數的限制。
    • 局部省略:先假定全取,再略去超出限定碼數的字碼。
    • 包含省略:取字首、字身、次字首或次字身的最後一碼時,省略包含在內的部分。

完整原則

編輯

完整原則要求:取碼應儘可能涵蓋完整字形、保留字形特徵、且避免增加碼數。

此原則較抽象,可分爲以下細則:

精簡原則

編輯

精簡原則是指,當一個字有多種取碼方式時,選擇碼數最少的取法。此原則之用意在於,有覆蓋面較大的字根,避免細分成更小字根,以提高打字效率,及避免把字形分解得太零碎。[3]

例如「」字,取碼「十十十」()不如「手十」()精簡,故應取後者。

 

又如「」字,取碼「卜竹女人」()不如「卜竹女」(),故應取後者。

 

以下為更多例字:

例字 圖解 正確取碼 錯誤取碼
十一
日( 一竹日(
山( 一竹山(
一( 十弓一(
廿十( 金一十(
口( 竹尸口(
月一( 戈月月一(
土( 戈一土(
廿金( 廿一金(
卜人( 十一卜人(

注意:套用精簡原則時,不可跨越字首與字身或次字首與次字身的分界。例如「」字,「」是字首,「」是字身,取碼「廿・一廿十」()。若把字首連同字身的第一筆一起取「」而作「廿廿十」(),就不正確。

先繁後簡原則

編輯

先繁後簡原則是指,當一個字有多種取碼方式碼數相等時,先取較繁複、涵蓋面較大的字根,再取較簡單、涵蓋面較小的字根[4]

例如「」字,取「十手」()或取「手十」()都符合精簡原則,但根據本原則,應先取涵蓋面大的「」,故應取後者。

 

又如「」字,取「戈一女」()或取「卜竹女」()都符合精簡原則,但根據本原則,應先取涵蓋面大的「」,故應取後者。

 

以下為更多例字:

例字 圖解 正確取碼 錯誤取碼
手一月( 十土月(
廿中手一 廿中十土
卜女 戈尸
手山 十心
一尸竹人( 一心竹人(
土竹山( 十一山(
卜竹尸( 戈一尸(
廿十 廿手
竹十廿一 竹十廿土
廿中手人 廿中十大

先繁後簡原則是優先權較低的原則。以上各例在套用先繁後簡原則時並未造成取碼數增加;而如果先繁後簡勢必增加取碼數,則應以精簡碼數優先。如「乍」字,三代倉頡取「竹屍」不取「人卜卜」。(五代倉頡取「人屍」不取「竹屍」)

字形特徵原則

編輯

字形特徵原則是指,取碼時必須盡量保留字形特徵。因為保留字形特徵較符合視覺辨識的原理,且更能區別形似漢字。[5]

此原則的具體細節大致可歸納為以下幾項:[2]

區塊分則

編輯

一、取碼時,優先以「區塊」的方式,在字根的相接處分割,避免字根互相跨越。[6]

例如「」字應在相接處分割作「竹手人」(),而非依筆順取「人大」(),否則會導致「人」()和「大」()互相跨越。

 

此分則優先權極高,先於前述之精簡原則及先繁後簡原則。例如「失」取碼「人大」比取碼「竹手人」更符合精簡原則,但由於前者不符合此分則的要求,因而取後者。

以下是更多例子:

例字
正確取碼 口山( 口女心( 月山( 竹手山( 戈十水(
錯誤取碼 尸山( 尸女心( 月一( 竹一心( 十水戈(
例字
正確取碼 火木( 火手( 一火十( 竹火木( 人十山(
錯誤取碼 金木( 金手( 一金十( 竹金木( 人一山(
例字
正確取碼 心木( 心廿( 十山( 木大( 中月大(
錯誤取碼 木山( 廿女( 一山( 弓大( 月大(
例字
正確取碼 十大日( 十大( 卜人弓大( 心大大( 竹田大大(
錯誤取碼 土竹日( 大人( 卜人弓人( 心竹竹戈( 竹田竹大(
例字
正確取碼 中田( 田中( 中田中( 十田十( 中田心(
錯誤取碼 月土( 日中( 日中( 一日十( 日心(
例字
正確取碼 一中田大( 大中田山( 十中大( 十中中弓( 中田中女([7]
錯誤取碼 一日大( 大日山( 一口大( 一口尸木(
例字
正確取碼 竹水( 竹尸( 竹月口( 竹手( 竹手一(
錯誤取碼 弓人( 竹尸([8] 人尸口( 人十( 人土(

有些字根會埋在其他字根的凹陷位置,如「」字在「」的凹陷處有「」;「」字在「」的凹陷處有「」;「」字在「」的凹陷處有「」;「」字在「」的凹陷處有「」字根;「」字在「」的凹陷處有「」字根;甚至像「」、「」、「」這類外框更專門在內部收藏其他字根。由於「土」、「工」、「王」、「」、「」等形狀並未與其他字根互相跨越,因而也都符合區塊分則。

轉角分則

編輯

二、當一個字有多種取碼方式碼數相等時,優先選擇能保留筆畫轉角的字根[9]

例如「」字,可以取碼「大山」()或「大弓」(),由於後者保留了筆畫轉角,故應取後者。

此分則優先權高於先繁後簡原則。例如「九」取碼「大山」比取碼「大弓」更符合先繁後簡原則,但由於前者不符合此分則的要求,因而取後者。

以下為更多例字:

例字
正確取碼 戈弓水( 戈弓人( 戈弓火( 弓大(
錯誤取碼 戈一水([10] 卜竹人([11] 卜竹火([12] 一大(
例字
正確取碼 大尸( 大弓( 戈大弓火( 竹弓(
錯誤取碼 大弓( 大山( 戈大竹火( 一山(
例字
正確取碼 口女弓大( 一女大山( 一女木竹( 一一女尸(
錯誤取碼 口中弓大(
口女中大(
一中大山( 一中木竹( 一一中尸(

轉角分則是優先權較低的原則。以上各例在套用轉角分則時並未造成取碼數增加;而如果保留筆畫轉角勢必增加取碼數,則應以精簡碼數優先。如以下各字:

例字
正確取碼 卜尸火( 卜尸一( 手弓戈( 大木(
錯誤取碼 卜女尸火( 卜女尸一( 手女弓戈( 大女木(

對於單筆畫獨立成字時,可以突破「轉角分則」。如「𠃊」獨立成字時取「中一」不取「中女」或「女一」,「𠃍」獨立成字時取「一中」不取「一弓」或「弓中」。

對稱分則

編輯

三、對於上下對稱、左右對稱的整體字字形,盡量以對稱的方式,使其上下或左右的字根分拆成鏡像。

倉頡取字形特徵,是以視覺辨析區塊作準。雖然一般情況下,像「吳」這些字,不要在轉角處分割。但碰上一些形狀對稱、線條平直而凹凸起伏的字,例如「亞、凹、凸、𠕄、𦣝、𦣞、𡆵」等整體字,及「雋的字身」等形狀,大家眼睛會更在意它的對稱起伏形狀,更傾向把部件對稱地分拆。在這個情況下,就可以突破「轉角分則」不受其限。例如:

例字
正確取碼 一中中一 () 尸尸山 () 月尸尸 () 尸尸月 ()
錯誤取碼 一中女廿 () 月月山山 () 月女尸尸 () 月月山山 ()
例字
正確取碼 尸中中中 () 尸中口中 () 田中中中 () 中一山尸 ()
錯誤取碼 尸女中中 () 田中女中 () 中弓中尸 ()

跨越分則

編輯

四、為減少碼數及反映字形特徵,在某些情況下,可允許字根相互跨越。[13]

如前「區塊分則」所述,取碼時原則上應避免讓字根互相重疊。然而對於一些封閉類字形,如……等,書寫時常會有筆畫穿過,若要求其他字根不得跨越這些字形,只能切出大量瑣碎且無法反映字形特徵的筆畫,如此便違反了「完整原則」的本意。故此時允許其他字根跨越這些字形。如以下例字:

例字
正確取碼 十月( 月十月( 戈十月( 十戈月戈( 戈中月(
錯誤取碼 十月中( 月十月中( 戈十月手( 戈中月手(
例字
正確取碼 中月( 中月山( 人月土( 中中弓( 金弓中竹(
錯誤取碼 中月中( 中月中山(
例字
正確取碼 人月( 人月人( 一人月( 土月( 一土月(
例字
正確取碼 一中月人( 一中月卜( 一金田( 一人人月( 一山月(
例字
正確取碼 月尸木( 尸大口( 月卜( 竹月卜戈( 田卜戈(
例字
正確取碼 廿田( 廿月金( 田廿十( 卜戈廿木( 廿一廿十(

※「」、「」、「」、「」、「」、「」、「」、「」幾個字形依其定義禁止其它字根跨越其封閉區域,只能按區塊分則於周邊切斷(或改取其他合適字根)。[14]詳見〈輔助字形〉一節及區塊分則中「」等字例。

除上述封閉類字形以外,一個罕見允許字根跨越的情況是在六代(蒼頡檢字法)把「乂」取碼作「竹人」(),「𫠣」取碼作「大女屍金」,這主要是因為輔助字形單獨使用時必須分割取碼所致。(此例為六代取碼,三代及五代仍取「大」)

請記得完整原則的本意是兼顧字形特徵及取碼精簡,若無法達到這些效果,便不應套用此分則。

各細則的優先權

編輯

由於有些細則需要其他細則的觀念,以上介紹安排了一定順序,但統整而言,若細則彼此衝突,其優先順序是:跨越分則 > 區塊分則 > 精簡原則 > 轉角分則 > 先繁後簡原則。

但是官方已經在「步的六代編碼問題」的回覆中[15]明確說了「先繁後簡原則優先於精簡原則」,因此這裏寫的「各細則優先權」是否正確仍有待觀察。

省略原則

編輯

如〈基本取碼〉一章所述,漢字分割後各部分皆規範了應取碼數,當碼數超出限制,就要根據此原則省略其中幾碼。

部分省略

編輯

若漢字的某部份碼數過多超出取碼限制,應按原則省略其中幾碼,這就是「部分省略」(或稱「局部省略」)。

例如鰉→魚・白・王→弓田火・竹日・一土→限取二・二・一碼→弓火・竹日・土

「鰉」字的「魚」是字首,「皇」是字身,字身還可再分成次字首「白」和次字身「王」。字首「魚」全碼爲「弓田火」,但字首限取2碼,故只取首碼「弓」及尾碼「火」。次字首「白」全碼爲「竹日」,次字身「王」全碼爲「一土」。因次字首為2碼以上,按規則次字首取第一碼「竹」及尾碼「日」,次字身取尾碼「土」。總此「鰉」最終取碼爲「弓火・竹日・土」。

部分省略尚有一關鍵在於:先假定完整取碼,而後按規則省去中間的編碼;而非直接跳到字形的尾部取碼。因此根據「先繁後簡原則」,前面應取涵蓋較廣的字根,而尾碼應取涵蓋較少的字根(可用「後簡原則」的方式記憶)。

如以下諸例。取碼中的紅字,是初學者容易忘記「後簡」原則而取錯的碼:

例字 圖解 正確取碼 錯誤取碼 說明
廿・大尸( 廿・大尸( 不作「土」,因字首「堇」爲「廿中手」()而非「廿中十」()。
人・廿中 人・廿中 不作「土」,因字身「堇」爲「廿中手」()而非「廿中十」()。
廿・日女( 廿・日女( 不作「大」,因字首「」爲「廿中手」()而非「廿中十」()。
水・廿中 水・廿中 不作「大」,因字身「」爲「廿中手」()而非「廿中十」()。
・弓中( ・弓中( 不作「土」,因字首「垂」爲「竹十廿」()而非「竹十廿」()。
月山・竹十 月山・竹十 不作「土」,因字身「垂」爲「竹十廿」()而非「竹十廿」()。
月・日・竹 月・日・竹 不作「土」,因次字身「生」爲「竹手」()而非「竹十」()。
・尸一・心( ・尸一・心( 不作「手」,因字首爲「手十手」()而非「手十十」()。
・一口廿( ・一口廿( 不作「手」,因字首爲「山手十」()而非「山手十」()。
卜・竹水・ 卜・竹水・ 不作「手」,因次字身「丰」爲「手」()而非「十」()。

包含省略

編輯

[16]等三面或四面的「外框」內常包含瑣碎的筆畫,為求易於辨識,特規定取整體字、字首、字身、次字首、次字身最後一碼時,省略在「外框」內的部分。這就是「包含省略」原則。[17]

以下是幾個與包含省略有關的例子:

例字 圖解 正確取碼 錯誤取碼 取碼說明
水・一金 水・一金 酒→水・一金田一()→ 限取二・三碼→水・一金(字身「一金田一」,取尾碼時省略「」包含的「一」,而取剩餘的「田」,不取「水・一金」)
・人大( ・人大(
・人大(
敏→人田卜戈・人大()→ 限取二・三碼→人・人大(字首「人田卜戈」,取尾碼時省略「」包含的「」(戈),而取剩餘的末碼「卜」,不取「人・人大」或「人・人大」;注意「」(卜)貫穿了「」,非被包含,故不省略)
卜口・卜心・ 卜口・卜心・ 謔→卜一一口・卜心・尸一()→限取二・二・一碼→卜口・卜心・(次字身的「」(一)突出「」,不適用包含省略,故按一般原則取尾碼「一」,不取「卜口・卜心・」)
田一・竹中人( ・竹中人( 爴→田戈口一・竹中人()→限取二・三碼→田一・竹中人(字首「田戈口一」,取末碼時若省略「囗」內的「或」(戈口一)將無碼可取,故不適用包含省略,按一般原則取尾碼「一」,不取「・竹中人」)

注意:包含省略不要求外框與內部字形相互分離。只要外框符合,整體字也可以適用包含省略。例如前面的「酉」、「母」都是整體字,而非「字首『』字身『一』」、「字首『』字身『丶』」的組合字;其他如「啇」、「禺」等字形亦然。「髙」字,三代取「戈屍中月」,五代取「卜屍中月」。

以下為更多例子:

例字
正確取碼 手・卜金 月・女女・ ・一女尸( 廿・日弓・ ・月山山(
錯誤取碼 手・卜金口( 月・女女・大( 竹木・一女尸( 廿・日弓・火( 尸中・月山山(
例字
正確取碼 ・尸一・一( 手・山・人 弓中・一・口 手・弓・大( ・山(
錯誤取碼 竹廿・尸一・一( 手・山・人口( 弓中・一・口中( 手・弓金・大( 月水・山(
例字
正確取碼 水・廿中 一一・月・心( ・尸竹・手( ・心口( ・心日(
錯誤取碼 水・廿中人( 一一・月戈・心( 弓土・尸竹・手( 弓戈・心口( 一戈・心日(
例字
正確取碼 ・一・一戈( 廿・田中 ・日女( 廿・戈一・ 月金・戈一・
錯誤取碼 一卜・一・一戈( 廿・田中戈( 卜人・日女( 廿・戈一・ 月金・戈一・

複雜的外框例字

編輯
例字
正確取碼 ・戈口( 廿廿・一女 水・日・心 ・月廿( 廿・日(
錯誤取碼 竹戈・戈口( 廿廿・一女戈( 水・日・心人( 弓水・月廿( 廿廿・日(
例字
正確取碼 ・人・田 廿・人・田 ・人・田 ・金口( 水・竹月
錯誤取碼 ・人・田 廿・人・田 ・人・田 ・金口(
・金口(
水・竹月

「工、土、王」等鑲嵌形空框例字

編輯

三代倉頡把鑲嵌在「」等形塊左右兩邊空框上的部件視爲被包含;五代倉頡則取消了本規則。

例字
(三代)
三代取碼 ・口口・ 火・一 火火・月・一 水・火火・ 水・金大・
例字
(五代)
五代取碼 ・口口・ 火・一 火火・月・一 水・火火・ 水・金大・

不適用包含省略的字形

編輯
例字 正確取碼 錯誤取碼 說明
竹田・尸一・ 竹田・尸一・ 「羽」部件的「」不視作三面包圍着的「外框」。其字形視作兩面包圍着的「外框」。
・卜土( ・卜土( 「馬」部件的「」不視作三面包圍着的「外框」。其字形視作兩面包圍着的「外框」。
・竹弓( ・竹弓( 「鳥」部件的「」不視作三面包圍着的「外框」。其字形視作兩面包圍着的「外框」。
竹日卜 竹日卜 「鳥」部件的「」不視作三面包圍着的「外框」。其字形視作兩面包圍着的「外框」。
火・田中・ 火・田中・ 「蜀」部件的「」不視作三面包圍着的「外框」。其字形視作兩面包圍着的「外框」。
廿・人大( 廿・人大( 「茍」部件的「」不視作三面包圍着的「外框」。其字形視作兩面包圍着的「外框」。
・月廿( ・月廿( 字首「成」部件的「戊」不視作三面包含的「外框」,其字形視作從「戈」、從部首以外的筆畫。
・心( ・心( 字首「咸」部件的「戊」不視作三面包含的「外框」,其字形視作從「戈」、從部首以外的筆畫。
・心( ・心( 字首「戚」部件的「戊」不視作三面包含的「外框」,其字形視作從「戈」、從部首以外的筆畫。
木・廿・日 木・廿・日 「闌」部件的「門」不視作三面包含的「外框」。其字形視作左右結構。
・火( ・火( 「丸」部件拆碼「大弓戈」,其「」視作在撇筆的左邊,故不算包含。
・人大( ・人大( 𦥯」底部的「冖」不視作三面包圍「外框」,與「冂」不同。[18]

附註

編輯
  1. 發明人朱邦復在《第五代倉頡輸入法手冊》對「完整原則」的說法是「若有兩個或兩個以上的符號都合於所需形狀時,應該取形狀較完整,能保留字形特徵的一個」。《標準倉頡第二代中文輸入法》及《倉頡第三代中文字母輸入法》將「取碼方法」分為「精簡原則」、「完整原則」(「若一個字有多種取法,而碼數又相等時,選擇取碼較完整的取法,也就是先取字形較繁複的碼,再取餘碼。」)、「字形特徵原則」。《倉頡第四代輸入法手冊》將「取碼方法」分為「取碼精簡」、「取碼完整」(「a・經過取碼精簡後,仍有超過一種取碼方法時,以字形不重疊為正確。b・避免在一筆過的轉角位置將字形分割開。」)、「先繁後簡」。本教科書「完整原則」按五代說法視為大原則,其下細節按三代手冊分類,其中的「完整原則」依其實際內涵比照四代手冊更名為「先繁後簡原則」。
  2. 2.0 2.1 字形特徵原則主要按1994年《(增訂版)倉頡第三代中文字母輸入法》第三章第三節〈字形特徵原則〉之敘述整理,各分則之名稱是為方便掌握而按其精神命名。詳見各部分之附註。
  3. 《倉頡第三代中文字母輸入法》〈第二節、取碼原則〉〈一、精簡原則〉:「當一個字有多種解碼可能時,以取碼數最少者為正確」
  4. 《倉頡第三代中文字母輸入法》〈第二節、取碼原則〉〈二、完整原則〉:「若一個字有多種取法,而碼數又相等時,選擇取碼較完整的取法,也就是先取字形較繁複的碼,再取餘碼。」
  5. 1984年《倉頡第三代中文字母輸入法》第二章第二節〈字形特徵原則〉:「除前述兩個原則外,還須注意是否最貼切地表示了該字母或輔助字形特徵及完整性。亦即取碼時,不能任意切割,而須保留字形的特徵。」
  6. 1994年《(增訂版)倉頡第三代中文字母輸入法》第三章第三節〈字形特徵原則〉:「所謂保持字形的特徵就是指取碼時儘量不取重疊之字形,適當的地方(即符合取形原則)就分割。」二代、五代手冊亦皆有提及「者」作為保留字形特徵之字例。
  7. 此爲三代倉頡取碼,五代改爲據分體字的字形,取「中中・女」,詳見三代與五代編碼差異的說明。
  8. 雖然所取的碼與正確取碼恰巧一樣,但這取碼方式仍是錯誤的。
  9. 1994年《(增訂版)倉頡第三代中文字母輸入法》第三章第三節〈字形特徵原則〉:「分割字形時,不在轉角處分割;而是取兩相鄰字形接連處,在同一直線上之形。……因為在轉角處分割不合書寫常理。」五代手冊亦提及「永」、「之」、「力」、「九」、「牙」等字作為保留字形特徵之字例。
  10. 「永」亦不可取碼作「卜水」(),因套用精簡原則時,不可跨越字首與字身或次字首與次字身的分界。
  11. 「之」亦不可取碼作「卜人」(),因「人」的輔助字形「」是用在如「豕」的末二筆,不適用於「之去亠」。
  12. 「⺭」亦不可取碼作「卜火」(),因「」的撇與豎起筆在同一位置,但「⺭」的撇長超過豎。
  13. 1994年《(增訂版)倉頡第三代中文字母輸入法》第三章第三節〈字形特徵原則〉註二提及:「雖然我們言明儘量不取重疊字形,但為了方便,也為了簡化取碼數,並不禁止縱向筆劃及橫向筆劃貫穿其他字形……」,並有「丑」、「內」、「巿」等例字。五代手冊亦提及「甫」、「弗」、「弟」、「冉」、「曲」、「庸」等字作為保留字形特徵之字例。
  14. 1994年《(增訂版)倉頡第三代中文字母輸入法》第三章第三節〈字形特徵原則〉註一提及:「遇到曰、田等完全封閉之字形,若有其他筆劃要貫穿其間時,必須分割,以保持字形的特徵及完整性。」
  15. 四、倉頡六代中,「步」的取法是「止中的的」而非「卜中火」,而後者相對來説比較精簡,為何不用後者呢?是因為「先繁後簡原則」優於「精簡原則」嗎?   回應:是「先繁後簡原則」優於「精簡原則」→原則總是要有先有後的,如果有矛盾,請告知。
  16. 「⻗」的「」能視作包含外框,因爲它不單以「」形作底部,其中豎與「」形相交的地方,剛好完整包含左、右的兩點。但如「冥」、「旁」、「安」等字,「」形明顯無法包含下方部件,故不適用包含省略原則。
  17. 《倉頡第四代輸入法手冊》:「整體字或組合字的字首、字身、次字首、次字身,若中間曾省略取碼,當取至最後一碼時,那字形被下列字形(……)所包圍的話,則不取那字形,取其前一碼,直至不被完全包圍為止。」《第五代倉頡輸入法手冊》:「選取最後一碼(『最後一碼』包括字首、次字首或字身的最後一碼)時,若遇到……字形,則省略包含在內的筆畫」。1994年版《倉頡第三代中文字母輸入法》:「由外而內選碼時,若碼數不足,則優先省略包含省略內在之碼。」各代對「外框」字形之定義稍有不一,此據各代手冊實際編碼字例補充。
  18. 「⻗」的「」能視作包含外框,因爲它不單以「」形作底部,其中豎與「」形相交的地方,剛好完整包含左、右的兩點。但如「冥」、「旁」、「安」等字,「」形明顯無法包含下方部件,故不適用包含省略原則。


 基本取碼 倉頡輸入法
取碼原則
例外字