進階討論
字形差異
漢字具有多態性。同一個漢字,在不同的標準、不同的字體下,存在一定的差別。有些字形上的差別,通過 Unicode 的離散來實現。比如户
戶
戸
三字,在 Unicode 裡被安排在了不同的碼位上,故而實現了分離。但是很多漢字的不同字形,卻共用 Unicode 碼位(這其實是 CJK 的初衷),那麽這個字到底應該依照哪個標準來拆分,便成了問題。
宇浩輸入法的規定是:
- 每個字都有一種標準拆法,字形標準取自:The Unicode Standard, Version 15.0。各地區優先級降序爲:GTHJKV,即陸、臺、港、日、韓、越。也就是説,如果存在大陸提交的標準,就依照大陸標準。如果大陸沒有提交標準,就按照臺灣標準。依此類推。
- 每個字都可能有若干兼容拆法,目的是兼容臺灣、香港、大陸古籍的字形標準。比如
起
=走己
(大陸標準)和起
=走巳
(臺灣標準)兼收。
宇浩輸入法的筆順選取,依照大陸標準《GF 3003-1999 GB13000.1 字符集漢字字序(筆畫序)規範》。同時,也兼容臺灣標準的筆順。
例
比如攀 = 木乂乂木手
(大陸標準)和攀 = 乂乂木木手
(臺灣標準)兼收。
比如與 = ⺽丂丄八
(大陸標準)和與 = 丂丿⺽一八
(臺灣標準)兼收。
書體差異
某些字根,即使在相同的規範下,也會楷體和宋體的不同而產生微小差異。這些差異往往會影響對於「散」「連」的判斷。我們主要以宋體爲準(也是 CJK 的書體)進行拆分,同時有以下考量。
散連認定
⼇
作頭時的丶一
,無論書體,一概視爲「散」。✅ ❌䒑
作頭時的丷一
是艹
的草化,無論書體,一概視爲「連」。✅ ❌龷
在字中時的艹一
,無論書體,一概視爲「連」。✅ ❌
局部筆順
指的是不被打斷的字根儘量多。這是爲了防止以下情況,一個字 A 有 X Y 兩個離散部分構成,X 部分拆 X1 X2,根少但不符合筆順。Y 部分,可以拆 Y1 Y2,符合筆順,且字根相交;或拆 Y3 Y4,不符合筆順,但字根分散。如果必須滿足整體符合筆順,則 Y 拆 Y1 Y2 雖然符合筆順,但由於 X 不符合筆順,A 整體依舊不符合筆順。那麽 Y 應該拆成 Y3 Y4,因爲能散不交。這樣一來,Y 作爲獨體字和 Y 作爲 A 的一部分時,拆分不一致,我們需要避免這種情況。這就是檢查局部筆順的原因。
字根的內在屬性
上面我們提到了宇浩輸入法拆字規則的優先級。其實,在「字根最少」之上,還有一個隱藏的原則,也就是:字根的內在屬性。
何爲字根的內在屬性?其實就是指某一個字根區別於另一個字根的內在特點。
例
吉
拆成士口
而不是土口
,周
拆成⺆土口
而不是⺆士口
,這是因爲土
的下面一筆更長,而士
的下面一筆更短。這是區別兩個字根的本質原因和內在屬性。
「內在屬性」可以解釋爲什麽有些字這樣拆而不是那樣拆,有些字爲什麽看上去違反了「字根最少」的原則。
例
敝
拆爲丷巾八攵
而非氺巾攵
,這看似違反了「字根最少」原則,但其實沒有。注意到,敝
字左下的筆畫是撇不是提;在氺
中,左下角的筆畫是提不是撇。故而,敝
字裡並不存在氺
字根。正因爲如此,我們取四根丷巾八攵
而非三根氺巾攵
。
在這個章節,我們就詳細討論字根的內在屬性,討論某些字根在宇浩拆分中被分離或者被合併的原因,從而讓某些字的拆分原因更加明確。
日曰之辨
不少輸入法對與日
曰
兩字的區分,比較複雜。大概有兩種情況:
- 有些是基於形狀的,凡是長大於高的都爲
曰
,凡是長短於高的都爲日
。但這個方法會跟隨着字體的不同而不同,有時候不合字源,也不統一。例如:書
字源於聿者
,曹
古字爲东东口
。 - 另外一種區分方法是基於字源。也就是説:凡是在古文中作
口
形,之後隸變爲曰
形或甘
形的字,都作曰
。但這個方法對方一般的使用者難度太大,且分析字源會有疏漏之處,不應用於輸入法。
我們必須注意到,在漢字中,存在日曰
對立的字形,只有三組,分別爲:日曰
、汨汩
、曶㫚
。在其他的情況下,不存在對立,也就不存在混淆問題。
因此,我基於實用主義原則,對這兩個字根不多加以區分,而採取更簡單的方法。即:除了上述三組對立情況外,全部取日
根。換句話説,曰
根只需要在對立情況下才會使用,即:曰
汩
㫚
三個字。
這樣一來,可以顯著降低使用者的記憶和學習負擔。
勹之辨
旬
的外框勹
,同敖
左下的勹
都是撇加橫折鉤。宇浩輸入法不做區分。
點之辨
這裡對含點字根的識別和歸併作出解釋。
含點字根
- 單點
丶
和捺乀
視爲同一個字根。 - 相重疊的兩點,即
头
冬
中的部分,和二
同碼位。 - 左對點
冫
和右對點飞右
,和二
同碼位。 - 下對點
八
爲一個字根。 - 上對點
丷
䒑
リ
同大碼。 - 左
⺦
爲一個字根。 - 左三點
氵
都在一個大碼。 - 上三點
ッ𠁼
都在一個大碼。 - 所有四點
灬
都在一個大碼。
为
卵
等字的兩點和冬
下的兩點不同,非連續筆畫,且被半包圍或全包圍分割,故而不認定爲「兩點」。詳「散件不分隔」禁手。
人八入之辨
人
八
入
三字易混,這裡做出區分。
左撇右捺
凡左撇不低於右捺,視作
人
根。凡左撇低於右捺,視作
入
根。凡左撇右捺分離,視作
八
根。凡左撇右捺的中間被其他筆畫隔開,視作
<丿乀>
根。宇碼中,它和八
同大小碼。
口中無整畫
口(音kǒu
),囗(音wéi
)。這兩個根如何區分?
答案是,如果方框裡有完整的筆畫,用囗
wéi
。否則一律用口
kǒu
。
例
国
字中,有完整的筆畫,故而必須用囗
wéi
。 中
字中,雖然⼁
穿口
而過,但並未被完全包含在口
中。由於口
中沒有完整的筆畫,故而用口
kǒu
。
此規定也適用於另外幾個包含口
的字根。
例
古
下的口
中如果包含完整的筆畫,應該拆如十囗
。例如:鄙
左下方的口
中有口
,故而應該拆成口十囗口阝
。✅ ❌合
下的口
中如果包含完整的筆畫,應該拆如人一囗
。例如:會
中間的口
中有小
,故而應該拆成人一日。✅ ❌
漢字的拆分禁手
拆分之「禁手」,指的是無論任何時候都不應當出現一些拆分情形。它高於一切拆分規則。一旦某一個拆分候選中出現了「禁手」,則直接淘汰。禁手包括:散件不分割、豎向不包夾、橫間不穿心。
散件不分割
有一部分字根,本身存在離散的部件,比如戈
字右上的點、犬
字的右上的點、三
字的三個橫等等。爲了保證拆字的直觀,保證檢字(尤其是大字集下)的便捷性,我們需要對字根的連續性做出要求,並將它認定爲字根的內在屬性。
字根的連續性定義如下:
非連續寫成、且被全包圍結構或半包圍結構分割的部件,不視爲一個字根。
例
为
字的兩點不可以被視爲字根两点
,因爲它們非連續寫成、且被半包圍結構分割。
卵
字不拆卯⺀
而拆成卯丶丶
,因爲卯
字的兩點非連續寫成、且被半包圍結構分割。
豎向不包夾
不少字根中存在若干分散的部件。
例
二
和三
中的橫畫是分離的。
合
分爲了人
一
口
三個部分。
儿
分爲了丿
乚
兩個部分。
這給了它們包夾其他字根的可能。如亘
可看成二
包夾日
。
爲了防止拆分不直觀,我們做出規定,一個字根可以橫向包夾,但不能縱向包夾。
例
卿
= 卯彐厶
胤
= 儿幺月
亘
= 一日一
僵
= 亻一田一田一
這是因爲,漢字的左右對稱多於上下對稱。左右包夾是可預測的,但上下包夾往往不可預測,必須要觀察到最下方。
如果設置了衣字根
某些輸入法設置了衣下
字根,但亠
和𧘇
的出現並不總是成對的,必須看到最下方才能正確判斷。
橫間不穿心
爲了使拆分更加直觀,符合筆順,防止字根交叉粘連,我們規定:
工土士干千禾キ王壬龶丰末未生古矢缶早羊虫
等字根不允許在一一
間穿插其他字根。
這個規定在常用字中比較少用。
例
再
不拆王冂
,而拆一冂土
垂
不拆壬龷
,而拆千龷一
禹
不拆丿虫冂
,而拆丿口冂<丄丶>
妻
不拆 キコ女
或龶乛女
,而拆十彐女
。
歸併聚類
歸併有兩種:
- 依字源歸併。指的是將字源相關的部首(部件)視爲同一個字根,賦與相同的編碼(大碼+小碼)。
- 依字形歸併。指的是將字形相近的部首(部件)視爲同一個字根,賦與相同的編碼(大碼+小碼)。
聚類,指的是將字形相近的部首(部件)視爲同一類字根,賦與相同的大碼。
宇浩的字根設計,是輕歸併、重聚類的。
選擇「重聚類」的原因,主要是對了降低初學者的學習難度。初學者,要同時記憶字根編碼、拆分規則、編碼規則。這個思維負擔很大,因此,將相似字根放在一個大碼上,有利於聯想記憶。
例
以下四字的第一個字根,都包括了广
的特性,因此放在同一個大碼上,有利於記憶。用戶只要記住广
的位置,便知道了其他三個字根的位置。
以下四字的第一個字根,都包括了丆
的特性,因此放在同一個大碼上,有利於記憶。用戶只要記住丆
的位置,便知道了其他三個字根的位置。
以下四個字根,都包括了目
的特性,因此放在同一個大碼上,有利於記憶。用戶只要記住目
的位置,便知道了其他三個字根的位置。
選擇「輕歸併」的原因,主要是以下幾點:
一、字源歸併有時會導致繁簡字根(部首)同碼。好處是用戶可以少記20個繁體字根鳥烏魚馬風來車長門鬥齒飛見貝鹵僉韋咼黽
。缺點是部分繁簡漢字無法有效分離,和宇碼設計理念不符。
例
按字源歸併後,以下漢字必定重碼。
二、部首字源歸併會導致大量字形不相近的字根(部首)被識別出來,成爲「隱藏根」,這部分字根主要位於大字集。有時候,這些根比較直觀;但有時候,需要一定經驗才能知道這個根是否已經被歸併,還是需要繼續拆分。增加記憶負擔,降低大字集檢字效率。比如:乕𠁅處𭅍𭙧
等字的頭部,雖寫法相異,但源頭相同。打字中,它們是否是一個字根,需要用戶有一定的瞭解。
三、因爲漢字演變,部分部首寫法相同,但源流各異;部分部首寫法相異,但源流相同。這可能會造成用戶的記憶負擔。
當然,歸併還是有相當價值的,特別是當字形非常接近,一般人甚至無法意識到其區別的時候,就算其字源不一、讀音迥異,也應當歸併。
例
以下兩字的右邊部首,一個是𠤎
(ㄏㄨㄚ),一個是匕
(ㄅㄛ)。較難區分,故而合爲一個字根匕
。