部分五笔新手,希望在「打字」时,看到「码元拆分详情」。使得他们在「自学」五笔时,门槛更低,上手更迅速。主要诉求有两个:
- 日常打字时,可见码元拆分详情,有助于迅速识记码元分布,并将之与汉字的间架结构联系起来
- 调用临时拼音反查时,可见码元拆分详情,减少离开「输入法软件」主体,及以「字母编码」来反推拆分细节的时间成本
作为五笔老手,我们其实可以理解这些切实存在的障碍,这也是五笔被指责上手困难的主要原因之一,要么不会拆,要么拆得看不明白想不通。
从软件实现方式上考虑,我们可以这样想:在现有的「功能现状」下,给「候选字」添加「强制注解」。只要我们手上有一个「注解映射表」,即使从零开始,写个轮子,也非难事。而 OpenCC 这个开源项目,也是一个「现成的轮子」。
目前,绝大多数的输入法程序,其「繁简转换」功能的实现,都是借用 OpenCC 这个开源项目。我们知道,「繁简转换」是以「强制替换」的方式实现的——候选框中的「风」,依照「注解映射表」(繁简转换),被「强制替换」成了「風」。
同样的道理,只要「强制替换」的机制,改为「强制注解」,诉求即可达成。
于是,我们98五笔小组,制作了这样的一份「注解映射表」。它类比「单字反查表」的格式,形式如下:
单字 + TAB间隔 +〔注解内容〕
在制作〔注解内容〕时,我们发现「码元」部件,只有一小部分是「原生汉字」,而大多数码元并不是汉字,没有被各式流通字体所收录。商议之后,我们决定制作「矢量字体」,既可以跨平台实现码元拆分提示,而且无级缩放,绝不失真。于是,我们就有了「码元拆分提示字体」:用著名的「思源黑体」的字型为「裁切码元的蓝本」,并以 unicode 私区增补字的方式添入「SourceHanSansCN-Regular.otf」中,考虑到如不改其字体属性标识,理论上可能会被用户后期自助安装「思源黑体」所干扰,我们将其属性标识更名为「98WB-2.otf」。
「98WB-2.otf」是为清歌专门制作的思源字体支持,「98WB-0」和「98WB-1」被我们用在了更大字符集的支持中。
至此,在工具上,我们制作出了文本格式的「注解映射表」,以及保障该映射表正常显示的矢量字体「98WB-2.oft」。
以「中州韵」为例,「中州韵」利用 OpenCC 的「候选嵌入」功能,为「侯选框」中的字体添加「强制注解」,并绑定在「开关」中,以「快捷键」( Control + Shift + H )调用。
- 在制作「注解映射表」时,考虑到 OpenCC 的文本格式要求,拆分提示中,不可以出现「空格」,因此我们使用花星号作为填补空白的替代符号,在 OpenCC 的读表预定义中,将「1个」或「3个」花星号转义为「1个空格」,从而实现上述 GIF 动图中所示的效果:六角中式括号与码元内容存在一个空格位,码元之间,也存在一个空格位。
- 关于 OpenCC ,在 OpenCC 中,它有专用的 OCD 二进制词典格式,以用于提高程序执行效率。其中,「 JSON 」文件定义了字典索引,「 type 」分为「 text 」和「 ocd 」两种,以定义「 *.txt 」与 「 *.ocd 」。如果采用 OpenCC 为实现方式,可能有用的 OpenCC 词典转制命令为:
opencc_dict -i 98wb_spelling.txt -o 98wb_spelling.ocd -f text -t ocd
https://github.com/yanhuacuo/qingg
- 主词库:wubi98-tables.txt
- 反查词库:single-chr-tables.txt
- 拼音词库:pinyin.txt
- 拆分映射表:/ opencc / 98wb_spelling.txt
- 矢量字体:98WB-2.otf