跳至主要內容

自序

LincZero大约 5 分钟

自序

项目网站设在 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版。即完成初创期,进入第一期的初级阶段。

万事开头难,虽然实验版的经验可做参考,让这项目高速运转起来,仍需要大的智慧。

有同学索要文档,却真的没有。千头万绪,未及梳理,暂且概说一番,也可意会创作此软件的思路。

是为之序。