730 likes | 974 Views
Linux 中文輸入法新挑戰. Jim Huang ( 黃敬群 ) Project Manager, W-Channel Inc. ( 宇動科技 ) <jserv@channel.com.tw> Kaffe Developer <jserv@kaffe.org> September 16, 2004. 題綱. 挑戰在哪? 走出 XIM 下一代輸入法架構 IIIMF SCIM 當輸入法遇見 Thin Client 新興專案介紹 XCING 新酷音. 挑戰在哪?. 過去中文輸入法的問題 架構上難以支援 輸入法選擇少 平台差異大 當今的挑戰
E N D
Linux 中文輸入法新挑戰 Jim Huang (黃敬群) Project Manager, W-Channel Inc. (宇動科技) <jserv@channel.com.tw> Kaffe Developer <jserv@kaffe.org> September 16, 2004
題綱 • 挑戰在哪? • 走出 XIM • 下一代輸入法架構 • IIIMF • SCIM • 當輸入法遇見 Thin Client • 新興專案介紹 • XCING • 新酷音 Linux 中文輸入法新挑戰 2
挑戰在哪? • 過去中文輸入法的問題 • 架構上難以支援 • 輸入法選擇少 • 平台差異大 • 當今的挑戰 • 重複開發,無謂的資源浪費 • 已有的輸入法模組或系統,難以與新系統銜接 • 選擇性太多,缺乏統整開發的架構 • Thin Client 模式的引入 • 多國語文支援的需求 Linux 中文輸入法新挑戰 3
為何採納 GNU/Linux? 作業系統發展藍圖 我們在這 Market Share 100% Cyborg OS Matrix OS Windows GNU/Linux 0% Year 1980 1990 2000 2010 2020 2030 2040 2050 2060 Linux 中文輸入法新挑戰 4
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, (Vietnamese) • OpenI18N: Open Internationalization Initiative (舊稱: LI18NUX) • 把系統或應用程式轉變成相容特定語言的過程 • 例如將某個軟體中文化 • 主要項目:訊息翻譯、使用介面,圖形顯示等 • 在i18n的部分中只處理語言的部分稱為m17n • 比如,一個 「多國語言化」的軟體可同時處理英文、法文、中日韓,甚至阿拉伯文等 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 (續) 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 Protocol IIIM Client 1 IIIM Client 2 IIIM Client3 IIIM Server Microsoft Windows IME X Window System QT immodule IIIM Framework Internet/Intranet 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
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 特點 • 與現有架構良好的整合能力 • 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-on-Demand • 降低過度集中的運算資源消耗 • 搭配版本控管 • 允許 Thin Client 有更加的自訂能力 Linux 中文輸入法新挑戰 50
Smart-Install/Update (續) Linux 中文輸入法新挑戰 51