認識 La Rime¶
自序¶
做這項目是發自對輸入法創新的興趣,爲實驗新的輸入法而打造一款易於定製的智能輸入軟件。 實現好用的方言拼音輸入,也是開發這款軟件主要的目標。
乃定名爲:中州韻輸入法引擎 / Rime Input Method Engine
取意歷史上通行的中州韻,願寫就一部彙集音韻學智慧的輸入法經典之作。
項目網站設在 https://rime.im/
感謝 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版。即完成初創期,進入第一期的初級階段。
萬事開頭難,雖然實驗版的經驗可做參考,讓這項目高速運轉起來,仍需要大的智慧。
有同學索要文檔,卻真的沒有。千頭萬緒,未及梳理,暫且概說一番,也可意會創作此軟件的思路。
是爲之序。