├── 98WB-2.otf ├── README.md ├── opencc ├── 98wb_spelling.json ├── 98wb_spelling.txt ├── 98wb_spelling_rk.json ├── 98wb_spelling_rk.txt └── phrase.txt ├── pinyin.txt ├── single-chr-tables.txt └── wubi98-tables.txt /98WB-2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanhuacuo/qingg/78516f491debf3dd602c30821a6a186485eeeef7/98WB-2.otf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### 意图 2 | 3 | 部分五笔新手,希望在「打字」时,看到「码元拆分详情」。使得他们在「自学」五笔时,门槛更低,上手更迅速。主要诉求有两个: 4 | 5 | * 日常打字时,可见码元拆分详情,有助于迅速识记码元分布,并将之与汉字的间架结构联系起来 6 | * 调用临时拼音反查时,可见码元拆分详情,减少离开「输入法软件」主体,及以「字母编码」来反推拆分细节的时间成本 7 | 8 | 作为五笔老手,我们其实可以理解这些切实存在的障碍,这也是五笔被指责上手困难的主要原因之一,要么不会拆,要么拆得看不明白想不通。 9 | 10 | ### 实现 11 | 12 | 从软件实现方式上考虑,我们可以这样想:在现有的「功能现状」下,给「候选字」添加「强制注解」。只要我们手上有一个「注解映射表」,即使从零开始,写个轮子,也非难事。而 OpenCC 这个开源项目,也是一个「现成的轮子」。 13 | 14 | 目前,绝大多数的输入法程序,其「繁简转换」功能的实现,都是借用 OpenCC 这个开源项目。我们知道,「繁简转换」是以「强制替换」的方式实现的——候选框中的「风」,依照「注解映射表」(繁简转换),被「强制替换」成了「風」。 15 | 16 | 同样的道理,只要「强制替换」的机制,改为「强制注解」,诉求即可达成。 17 | 18 | ### 工具 19 | 20 | 于是,我们98五笔小组,制作了这样的一份「注解映射表」。它类比「单字反查表」的格式,形式如下: 21 | 22 | > 单字 + TAB间隔 +〔注解内容〕 23 | 24 | 在制作〔注解内容〕时,我们发现「码元」部件,只有一小部分是「原生汉字」,而大多数码元并不是汉字,没有被各式流通字体所收录。商议之后,我们决定制作「矢量字体」,既可以跨平台实现码元拆分提示,而且无级缩放,绝不失真。于是,我们就有了「码元拆分提示字体」:用著名的「思源黑体」的字型为「裁切码元的蓝本」,并以 unicode 私区增补字的方式添入「SourceHanSansCN-Regular.otf」中,考虑到如不改其字体属性标识,理论上可能会被用户后期自助安装「思源黑体」所干扰,我们将其属性标识更名为「98WB-2.otf」。 25 | 26 | 「98WB-2.otf」是为清歌专门制作的思源字体支持,「98WB-0」和「98WB-1」被我们用在了更大字符集的支持中。 27 | 28 | 至此,在工具上,我们制作出了文本格式的「注解映射表」,以及保障该映射表正常显示的矢量字体「98WB-2.oft」。 29 | 30 | ### 范例 31 | 32 | 以「中州韵」为例,「中州韵」利用 OpenCC 的「候选嵌入」功能,为「侯选框」中的字体添加「强制注解」,并绑定在「开关」中,以「快捷键」( Control + Shift + H )调用。 33 | 34 | ![rime](https://raw.githubusercontent.com/yanhuacuo/98wubi-tables/master/wiki-pic/tip-98.gif) 35 | 36 | 37 | ### 补述 38 | 39 | 40 | * 在制作「注解映射表」时,考虑到 OpenCC 的文本格式要求,拆分提示中,不可以出现「空格」,因此我们使用花星号作为填补空白的替代符号,在 OpenCC 的读表预定义中,将「1个」或「3个」花星号转义为「1个空格」,从而实现上述 GIF 动图中所示的效果:六角中式括号与码元内容存在一个空格位,码元之间,也存在一个空格位。 41 | 42 | ![opencc](https://raw.githubusercontent.com/yanhuacuo/98wubi-tables/master/wiki-pic/opencc.png) 43 | 44 | 45 | * 关于 OpenCC ,在 OpenCC 中,它有专用的 OCD 二进制词典格式,以用于提高程序执行效率。其中,「 JSON 」文件定义了字典索引,「 type 」分为「 text 」和「 ocd 」两种,以定义「 \*.txt 」与 「 \*.ocd 」。如果采用 OpenCC 为实现方式,可能有用的 OpenCC 词典转制命令为: 46 | > opencc_dict -i 98wb_spelling.txt -o 98wb_spelling.ocd -f text -t ocd 47 | 48 | ### 素材 49 | 50 | https://github.com/yanhuacuo/qingg 51 | 52 | * 主词库:wubi98-tables.txt 53 | * 反查词库:single-chr-tables.txt 54 | * 拼音词库:pinyin.txt 55 | * 拆分映射表:/ opencc / 98wb_spelling.txt 56 | * 矢量字体:98WB-2.otf 57 | -------------------------------------------------------------------------------- /opencc/98wb_spelling.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "98wb_spelling", 3 | "segmentation": { 4 | "type": "mmseg", 5 | "dict": { 6 | "type": "ocd", 7 | "file": "98wb_spelling.ocd" 8 | } 9 | }, 10 | "conversion_chain": [{ 11 | "dict": { 12 | "type": "group", 13 | "dicts": [{ 14 | "type": "ocd", 15 | "file": "98wb_spelling.ocd" 16 | }, { 17 | "type": "ocd", 18 | "file": "phrase.ocd" 19 | }] 20 | } 21 | }] 22 | } -------------------------------------------------------------------------------- /opencc/98wb_spelling_rk.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "98wb_spelling_rk", 3 | "segmentation": { 4 | "type": "mmseg", 5 | "dict": { 6 | "type": "ocd", 7 | "file": "98wb_spelling_rk.ocd" 8 | } 9 | }, 10 | "conversion_chain": [{ 11 | "dict": { 12 | "type": "ocd", 13 | "file": "98wb_spelling_rk.ocd" 14 | } 15 | }] 16 | } 17 | -------------------------------------------------------------------------------- /pinyin.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanhuacuo/qingg/78516f491debf3dd602c30821a6a186485eeeef7/pinyin.txt -------------------------------------------------------------------------------- /single-chr-tables.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanhuacuo/qingg/78516f491debf3dd602c30821a6a186485eeeef7/single-chr-tables.txt -------------------------------------------------------------------------------- /wubi98-tables.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanhuacuo/qingg/78516f491debf3dd602c30821a6a186485eeeef7/wubi98-tables.txt --------------------------------------------------------------------------------