Skip to content

进阶讨论

字形差异

汉字具有多态性。同一个汉字,在不同的标准、不同的字体下,存在一定的差别。有些字形上的差别,通过 Unicode 的离散来实现。比如 三字,在 Unicode 里被安排在了不同的码位上,故而实现了分离。但是很多汉字的不同字形,却共用 Unicode 码位(这其实是 CJK 的初衷),那么这个字到底应该依照哪个标准来拆分,便成了问题。

宇浩输入法的规定是:

  • 每个字都有一种标准拆法,字形标准取自:The Unicode Standard, Version 15.0。各地区优先级降序为:GTHJKV,即陆、台、港、日、韩、越。也就是说,如果存在大陆提交的标准,就依照大陆标准。如果大陆没有提交标准,就按照台湾标准。依此类推。
  • 每个字都可能有若干兼容拆法,目的是兼容台湾、香港、大陆古籍的字形标准。比如 = 走己(大陆标准)和 = 走巳(台湾标准)兼收。

宇浩输入法的笔顺选取,依照大陆标准《GF 3003-1999 GB13000.1 字符集汉字字序(笔画序)规范》。同时,也兼容台湾标准的笔顺。

比如攀 = 木乂乂木手(大陆标准)和攀 = 乂乂木木手(台湾标准)兼收。

比如與 = ⺽丂丄八(大陆标准)和與 = 丂丿⺽一八(台湾标准)兼收。

书体差异

某些字根,即使在相同的规范下,也会楷体和宋体的不同而产生微小差异。这些差异往往会影响对于「散」「连」的判断。我们主要以宋体为准(也是 CJK 的书体)进行拆分,同时有以下考量。

散连认定

  1. 作头时的丶一,无论书体,一概视为「散」。

  2. 作头时的丷一的草化,无论书体,一概视为「连」。

  3. 在字中时的艹一,无论书体,一概视为「连」。

局部笔顺

指的是不被打断的字根尽量多。这是为了防止以下情况,一个字 A 有 X Y 两个离散部分构成,X 部分拆 X1 X2,根少但不符合笔顺。Y 部分,可以拆 Y1 Y2,符合笔顺,且字根相交;或拆 Y3 Y4,不符合笔顺,但字根分散。如果必须满足整体符合笔顺,则 Y 拆 Y1 Y2 虽然符合笔顺,但由于 X 不符合笔顺,A 整体依旧不符合笔顺。那么 Y 应该拆成 Y3 Y4,因为能散不交。这样一来,Y 作为独体字和 Y 作为 A 的一部分时,拆分不一致,我们需要避免这种情况。这就是检查局部笔顺的原因。

字根的内在属性

上面我们提到了宇浩输入法拆字规则的优先级。其实,在「字根最少」之上,还有一个隐藏的原则,也就是:字根的内在属性

何为字根的内在属性?其实就是指某一个字根区别于另一个字根的内在特点。

拆成士口而不是土口拆成⺆土口而不是⺆士口,这是因为的下面一笔更长,而的下面一笔更短。这是区别两个字根的本质原因和内在属性。

「内在属性」可以解释为什么有些字这样拆而不是那样拆,有些字为什么看上去违反了「字根最少」的原则。

拆为丷巾八攵而非氺巾攵,这看似违反了「字根最少」原则,但其实没有。注意到,字左下的笔画是撇不是提;在中,左下角的笔画是提不是撇。故而,字里并不存在字根。正因为如此,我们取四根丷巾八攵而非三根氺巾攵

在这个章节,我们就详细讨论字根的内在属性,讨论某些字根在宇浩拆分中被分离或者被合并的原因,从而让某些字的拆分原因更加明确。

日曰之辨

不少输入法对与 两字的区分,比较复杂。大概有两种情况:

  • 有些是基于形状的,凡是长大于高的都为,凡是长短于高的都为。但这个方法会跟随着字体的不同而不同,有时候不合字源,也不统一。例如:字源于聿者古字为东东口
  • 另外一种区分方法是基于字源。也就是说:凡是在古文中作形,之后隶变为形或形的字,都作。但这个方法对方一般的使用者难度太大,且分析字源会有疏漏之处,不应用于输入法。

我们必须注意到,在汉字中,存在日曰对立的字形,只有三组,分别为:日曰汨汩曶㫚。在其他的情况下,不存在对立,也就不存在混淆问题。

因此,我基于实用主义原则,对这两个字根不多加以区分,而采取更简单的方法。即:除了上述三组对立情况外,全部取根。换句话说,根只需要在对立情况下才会使用,即: 三个字。

这样一来,可以显著降低使用者的记忆和学习负担。

勹之辨

的外框,同左下的都是撇加横折钩。宇浩输入法不做区分。

点之辨

这里对含点字根的识别和归并作出解释。

含点字根

  • 单点和捺视为同一个字根。
  • 相重叠的两点,即 中的部分,和同码位。
  • 左对点和右对点飞右,和同码位。
  • 下对点为一个字根。
  • 上对点 同大码。
  • 为一个字根。
  • 左三点都在一个大码。
  • 上三点ッ𠁼都在一个大码。
  • 所有四点都在一个大码。

等字的两点和下的两点不同,非连续笔画,且被半包围或全包围分割,故而不认定为「两点」。详「散件不分隔」禁手

人八入之辨

三字易混,这里做出区分。

左撇右捺

  1. 凡左撇不低于右捺,视作根。

  2. 凡左撇低于右捺,视作根。

  3. 凡左撇右捺分离,视作根。

  4. 凡左撇右捺的中间被其他笔画隔开,视作<丿乀>根。宇码中,它和同大小码。

口中无整画

口(音kǒu),囗(音wéi)。这两个根如何区分?

答案是,如果方框里有完整的笔画,用 wéi。否则一律用 kǒu

字中,有完整的笔画,故而必须用 wéi字中,虽然穿而过,但并未被完全包含在中。由于中没有完整的笔画,故而用 kǒu

此规定也适用于另外几个包含的字根。

  • 下的中如果包含完整的笔画,应该拆如十囗。例如:左下方的中有,故而应该拆成口十囗口阝
  • 下的中如果包含完整的笔画,应该拆如人一囗。例如:中间的中有,故而应该拆成人一日

汉字的拆分禁手

拆分之「禁手」,指的是无论任何时候都不应当出现一些拆分情形。它高于一切拆分规则。一旦某一个拆分候选中出现了「禁手」,则直接淘汰。禁手包括:散件不分割、竖向不包夹、横间不穿心。

散件不分割

有一部分字根,本身存在离散的部件,比如字右上的点、字的右上的点、字的三个横等等。为了保证拆字的直观,保证检字(尤其是大字集下)的便捷性,我们需要对字根的连续性做出要求,并将它认定为字根的内在属性。

字根的连续性定义如下:

非连续写成、且被全包围结构或半包围结构分割的部件,不视为一个字根。

字的两点不可以被视为字根两点,因为它们非连续写成、且被半包围结构分割。

字不拆卯⺀而拆成卯丶丶,因为字的两点非连续写成、且被半包围结构分割。

竖向不包夹

不少字根中存在若干分散的部件。

中的横画是分离的。

分为了 三个部分。

分为了丿 两个部分。

这给了它们包夹其他字根的可能。如可看成包夹

为了防止拆分不直观,我们做出规定,一个字根可以横向包夹,但不能纵向包夹

= 卯彐厶

= 儿幺月

= 一日一

= 亻一田一田一

这是因为,汉字的左右对称多于上下对称。左右包夹是可预测的,但上下包夹往往不可预测,必须要观察到最下方。

如果设置了衣字根

某些输入法设置了衣下字根,但𧘇的出现并不总是成对的,必须看到最下方才能正确判断。

横间不穿心

为了使拆分更加直观,符合笔顺,防止字根交叉粘连,我们规定:

工土士干千禾キ王壬龶丰末未生古矢缶早羊虫等字根不允许在一一间穿插其他字根。

这个规定在常用字中比较少用。

不拆王冂,而拆一冂土

不拆壬龷,而拆千龷一

不拆丿虫冂,而拆丿口冂<丄丶>

不拆 キコ女龶乛女,而拆十彐女

归并聚类

归并有两种:

  1. 依字源归并。指的是将字源相关的部首(部件)视为同一个字根,赋与相同的编码(大码+小码)。
  2. 依字形归并。指的是将字形相近的部首(部件)视为同一个字根,赋与相同的编码(大码+小码)。

聚类,指的是将字形相近的部首(部件)视为同一类字根,赋与相同的大码。

宇浩的字根设计,是轻归并、重聚类的。

选择「重聚类」的原因,主要是对了降低初学者的学习难度。初学者,要同时记忆字根编码、拆分规则、编码规则。这个思维负担很大,因此,将相似字根放在一个大码上,有利于联想记忆。

以下四字的第一个字根,都包括了广的特性,因此放在同一个大码上,有利于记忆。用户只要记住广的位置,便知道了其他三个字根的位置。

以下四字的第一个字根,都包括了的特性,因此放在同一个大码上,有利于记忆。用户只要记住的位置,便知道了其他三个字根的位置。

以下四个字根,都包括了的特性,因此放在同一个大码上,有利于记忆。用户只要记住的位置,便知道了其他三个字根的位置。

选择「轻归并」的原因,主要是以下几点:

一、字源归并有时会导致繁简字根(部首)同码。好处是用户可以少记20个繁体字根鳥烏魚馬風來車長門鬥齒飛見貝鹵僉韋咼黽。缺点是部分繁简汉字无法有效分离,和宇码设计理念不符。

按字源归并后,以下汉字必定重码。

二、部首字源归并会导致大量字形不相近的字根(部首)被识别出来,成为「隐藏根」,这部分字根主要位于大字集。有时候,这些根比较直观;但有时候,需要一定经验才能知道这个根是否已经被归并,还是需要继续拆分。增加记忆负担,降低大字集检字效率。比如:乕𠁅處𭅍𭙧等字的头部,虽写法相异,但源头相同。打字中,它们是否是一个字根,需要用户有一定的了解。

三、因为汉字演变,部分部首写法相同,但源流各异;部分部首写法相异,但源流相同。这可能会造成用户的记忆负担。

当然,归并还是有相当价值的,特别是当字形非常接近,一般人甚至无法意识到其区别的时候,就算其字源不一、读音迥异,也应当归并。

以下两字的右边部首,一个是𠤎(ㄏㄨㄚ),一个是(ㄅㄛ)。较难区分,故而合为一个字根

宇浩输入法官网