Next Chinese Input Method System

Download Report

Transcript Next Chinese Input Method System

Linux 中文輸入法新挑戰
Jim Huang (黃敬群)
Project Manager, W-Channel Inc. (宇動科技)
<[email protected]>
Kaffe Developer <[email protected]>
September 16, 2004
題綱
•挑戰在哪?
•走出 XIM
•下一代輸入法架構
–IIIMF
–SCIM
•當輸入法遇見 Thin Client
•新興專案介紹
–XCING
–新酷音
Linux 中文輸入法新挑戰
2
挑戰在哪?
•過去中文輸入法的問題
–架構上難以支援
–輸入法選擇少
–平台差異大
•當今的挑戰
–重複開發,無謂的資源浪費
–已有的輸入法模組或系統,難以與新系統銜接
–選擇性太多,缺乏統整開發的架構
–Thin Client 模式的引入
–多國語文支援的需求
Linux 中文輸入法新挑戰
3
為何採納 GNU/Linux?
作業系統發展藍圖
我們在這
Market Share
100%
Windows
Cyborg
OS
GNU/Linux
Matrix OS
0%
Year
1980
1990
2000
2010
2020
2030
2040
Linux 中文輸入法新挑戰
4
2050
2060
Internet 興起改變什麼?
•寬頻
–軟體租賃成為可能
–分散式系統大行其道
–成本效益比
•合久必分、分久必合
–分散式  集中式
Linux 中文輸入法新挑戰
5
典型網路服務架構
輸入法為何不能當作服務?
Linux 中文輸入法新挑戰
6
走出 XIM
•GNU/Linux i18n/L10n 架構
•XIM 簡介
•XIM 缺陷
Linux 中文輸入法新挑戰
7
把原來英文為主的系統或應用程式改寫為同時
支援多種語文或特定文化慣例的過程
一般的開發流程只使用英文,但是為了符合廣
泛的語言文化慣例,軟體必須在設計架構與機制
上針對多國語文作擴充
I18n 僅是在軟體設計上提供使用多國語文的可
能性
GNU/Linux 的 i18n/L10n 架構
•名詞解釋
–i18n: Internationalization
–L10n: Localization
–m17n: Multilingualization
把系統或應用程式轉變成相容特定語言的過程
–CJK(V): Chinese,
Japanese, Korean,
 例如將某個軟體中文化
在i18n的部分中只處理語言的部分稱為m17n
 比如,一個 「多國語言化」的軟體可同時處理英
(Vietnamese) 主要項目:訊息翻譯、使用介面,圖形顯示等
文、法文、中日韓,甚至阿拉伯文等
–OpenI18N: Open Internationalization
Initiative (舊稱: LI18NUX)
Linux 中文輸入法新挑戰
8
GNU/Linux 的 i18n/L10n 架構
(續)
•觀念釐清
–「中文化」是模糊的概念
–Linux 上的「中文化」兼具 i18n 與
L10n
–中文平台發展技術
•不需修改既有應用程式,便可顯示、印列輸入
中文
–不侷限於特定環境
•Linux tty (console)、X Window、
Application Resource
Linux 中文輸入法新挑戰
9
GNU/Linux 的 i18n/L10n 架構
• 關連鍊(chain)
–Linux kernel
–GNU C Library (glibc)
–XFree86 (X11)
–Gtk/GNOME
–Qt/KDE
–其他函式庫或工具程式
–“chain” 的涵意
Linux 中文輸入法新挑戰
10
(續)
語系 (Locale) 的概念
•
mltalk (X 基金會) 決定使用採納本
方式
國際化的四大等級
實用與可行性
– 語言可切換,在系統啟動時可指定某語言
原則:不需要重新編譯程式即可
– 使用不同語言的軟體可同時使用,在應用
適用多語文環境的平台
軟體啟動時可指定某語言
– 使用不同語言的軟體可同時使用,而且應
用程式的語言可動態切換
– 使用不同語言的軟體可同時使用,而且在
應用程式中可同時使用不同語言
Linux 中文輸入法新挑戰
11
XIM 簡介
•XIM
•XIM
•XIM
•XIM
概況
特徵
歷史回顧
架構
Linux 中文輸入法新挑戰
12
XIM (X Input Method)
Linux 中文輸入法新挑戰
13
XIM 特徵
•架構在I18N (InternationizatioN) 與
Locale 上的輸入法協定
•目的是不需要更改原始碼本身就能接受各
語系輸入法
•用來處理非歐美語系的輸入法
•規範
–XIM Client : 應用程式
–XIM Server : 輸入法
Linux 中文輸入法新挑戰
14
XIM 發展歷史回顧
• X11R4
– 沒有統一的輸入法系統,由個別軟體自行處理
輸入法需求
– 由 Fujitus 與 Omron 提供 Xjp
• X11R5
– 1989 年 XI18n 開始在 X 協會推動輸入法
– 開始定義 XIM/XFontSet APIs
– 分歧發展
• Omron/NTT 實作 Xsi
• Unix International (UI) 實作 Ximp
• Unix International 將 XIM 定義為標準
Linux 中文輸入法新挑戰
15
XIM 發展歷史回顧
(續)
• X11R5
– 輸入法系統的衝突
• Omron/NTT
• UI (Fijitsu、Sony、Xerox、ATT/USL、Hitachi、Sun、…)
• X11R6
– OSF (IBM、DEC、HP) 加盟 UI
– XIM Protocol 定義
• 但不與 Xsi/Ximp 相容
– 強化 XIM/XOM/XLC APIs
– Xlib XIM 實作獨立為 SI
– IMdKit (IM server Developer Kit) 引入
Linux 中文輸入法新挑戰
16
XIM 發展歷史回顧
(續)
• X11R6.5
– X 協會重新啟動,X.org 更新 X 標準與 SI
– Sun 移轉 Solaris 的 XI18N 貢獻到 X.org
– XFree86 從 XI18N 相關改變帶回 X.org
– OpenI18N.org 發佈 xiiimp.so
• XIM 相容 IIIMF 模組
Linux 中文輸入法新挑戰
17
XIM 架構
Linux 中文輸入法新挑戰
18
XIM 的缺陷

XIM結構與 X Window System 緊密相連,所以
使用 XIM 之系統必須擁有 X,對 Embeded
System 而言限制很大
不支援多種語言



XIM 輸入法 Server 無法告知Client 端,用戶輸入何種
語言或編碼
案例:Mozilla 可進行多國語文網頁瀏覽,可是卻缺乏
對應的 XIM client/server 互動
Linux 中文輸入法新挑戰
19
XIM 的缺陷

(續)
XIM 與 IIIMF 設計者 Hideki Hiura 指出:
 功能單一的 XIM,只能運作於 X 架構
 對 X 元件具有強烈的相依性,如:
 XFontSet、Cordinates、Color、Display、Screen、
Atom, …
 Ctext (subset of ISO-2022) 更是 charset 的依賴
 採 X transport,因此 XIM 只能存在於 X 與 X server
 XIM 以 POSIX 單一 locale 為基礎
 導致每個 XIM client/server 聯繫以 locale 為主,無法
更動
 XIM 只能提供給 single-user
 User 應該可自終端機連線取得輸入法服務
Linux 中文輸入法新挑戰
20
XIM 的缺陷
(續)
 XIM 與 IIIMF 設計者 Hideki Hiura 指出:
 缺乏通用性 IM server 架構
 需要同時啟動多個單一功能的 XIM server
 要啟動多少 XIM server 才能滿足多國語
文需求?
 以純文字資料交換當作 API 設計依據
 僅能處理純文字
 輸入法與其他智慧型裝置,如手寫辨識、語音輸入、
或其他具有大量資料傳遞的應用,倘若需要整合,將
有大量的資料交換
 無法處理不同環境
 對 Web 應用相當薄弱
Linux 中文輸入法新挑戰
21
XIM 的缺陷
(續)
 Hideki Hiura 指出:
 「基本上 XIM太多問題… 根本無法透過
patch 改正」
 1995 年重新設計輸入法,提出 IIIMF 架
構
Linux 中文輸入法新挑戰
22
下一代輸入法架構
 許多輸入法系統相繼提出
 但唯有兼具質 (彈性、擴充性) 與量 (支援多
語文、多輸入法需求) 者將勝出
 首選
 IIIMF
 Sun 主導,為 OpenI18N 正式計畫
 SCIM/UIM/m17n
 由 SCIM 與 UIM 作者共同推動,為 FreeDesktop.org
子計畫
Linux 中文輸入法新挑戰
23
IIIMF (Internet/Intranet
Input Method Framework)
 推動 IIIMF 的理由
 IIIMF vs. XIM
 IIIMF 發展目標
 IIIM Framework 特性
Linux 中文輸入法新挑戰
24
推動 IIIMF 的理由
1. 解決跨平台問題(將輸入法模組與GUI分離),更完
善的Server-Client架構
2. XIM受限於 Locale,不同語系輸入困難 (IIIMF與
Locale無關)
3. 較容易發展新的 Language Engine
4. 適用於嵌入式系統
5. 適用於在Internet環境,Client 端對 Server 端要求
輸入法服務
Linux 中文輸入法新挑戰
25
IIIMF vs. XIM

不同平台部分由IIIM Client端處理,解決跨平台問
題
IIIMP用Utf-16 傳送,可支援多語系與編碼輸入
LE vendor 不需要再去著重於一些“non-language
specific” 的基礎建設,而可專注於輸入法本體
的呈現






context managements
Input Method Protocol
platform secific input method interface
rendering
Linux 中文輸入法新挑戰
26
IIIMF vs. XIM
XIM
(續)
IIIMF
應Client端需求,可能產生多 Daemon存在,只需啟動一次
個Server
應用程式受Locale限制
轉換狀態需更換Locale變數
與Locale無關
直接切換
Locale切換較麻煩
不需切換Locale
輸入法engine等同於XIM
Server
輸入法engine以動態模組掛入
IIIM Server
必須有X Window system
platform independent
可相容於支援XIM之應用程式
Linux 中文輸入法新挑戰
27
IIIMF 發展目標




徹底解決 XIM 弊端
去除對 Window System 的相依性
完全 Unicode 支援、實現真正多語文支援
在 Unix 運作的 server 可讓 Windows 或其他環境的
client 使用
 完整的 IM 架構
 無所不在,可透過網路動態提供輸入法
 可攜性與擴展能力
 提供現有 XIM、GTK+ immodule、Java Input
Framework 等架構的溝通介面
 擴展性強的 client-side API
Linux 中文輸入法新挑戰
28
IIIM Framework 特性
• 多平台、跨平台支援
• 不依賴與底層視窗系統
• 同時運行多個 LE (Language Engine)
• 多使用者支援
• 輸入法 Protocol 可再低頻寬的系統,如 Modem 連線,上
運作
• 讓 LE 開發者專注開發輸入法本身
• 元件
– Server Framework
– Client Framework
– Language Engine
Linux 中文輸入法新挑戰
29
IIIM Framework
Internet/Intranet
IIIM
Server
IIIM Protocol
IIIM Client 1
IIIM Client 2
IIIM Client3
Microsoft
Windows
IME
X Window
System
QT
immodule
Linux 中文輸入法新挑戰
30
IIIM Server Framework
IIIM Server(Htt Server)
1. 作為 UNIX Daemon
2. 只需要運作一個 IIIM server
3. 提供標準輸入法系統 API (LEIF) - /usr/lib/im/leif
4. 所有的 LE 都是動態載入的 so (shared object) 或 dll
精髓:提供一個 LE 的 plugin 介面與 Client 端以 IIIM
Protocol來溝通,用以處理 Client 的要求 (Input Event)
Linux 中文輸入法新挑戰
32
Linux 中文輸入法新挑戰
33
IIIMF 的擴充設計
•PCE/EMIL
–LE 與 IIIMSF 聯繫的 XML-based IDL
•EMIL 可用以設計輸入法
•新的輸入法應該是一個 generic EMIL
processor,把使用者指定的輸入法行為翻譯出
來,而不是針對各別輸入法做specific case
•X Auxiliary Library
–X Auxiliary Object 共通性
•Client-side configuration library
Linux 中文輸入法新挑戰
34
SCIM (Smart Common Input
Method platform)
•SCIM 背景
–SCIM / UIM / m17n
•SCIM 支援度
–快照 (To See Is To Believe.)
•SCIM 特點
Linux 中文輸入法新挑戰
35
SCIM/UIM/m17n
•SCIM、UIM 與 m17n library 原本是三路人馬
–SCIM (Smart Common Input Method platform) 為
蘇哲發展
•完整的簡體中文與優秀的架構
–UIM (Universal Input Method) 為 TOKUNAGA
Hiroyuki、Masahito Omote 、Yamaken 等人發展
•眾多 CJK 輸入法支援
•2004-06-12 SCIM/UIM 整合
•2004-06-14 SCIM/m17n 整合
–SCIM/UIM 成為多國語文輸入法解決方案
Linux 中文輸入法新挑戰
36
SCIM/UIM 快照
SCIM/UIM 快照
(續)
SCIM 特點
• 與現有架構良好的整合能力
–scim-uim (使用 UIM 作為 backend)
–scim-m17n (使用 m17n library 作為 backend)
• 完善的使用者介面與設定工具
–scim-panel-gtk : GTK+ 2.x 打造的設定介面 (預設)
–skim : KDE 環境下的 SCIM 設定介面
• 設計哲學
–兼具簡易與彈性的 API
–高度延展與動態性
–徹底分離 IMEngine、FrontEnd,與 GUI Panel
–各元件間維持低耦合度 (loose binding)
–選擇性的 socket communication (IIIMF 是強制使用)
Linux 中文輸入法新挑戰
39
SCIM 特點
(續)
•重要特徵
–以 C++/STL 實作,提供有效與簡易清楚的 API
(也提供 C API binding)
–提供眾多函示簡化 IMEngine 開發的困難度
–兼具 dynamic loading 的 Input Method backend
特徵 (類似 UIM) 與採用 Client-Server 架構
(類似 IIIMF)
Linux 中文輸入法新挑戰
40
SCIM 運作模式
•SCIM 兼具務實與彈性
–易於與現有架構接軌
–簡單卻有彈性的架構
•運作模式
–動態載入 IMEngine
–Client-Server 架構
Linux 中文輸入法新挑戰
41
SCIM 運作模式:動態載入 IMEngine
Linux 中文輸入法新挑戰
42
SCIM 運作模式:Client-Server 架構
Linux 中文輸入法新挑戰
43
SCIM 與 IIIMF 的八卦
•七月份 SCIM mailing-list 上,SCIM/UIM 開發者
與 IIIMF 設計人 Hideki 大興筆戰
–SCIM 將與 IIIMF 分道揚鑣?
•SCIM 主要開發者蘇哲成為 IIIMF cvs committer,
致力輸入法平台的整合
•Sun JDS (Java Desktop System) 全面支援
Unicode
–只保留 UTF-8,其餘 locale codec 一律捨棄
–內建強化的 IIIMF
Linux 中文輸入法新挑戰
44
當輸入法遇見 Thin Client
•原則
–輸入法是一種服務
•Thin Client 與輸入法系統的整合
•Thin Client 在多國語文環境遇到的問題
•W-Channel 的 Peach (發展代號)
Linux 中文輸入法新挑戰
45
Thin Client 與輸入法系統的整合
•實際上的問題
–對中文、日文,以及韓文使用者來說,永遠無法一套
輸入法方式滿足所有使用者需求
–Thin Client 內建多種輸入法不經濟
–某些輸入法,如日文手寫辨識,容量很大
•解決方案
–將輸入法視作服務!
–貫徹 Client-Server 架構,發揮 Thin Client 優勢
•InputMethod-on-Demand
Linux 中文輸入法新挑戰
46
Thin Client 在多國語文環境遇到的問題
•案例分析
–Kiosk 的應用可能放置於機場提供服務,必須對不同
國籍使用者作最快速的線上更換語言,並且提供所需
輸入法服務
–過去 X-based Thin Client 難以動態更換 XIM
server,也無法動態切換不同語系的輸入法
•解決方案
–徹底採用 Unicode
–引入 IIIMF 或 SCIM 等新一代的輸入法架構
Linux 中文輸入法新挑戰
47
W-Channel 的 Peach
•Peach (發展代號) Thin Client 關鍵特性:
–Smart-Install/Update (以 Zero-Install 為基礎)
–TinyX/GTK+2.2
•提供高效能與良好的多國語文支援
–CoreWM / Desktop Environment
•支援 FreeDesktop.org 最新規格
•全新打造,精簡又具彈性
–International Edition 內建 SCIM
•動態載入 IMEngine (localhost)
•Client-Server 架構 (access remote IM services)
Linux 中文輸入法新挑戰
48
Smart-Install/Update
•以 Zero-Install 為基礎
•將 Java WebStart 的理念與實作方式引入 Thin
Client
•軟體租賃、維護,以及授權方式的新選擇
•與 Desktop Environment 的整合
–不需要系統管理者權限,使用者可以透明的取用任何
有效的軟體
–無論是否存在於 localhost 上
–所有軟體只會被 cache,並不會真正安裝
Linux 中文輸入法新挑戰
49
Smart-Install/Update
•Download-onDemand
•降低過度集中的運
算資源消耗
•搭配版本控管
•允許 Thin Client
有更加的自訂能力
Linux 中文輸入法新挑戰
50
(續)
Smart-Install/Update
Linux 中文輸入法新挑戰
51
(續)
Input Method on Demand
•將 SCIM 包裝後放置於 Smart-Install/Update
機制中
•修改 SCIM 模組載入機制,允許動態更新
•策略
–簡單的表格輸入法與模組
•透過 Smart-Install 由使用者選擇後作 cache
–複雜的大型辭典與手寫辨識資料比對
•由 IM service 統籌,以 Client-Server 架構進行
Linux 中文輸入法新挑戰
52
Demo
Linux 中文輸入法新挑戰
53
Linux 中文輸入法新挑戰
54
新興專案介紹
–XCIN 的反思
–XCIN 的新發展 – XCING
•eXtensive Chinese Input Next Generation
–酷音輸入法的新發展 -- Qooing (新酷音)
Linux 中文輸入法新挑戰
55
XCIN 的反思
–中文輸入概況
–XCIN (XIM 版本)
–中文輸入的重複開發
–XCIN 的啟示
Linux 中文輸入法新挑戰
56
中文輸入法概況
–以「字型」為主
•Cangjie (Changjei) (倉頡)
•Wubizixing (五笔字型)
•Array 30 (行列)
–以「字音」為主
•Pinyin (拼音)
•Zhuyin (Phonetic) (注音)
•Cantonese Pinyin (廣東話拼音、粵拼)
–以「字義」為主
•辭典輸入法 (英漢、漢英)
–混合「形、音、義」
Linux 中文輸入法新挑戰
57
XCIN (XIM version)
•支援 BIG5、BIG5HKSCS、GB2312,以及 UTF-8
• 只要在不同 Locale 下啟動,自動採用該語
系的編碼
目標
–輸入法模組功能改進
–處理多區域化資料庫的 XIM client 請求
–更多 Unix 平台支援
Linux 中文輸入法新挑戰
58
中文輸入法資源重複開發
•著名中文輸入應用
– JMCCE / zhcon / yact / chdrv / cce2k
– IIIMF-xcin
– IIIMF-chewing
– CKeyboard
•個人經驗
– JMCCE 1.5 的遺憾
– 接手 iiimf-chewing
– 開發 scim-chewing
Linux 中文輸入法新挑戰
59
XCIN 的啟示
•XCIN 程式碼品質優良,在許多 Unix 平
台均有不錯的表現
•XCIN 有最佳的繁體中文輸入環境
•XCIN 太依賴 X
•許多需要中文輸入的專案仍自行作重複的
工作,成果無法累積
Linux 中文輸入法新挑戰
60
XCIN 的新發展 -- XCING
•XCING = eXtensive Chinese Input Next
Generation
•目標:
–延續 XCIN 功能
–整合現有中文輸入成果
–精簡 XCIN,移除所有 X 相依性
–更容易與其他專案合作
–協同開發
Linux 中文輸入法新挑戰
61
XCIN 的新發展 – XCING
(續)
•XCING = eXtensive Chinese Input Next
Generation
•目標:
–延續 XCIN 功能
–精簡 XCIN,移除所有 X 相依性
–更容易與其他專案合作
–協同開發
Linux 中文輸入法新挑戰
62
XCING 子計畫
•SCIM/IIIMF-libxcin
•libxcin
–libxcin-core
–libxcin-gen_inp
–libxcin-bimsphone
Linux 中文輸入法新挑戰
63
libxcin 架構
讀取 xcinrc 設定檔,
初始化各項參數
Configuration
Modules Loader
接受 libxcin-core
送來的事件 (鍵盤輸
入或滑鼠點選)
依據設定,動態載入 libxcin 的各
module
•libxcin-gen_inp (通用表格輸入)
•libxcin-bimsphone (詞音輸入模組)
•libxcin-chewing (酷音輸入模組)
Module Routines
Input Mehod Logic
輸入法模組會針對不同事件,作
preedit 區編輯或 commit 動作
Feedback
Linux 中文輸入法新挑戰
64
libxcin-core 與 IIIMF/SCIM 的接軌方式
iiimf-libxcin 是與 IIIMF 接
軌的 Language Engine
SCIM
IIIMF
scim-libxcin 是與 SCIM 接軌的
IMEngine
scim-libxcin
(IMEngine)
Iiimf-libxcin
(Language Engine)
libxcin-core
libxcin-core 會
自行處理中文輸入
法的細節,並且充
分利用現有的輸入
法模組
libxcin-core 會動態載入以下模組:
•libxcin-bimsphone (詞音輸入法)
•libxcin-chewing (酷音輸入法)
libxcin-core
•libxcin-gen_inp (通用表格輸入)
Linux 中文輸入法新挑戰
65
酷音輸入法的新發展 – 新酷音
•Qooing = 新酷音
•目標:
–徹底將 Logic 與 View 分離
–多種環境的酷音輸入法支援
–成為 Open Source 智慧型注音的核心專案
–Chewing Anywhere!
Linux 中文輸入法新挑戰
66
新酷音邏輯上的呈現
User
Backend
libchewing
對使用者而言,各平台的新酷
音輸入法方式是一致的
Backend 是使用者接觸的環境,
可以是 XIM,也可以是終端機
(JMCCE/screen),甚至是某個
模組 (XCIN/IIIMF)
由 backend 收到的資料,從字
詞庫模組處理斷詞
Linux 中文輸入法新挑戰
67
新酷音架構
Linux 中文輸入法新挑戰
68
新酷音進行中計畫
•libchewing-0.3.x
– Fully Unicode core
– libskk-like API
•XCIN-chewing
•IIIMF-chewing
•SCIM-chewing
•Console-chewing  提供給 zhcon/itw
•screen-chewing
•MSIME-chewing  Win32 下的酷音輸入法
Linux 中文輸入法新挑戰
69
新酷音展示快照 (old)
Linux 中文輸入法新挑戰
70
Linux 中文輸入法新挑戰
71
We Want You!
•Linux Kernel Hacker
•WirelessLAN guru
•Security/Crypto Hacker
•GUI Designer
•X Window Fan
•C / Shell Script Programmer
•Contact Info:
<[email protected]>
Linux 中文輸入法新挑戰
72