GithubHelp home page GithubHelp logo

qingg's Introduction

意图

部分五笔新手,希望在「打字」时,看到「码元拆分详情」。使得他们在「自学」五笔时,门槛更低,上手更迅速。主要诉求有两个:

  • 日常打字时,可见码元拆分详情,有助于迅速识记码元分布,并将之与汉字的间架结构联系起来
  • 调用临时拼音反查时,可见码元拆分详情,减少离开「输入法软件」主体,及以「字母编码」来反推拆分细节的时间成本

作为五笔老手,我们其实可以理解这些切实存在的障碍,这也是五笔被指责上手困难的主要原因之一,要么不会拆,要么拆得看不明白想不通。

实现

从软件实现方式上考虑,我们可以这样想:在现有的「功能现状」下,给「候选字」添加「强制注解」。只要我们手上有一个「注解映射表」,即使从零开始,写个轮子,也非难事。而 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 )调用。

rime

补述

  • 在制作「注解映射表」时,考虑到 OpenCC 的文本格式要求,拆分提示中,不可以出现「空格」,因此我们使用花星号作为填补空白的替代符号,在 OpenCC 的读表预定义中,将「1个」或「3个」花星号转义为「1个空格」,从而实现上述 GIF 动图中所示的效果:六角中式括号与码元内容存在一个空格位,码元之间,也存在一个空格位。

opencc

  • 关于 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

qingg's People

Contributors

yanhuacuo avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.