Introduction

Chen Gong edited this page Apr 7, 2018 · 3 revisions

認識 La Rime

自序

做這項目是發自對輸入法創新的興趣,爲實驗新的輸入法而打造一款易於定製的智能輸入軟件。 實現好用的方言拼音輸入,也是開發這款軟件主要的目標。

乃定名爲:中州韻輸入法引擎 / Rime Input Method Engine

取意歷史上通行的中州韻,願寫就一部彙集音韻學智慧的輸入法經典之作。

項目網站設在 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版。即完成初創期,進入第一期的初級階段。

萬事開頭難,雖然實驗版的經驗可做參考,讓這項目高速運轉起來,仍需要大的智慧。

有同學索要文檔,卻真的沒有。千頭萬緒,未及梳理,暫且概說一番,也可意會創作此軟件的思路。

是爲之序。

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.