自序
自序
项目网站设在 http://rime.github.io/
感谢 Github. 感谢 Pages.
创造应用价值是一方面,更要坚持对好技术的追求,希望能写出灵动而易于扩展的代码,使其成为一款个性十足的开源输入法。
历史
2009年底,佛振按这一思路,借助强大的IBus输入法框架和Python脚本语言,快速开发出「中州韵」的原型。
2010年,将这一算法引擎由Linux移植到Windows平台。 几大方言社区的输入法爱好者创作了粤语、吴语、中古音输入方案,竟做到了用曾经梦想的方式打字。
如今有许多朋友关注并乐于帮忙完善这一软件。俺打盘接受同学们的建议用C++来写一部正式版。
概念
相对于最初的实验品,概念没有多大变化。佛振重新来归纳。
组成这个软件系统的对象,我给他粗略分成三类: 逻辑对象、数据对象、交互对象。
逻辑对象,各自表达解决输入法中某类问题的算法,以及描述输入法的工作流程。
咱假定,从不同种类的输入法中,可归纳出几种类型的实现机制,即通用于一类输入法的算法和数据结构。
输入法引擎/engine 佛振把他解读为用来实现输入功能的程序,是这些算法及相关数据结构的总和。
输入法典型的工作流程,大致如此:
- 获取并解释按键动作,每个按键包含键值、按键的状态等信息
- 生成、分析按键序列,形成编码串;某些按键并非直接产生编码字符,而有时组成输入串的文字不是按键所对应的字符本身
- 查字典,取得输入码对应的同码字词列表;合并、排序……
- 有时,根据策略需要进一步组词造句
- 可能会对结果做出场前的修饰处理,如繁简转换等
- 至此,完成了从输入码到文字的翻译,结果是一组将在输入法介面展现的候选文字
- 用户确认,文字上屏,完成了一次输入
将这一流程中纯粹的逻辑部份用程序写出来,就是我所形容的输入引擎。
其中不包括:
- 实现编码到文字转换的字典数据,许多方家称「码表」
- 经过操作系统与设备和输入目的程序交互的组件
- 展现输入法信息的介面
- 配置工具
输入法中的数据对象,有输入引擎处理用户输入动作所得的动态数据,又有预先配置到输入法中的输入方案。
若要讲,输入引擎是跨输入法的通用程序,输入方案/schema 即是那差异的部份。 输入法引擎配置了不同的输入方案,便是用户视角下、统一框架内的不同输入法。 输入方案按一定的规格撰写,用户可于需要时导入到软件,这便是本项目软件开发者与输入方案创作者分工、协作的方式。
输入方案包含:
- 配置信息,控制着输入引擎的行为
- 字典(码表),定义了编码与候选文字的对应关系
为了足够灵活而能支持广泛的输入法类型,在输入方案中,利用 拼写运算/spelling algebra 机制在输入码与字典编码之间建立一组映射,以此将个别方案中的特殊检索方式统一到通用的算法。
交互对象,承担与用户交换信息的功能。不同于输入引擎、输入方案的跨平台特点,交互对象的实现是系统相关的。 具体地有,输入法框架通过操作系统与输入设备、输入目标程序通信;输入法介面显示输入法的状态和输入内容。
项目构成
于是整个工程又可分为若干子项目:
- librime-输入法引擎
- ibus-rime-Linux发行版
- weasel/小狼毫-Windows发行版
- squirrel/鼠须管-Mac发行版
- plum/东风破-配置管理器及输入方案仓库
- essay/八股文-预设词典及语言模型
开发计划
伟大雄图,还是分期来完成吧。
初创期,完成软件架构和基础功能。
第一期,要把用户体验做到一款正式产品的标准。
- 易用性:操作方式简明,有文档,有配置工具
- 性能和稳定性:适应主流配置+日常应用场景
- 输入效果:优于传统的码表输入法平台,达到开源输入法的平均水平
第二期,兼容更多系统平台。可以尝试一些创新的设计,形成开发者暨输入方案创作者社群。
第三期,添加网络功能,持续优化输入效果;建立输入法创作平台。
计划于 八月初八 发表1.0版。即完成初创期,进入第一期的初级阶段。
万事开头难,虽然实验版的经验可做参考,让这项目高速运转起来,仍需要大的智慧。
有同学索要文档,却真的没有。千头万绪,未及梳理,暂且概说一番,也可意会创作此软件的思路。
是为之序。