Skip to content

拼写规则

本方案使用 30 个键编码,全部 30 个键的集合记为 U

  1. 大集合 A:包含 20 个键 bpmfdtnlgkhjqxzcsryw
  2. 小集合 B:包含 8 个键 aoeiuv;/
  3. 其他:包含 2 个键 ,.

接下来我们将介绍本方案输入汉字的规则。注意,本方案的规则十分复杂,且不乏一些反直觉的设定,初学时您可能会感到无所适从。但是,请您暂时按捺住心中的疑问,首先试图理解这些规则,然后在本节的末尾您会了解到这些规则的原因,届时您可能会有恍然大悟的感觉。

声母

汉字编码全码的第一码取声母。其中,声母 zh, ch, sh 分别合并到 z, c, s 键,零声母合并到 r 键。其余声母均在原本的按键。

汉字的分部

在汉字中,由若干个笔画通过交、连等方式组合成的无间隙的图形称为部件。由若干个部件按照一定方位排列形成的图形称为复合体,且复合体可以与其他部件或复合体进一步排列形成更复杂的复合体。这些排列的方式包括:

  • 左右结构:两部分(⿰,如冰)或三部分(⿲,如班)
  • 上下结构:两部分(⿱,如花)或三部分(⿳,如算)
  • 包围结构:全包围(⿴,如因)、下包围(⿶,如凶)、左包围(⿷,如区)、上包围(⿵,如冈)、左上包围(⿸,如庆)、右上包围(⿹,如载)、左下包围(⿺、如这)
  • 重叠结构:有多种形状(⿻,如巫、噩、乘等)

如果一个汉字整体上是个部件,称为部件字;反之,如果整体上是个复合体,称为复合体字。将一个复合体汉字逐层分析为部件的组合的过程称为分部。

基本字根与部件字的规则

本方案中,「基本字根」是指布局在小集合 B(包含按键 aoeiuv;/)上的字根。基本字根大部分是简单的笔画组合,在汉字中通常不具有固定的表意功能。基本字根主要通过形托的方式安排布局。

对于每个部件,将其拆分为若干个基本字根的方式称为基本拆分。

如果一个字是部件字,则其全码的第二、三、四码为该部件的基本拆分中前三个基本字根的编码。如果部件字本身为字根,则其全码的第三码重复第二码。

扩展字根与复合体字的规则

本方案中,「扩展字根」是指布局在大集合 A(包含按键 bpmfdtnlgkhjqxzcsryw)以及 ,. 两个键上的字根。扩展字根大部分是常见的偏旁部首,在汉字中通常具有相对固定的表意功能。扩展字根主要通过音托的方式安排布局。

基本字根和扩展字根统称为字根。

如果一个字是复合体字,则需要首先从字中划分出来一部分称为正部,余下的部分称为余部;复合体字的第二码是在正部中取的一个字根,称为正根。确定正部和正根的规则如下:

  • 左、上、外和右、下、内两部都是字根,取左、上、外部为正部、对应字根为正根;
  • 左、上、外和右、下、内两部有一个是字根,取该部为正部、该字根为正根;
  • 左、上、外和右、下、内两部都不是字根,取左、上、内部为正部,然后
    • 重复将正部分部并取左、上、外部分,直到遇到字根,取该字根为正根;
    • 如果分部得到的部件仍然不是字根,取这个部件基本拆分的首根为正根;

确定正部之后,正部以外的部分称为余部;复合体字的第三码和第四码是在余部取最多两个字根作为余根,规则如下:

  • 如果余部是部件:取这个部件基本拆分的前两个字根;
  • 如果余部是复合体:
    1. 将余部再次分部之后按照从左、上、外到右、下、内的顺序取前两部分
    2. 然后重复将这两部分分别分部并取左、上、外部分
    3. 取最终得到的部件基本拆分的首根;

关于分部的细节规则

一般情况下,总是按照汉字的自然间隙来分部,且优先以上下(上中下)、左右(左中右)的方式分部,其次以包围、嵌套结构分部。但有以下几个例外:

字根优先原理

如果字中的包围结构构成了字根,则优先分为字根和其他。例如,「衔」等字分为「行」和中间的部分,「哀」等字分为「衣框」和中间的部分,「旅」等字分为「旅字框」和右下的部分。

如果字根和其他部分相连,可以忽略自然间隙优先分出字根。例如,「章竟」分出「音」和其他部分,而不是「立」。

注意,这条规则不适用于被包围结构构成字根的情况。例如,不能从「辩」中优先分出「讠」和「辡」,也不能从「彀」中优先分出「弓」和「彀字框」。这些字仍然按照常规的上下(上中下)、左右(左中右)的方式分部。

粘连原理

有一部分在上下结构和包围结构中出现的笔形和主体之间的关系不明确,容易引发歧义。故明确如下:

  • 一横下面有「儿、八、厶」等笔形的,视为粘连,不从此处分部。例如,「其兵真」等看成是一个部件而非复合体;
  • 右下角是「又」的,视为粘连,不从此处分部。例如,「反友发皮」等看成是部件而非复合体;

准包围原理

上下结构中上面以「𠆢、八、大、冖」等笔形覆盖在下面的,视为包围结构,按照包围结构规则处理。例如,「营」视为包围结构,外面不是字根,因此取里面的首根「口」作为正根。

关于基本拆分的细节规则

(未完待续)

兼容码

兼容码是指一个汉字除了常规的形码取法之外还有别的取法。如果一个字有常规编码也有兼容码,则其简码是根据兼容码来设置的,且在方案优化和测评过程中也是采取的兼容码。

意符优先兼容码

在前面关于复合体字的规则中,您可能已经注意到字的「正根」常常是它的意符(形旁)。我们的目的是尽可能基于字形来判断正根,不必理会字源,但是如果取出来的正根不符合对于汉字(特别是形声字)的认知,有时也会造成困扰。因此,如果一个复合体字满足以下三个条件:

  1. 分部后,两部分恰好都是字根;
  2. 左、上、外部分是字的音符,右、下、内部分是字的意符,且音符的读音和整字的读音很相近;
  3. 左、上、外部分不是一个常见的意符;

则会额外增加另一种取码,先取右、下、内为正根,余部按正常规则取码。例如,「功」中「工」和「力」均为字根,按规则应该取「工」为正根,但这与意符冲突。因此兼容可取「力」。

注意,如果左、上、外部分是常见的意符,则不适用此规则。如「和」虽然是「从口、禾声」,但「禾」是常见意符,因此大家通常不会想到先取「口」,不必加此兼容码。

见字即根兼容码

有些字的意符出现频率非常低,若设为扩展字根则不易记住。如「豫」是「从象、予声」,「氓」是「从民、亡声」,《通用规范汉字表》中这两个意符都只出现一次,考虑到经济性不宜设为字根。但这样一来,它们和同声旁的字如「预」、「忙」取码方法又不一样了。为了提升统一性,我们借鉴自然码的「见字即根」原理,规定凡是常用字(即《通用规范汉字表》和《常用国字标准字体表》)的意符都可以作为字根。

为什么这样设计?(选读)

这样设计主要是为了满足「二码顶」对编码格式的要求。二码顶的格式为 AUAUBAUBB,理论上需要三种不同的元素来分别放置到大集合 A、小集合 B 和全集合 U 中。此外,在本方案选取的集合大小下,最多只有 20 × 30 × (1 + 8 + 8 * 8) = 43800 个编码空间,比 26 键四码定长方案的十分之一还要少。

  • 首先排除纯形码的编码方式:只基于字形信息对汉字编码离散能力弱,不容易在给定的编码空间中实现重码的目标;且限定纯形之后可用的元素种类少,不容易凑出三种不同的元素;
  • 其次排除双拼双形的编码方式:如果 A 为声母、U 为韵母、B 为字根,则将出现大量字根拥挤在少量 B 集合按键上的情况,此时若两个形声字的声旁相同、声母相同,形旁又碰巧在一个键上,必然引起重码。因此,这样的结构很难降低重码。要解决这个问题,需要增加码长,使用三个 B(冰雪二拼)或四个 B(冰雪键道),但这样无法做到全码在四码以内;

在排除以上两个选项之后,作者十年前曾使用过的「小兮码」提供了新的思路。小兮码是一个二笔类方案,第一码为声母,然后将汉字两次二分之后第二码取首部字根、二笔或单笔,第三码和第四码取次部之首部和次部之次部的字根、二笔或单笔。小兮码在第二码和第三四码采用了两套不同的键盘映射,其中第二码具有完整的 5 单笔、25 二笔和 15 字根,但第三四码只有 5 单笔、8 二笔和 8 字根,且规定了「有字根取字根、无字根取二笔、无二笔取单笔」。因此,存在一些元素,它们在第二码和第三四码的位置没有变化,但由于拆分不同而导致含义发生了很大变化(例如单笔「丿」在第二码和第三四码的键位都是 e,在第二码时它只代表它自己,但在第三四码时由于不存在二笔「丿一、丿丨、丿丿」,实际上也隐含代表了这些二笔)。美中不足的是,小兮码中并不是所有元素在第二码和第三四码时的位置都保持了不变。例如,字根「口」第二码时位于 i 键,而第三码及之后位于 / 键。这既不优雅(例如,「吕」的编码为 li/,前后两个「口」的编码不一样),也容易造成混淆。

因此,本方案的第一个设计目标就是在取码为「声形形形」的情况下,通过选取合适的元素和键位让第二码的形(U)和第三四码的形(B)不发生任何元素移动,而是通过改变拆分来把第三四码的形限制在 B 集合的范围内。为了提高元素选取的自由度,本方案不再使用二笔的设计,而是直接使用单笔和字根的组合,在第二码使用全部的字根去拆分,在第三四码只用小集合的字根去拆分(只要保证单笔都在小集合,总能实现)。

本方案的第二个设计目标是让占汉字绝大多数的形声字的取码能够有统一性,而且能充分离散这些汉字。如果直接像小兮码一样第二码取首部、第三四码取次部,对于那些声旁笔顺在前、形旁笔顺在后的汉字(如「刂、心、辶、……」构成的汉字)来说,较复杂的声旁结构只取第二码一个编码实际上把一些信息浪费掉了,而且和主流的形旁在前、声旁在后的其他汉字编码差异极大,不优雅。但我们又不能完全按照字源来「先取形旁、再取声旁」,因为很多形声字经过形变和音变之后已经很难看出来原来的构字逻辑了。因此,我们需要一个规则来尽可能只通过字形的判断来找出形旁。本方案中,所有常用的形旁都已经收录为字根,又因为声旁常常比形旁更复杂,因此在分部后两边有一个是字根的情况下,直接去取那个字根就基本上能保证它是形旁。

因此,上面两个目标就决定了字根布局采取二元结构:小集合 B 上的基本字根包括单笔画和笔画的简单组合,用来拆部件字和复合体的声旁;大集合 A 以及 ,. 上的扩展字根把形旁一网打尽,只用于复合体的第二码。

采用 VitePress 构建