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