原文:http://www.cnblogs.com/Lvkun/archive/2012/12/27/open-source-input-method.html
开源中文输入法
在Windows上面中文拼音输入法数不胜数。简单数了一下自己用过,就有六种以上:
- 智能ABC
- 微软拼音
- 紫光拼音
- 搜狗输入法
- 谷歌输入法
- QQ输入法
- ......
可参考wikipedia 中文输入法列表,以及小众软件 我最喜欢的《拼音输入法》。在手机端各种拼音输入法种类更多。
而在Unix和Linux平台上也存在不少中文输入法,它们不仅免费,而且开源。如果想要了解输入法的实现,不妨从它们入手。
输入法大致可分为三部分:
- 输入法框架
- 输入法引擎
- 输入法界面
关于输入法结构的介绍,可以参见这篇文章Packaging Input Method Framework and Engines。
输入法框架
Windows系统提供统一的输入法框架,在Windows XP和之前版本是IMM(Input Method Manger),之后是TSF(Text Service Framework)。搜狗,谷歌,QQ等输入法都是在IMM框架下面实现了引擎和界面。而Linux下面输入法框架并不统一,这给兼容性带来很大问题。
IBus
Intelligent Input Bus。相对较新。使用C和Python开发。
特点:
- 输入法引擎可以按需加载\卸载
- 支持系统托盘(Systray)
- 支持XKB
- 配置更改即可生效
- 提供C和Python的绑定
提供以下拼音输入法引擎:
- ibus-pinyin IBus主要开发者开发的
- ibus-googlepinyin 由Android项目移植过来
Scim
Smart Common Input Method。历史比较悠久,曾作为多数Linux发行版默认的中文输入法。使用C++开发。
特点:
- 使用C++编写,完全面向对象。
- 高度模块化。
- 非常灵活的架构,即可以用作动态加载的库,也可以作为C/S输入法环境。
- 简单的编程接口。
- 完全支持i18n,及UCS-4/UTF-8编码
- 包含很多方便实用的函数来加速开发
- 特性非常丰富的GUI Panel
- 统一的配置框架
提供以下拼音输入法引擎:
- scim-ccinput
- novel-pinyin
- scim-pinyin
- fitx
- scim-sunpinyin
Fcitx
小企鹅输入法,Free Chinese Input Toy for X。
特点:
- 支持主题(Theme)
- 支持系统托盘(Systray)
- 支持Kimpanel
- 支持KDE配置模块
- 全局简繁转换
提供以下拼音输入法引擎:
- fcitx-pinyin
- fcitx-sunpinyin
- fcitx-googlepinyin
Rime
全名中州韵输入法,不仅仅是一个输入法,而是一个输入法算法框架。 非常有创意地通过YAML格式的配置文件,定制输入法。参见RimeWithSchemata
Rime 是一款强调个性的输入法。 Rime 不要定义输入法应当是哪个样、而要定义输入法可以玩出哪些花样。 Rime 不可能通过预设更多的输入方桉来满足玩家的需求;真正的玩家一定有一般人想不到的高招。
它支持主流操作系统:
- Linux: 中州韵 ibus-rime
- Windows: 小狼毫 Weasel
- Mac OS X: 鼠须管 Squirrel
输入法引擎
除了输入法框架自带的pinyin输入法引擎,sunpinyin,libgooglepinyin比较常用。
sunpinyin
sunpinyin是基于统计语言模型(Statistical Language Model)输入法引擎。支持上述的三个输入法框架。 Mac下面的FIT输入法也将sunpinyin作为输入法引擎。参见FIT携手sunpinyin。
SunPinyin是由Sun中国工程研究院的北京国际化中心开发,并贡献给开源社区的。最初由张磊(Phill.Zhang)博士独立完成,后来 由众多的社区开发者共同推进,目前的版本是2.0.x。支持整句输入,能够记录用户的词汇和语言模型,从而训练出更适合你的输入法。
在Google code的项目的wiki上面,有三篇非常详细的代码导读系列文章,可以让有兴趣的人能有相对深入了解的途径。 很少能看到类似关于拼音输入法引擎如何实现的文章。
libgooglepinyin
Google pinyin Android 版本(注意不是桌面版本)是曾经开源的,但从2009年后就再未更新。libgooglepinyin就是从这个版本移植过来的。同样的项目还有scim-googlepinyin、fcitx-googlepinyin。
Github上还有反向工程版本com.google.android.inputmethod.pinyin
相关推荐
OpenWNN是其中一种流行的开源日文输入法,它的源码包含了许多输入法设计的关键技术。例如,OpenWNN实现了词库管理,支持日语的平假名、片假名和汉字之间的转换,以及智能预测功能。这些技术可以被扩展到其他语言的...
在本资源包中,我们收集了一系列的Android开源项目,这些项目涵盖了从基础应用到复杂游戏开发的多个领域,为开发者提供了丰富的学习和实践材料。以下是对每个文件的详细解析: 1. **Android开源项目源码.doc**:这...
"基于Android平台的新闻客户端的设计与实现汇总" 该文档详细介绍了基于Android平台的新闻客户端的设计与实现,涵盖了从开发背景到系统分析与设计流程的方方面面。下面是从该文档中提炼出来的知识点: 一、开发背景...
### Eclipse 快捷键汇总详解 #### 一、概述 Eclipse是一款非常强大的开源集成开发环境(IDE),广泛应用于Java程序开发中。掌握Eclipse的快捷键能够显著提高开发效率,减少鼠标操作,使得开发者更加专注于编码本身...
### Android API 合集知识点详解 #### 一、概述 Android API 合集是指一系列针对Android平台开发的应用程序接口(Application ...此外,中文翻译组的工作也展示了社区的力量,以及开源精神如何促进技术的发展和进步。