Mac OS X 10.4 的語文環境(以及一些輸入法的發展)

本文同步發表於#osxchat blog

也不知道該說 Mac OS X 10.4 在多國語文環境上的發展整體來說是進步還是退步,因為有些地方的確有著長足的改進,有些地方則是被搞爛了。

比方說在繁體中文輸入法的部份,就有著一些改善,包括中文輸入法改成了像 10.3 當中的日文輸入法(Kotoeri)那樣,可以讓個別的中文輸入法模組(例如倉頡、漢音等),分別列在輸入法選單上;系統也內建了一個簡繁體中文轉換的系統服務。

10.4 也改變了一些關於語系的鍵盤設定的環境,在 10.3 時,系統會根據你所在的語系,強制要求你啟用某個語系下的鍵盤設定,例如,當你在繁體中文語系下,就強制你必須啟用一套中文輸入法,你不能夠在中文語系下單純只使用英文,而當你切換到日文語系的時候,系統又會強制關閉你原本啟用的中文輸入法,全部換成日文輸入法,而且在日文語系下因為某些奇怪的設定,造成一直無法啟用中文輸入法—在 10.4 當中已經沒有這樣的限制。

蘋果也改了輸入法模組與螢幕上的「模擬鍵盤」之間的API,在 10.3 中,只有羅馬語系等使用 rsrc 或 xml 製作的鍵盤配置(keyboard layout),可以將鍵位傳到「模擬鍵盤」上,各種中日韓輸入法則是不行的,各種輸入法往往必須自行繪製自己的模擬鍵盤,而 10.4 中則是輸入法可以直接將鍵位顯示在「模擬鍵盤」中—這部份蘋果似乎還沒有釋出相關文件,還不知道應該怎麼自行實做。

但是,不知道為什麼,傳統(需要選字的)注音輸入法被拿掉了,蘋果似乎是以為所有打注音的人都只需要可以自動選字(而且選字順序往往很奇怪)的漢音輸入法即可;至於繁體中文的拼音輸入法,則出現了與 10.3 版的注音輸入法同樣的程式臭蟲:輸入法與預設開啟的「動態提示」(Dynamic Prompt)選項衝突,這在Chinese Mac 這個國外的英文使用者討論如何在麥金塔電腦上處理中文的社群網站,也引起了一陣抱怨,看來中文輸入法不好用,已經是國際問題了。

所謂「動態提示」,就是在你只打入了部份組字字根的時候,就顯示符合這部份字根的所有候選字,然後只要輸入1到9選字鍵,便可以直接從候選字中送出要輸入的漢字;問題就在,拼音輸入法的調號按鍵,與選字鍵重疊,所以當你輸入「wei」的時候,就不分一二三四輕聲,列出了所有符合「wei」讀音的漢字,但是從中卻找不到「維」這個字,你必須要關閉「動態提示」,才能夠輸入「wei2」,在列表中才會出現「維」—而且很奇怪的,這個常用字,居然被放在所有候選字列表中的最後一個;而拼音輸入法的候選字列表實在非常奇怪,我試著打了一個「yu」,當中出現了「古」這個字,而我去翻了字典,真的沒有查到「古」居然有這樣的讀音。

上周與 Chris Walker 在網路上透過 AIM 聊天,討論在 10.4 上處理藏文的各種問題,結果 10.4 的表現還是讓人失望。Walker 最期待的是,藏文在字母重疊組合時的例外處理狀況,例如藏文當中的「ra」這個字母(ར)在與其他字母重疊的時候,應該要省略最後一筆,這個問題在之前一直沒有解決,現在也沒有(關於這個問題的詳細描述,請參見〈藏文字體與文書處理的問題〉以及〈不完整的藏文〉)。這樣也罷,在系統內建的文書軟體「文字編輯」(TextEdit.app)中,如果使用的簡體中文字體輸入藏文,在縮放字體大小後,往往在文字周圍出現一些奇怪的鬼影,而在使用THDL提供的免費藏文字體 Tibetan Machine Uni 的時候,還會出現奇怪的字母飄移狀況。這樣說起來,10.4 的藏文支援,其實是變差了。

看到 10.4 對於西方語文的支援,再看看對於東方語文的支援,就很不是滋味。在 10.4 當中透過了 spotlight 的索引技術,在系統中就內建了一套圖文並茂的牛津字典,在各種 Cocoa 應用程式中:文書軟體、瀏覽器,只要點選在英文字上,就可以立刻查詢單字的意義,在 Dashboard 裡頭也放了一個牛津字典的介面,按一個按鈕叫出 Dashboard ,也可以立刻查字典。另外就是西方語文的自動完成(Auto-Complete)功能,幾乎在所有的應用程式中,只要打了某個外文(英、德、法、義、西、葡、荷)單字的部份 ,按一下option與esc鍵(在「文字編輯」中,還有 cmd + .)這個快速鍵,便可以自動補完其餘的部份。

Spelling auto-complese of European languages of Mac OS X 10.4 Tiger

看來中文的使用者還是得要繼續自力救濟,來說一下這幾周 OpenVanilla 中文輸入法的發展好了。

最近我比較沒有時間參與 OpenVanilla 的發展,而且下一個版次(0.7)也不知道什麼時候能夠釋出,可是這幾個星期 lukhnos 做了相當多的事情,他大多發表在通信論壇上,而我之前用英文寫了一下 OV 的發展,寫完英文之後就懶得翻譯回中文,在這邊在重新簡單說明一次。

OV 0.7 幾乎重寫了整個輸入法核心,將原本以 Carbon 寫成的部份,使用 Cocoa 重寫,而因為 0.6.3 在 OS X 10.4 上有一個問題:在 Dashboard 當中輸入中文時,因為 Dashboard 的圖層位置在輸入法的選字窗之上,所以會造成選字視窗無法顯示的問題(被 Dashboard 整個蓋住了),要解決這個問題的方法,就是另外以一個應用程式,將視窗蓋在 Dashboard 之上,所以勢必要放棄 0.6.3 那種將所有的使用者介面都寫在系統元件(System Component)的架構,而另外寫一個 UI Display Server 負責各種介面。新的使用者介面也是以 Cocoa 寫成,因為 Cocoa 的支援,在下一版的 OV 中的選字視窗除了可以自訂前景與背景顏色之外,還可以設定在背景中填入圖片,提供較為正確的視窗大小,以及可以輕易設定選字窗的字體。

目前大部份在 0.6.3 當中的輸入法模組,除了白話字(POJ)模組外,都已經移植到了 0.7 的環境中。其中,之前在 SpaceChewing 這一版酷音輸入法中,可以使用 Shift 以及左右鍵左右加詞時,同時繪製加詞範圍的底線,在之前的 OV 架構中並沒有實做底線的介面,在 0.7 中完成的實做。vgod最近也重寫了 OV 的行列輸入法模組,支援二級簡碼、wildcard、行列特別碼、以及快打模式,請參見〈OpenVanilla 0.7的新行列〉〈OV行列特別碼輸入法〉以及〈OV行列的「快打模式」〉這幾篇的說明。

OV 0.7 一項最主要的新設計,就是「過濾器」(filter)的觀念。要說明什麼是輸入法的過濾器,首先要解釋輸入法的基本觀念,套用 gugod 的話來說,所謂的輸入法其實不該稱為是輸入法,而該稱為是輸出法,因為輸入法的功能不在輸入、而是輸出,輸入法接受一連串的鍵盤按鍵事件,然後轉換成對應的各國語文文字,輸出到各種應用程式當中。而過濾器就是負責在「接受按鍵輸入」到「轉為字元輸出」的過程中,給予額外的過濾、處理,例如將半型英數轉為全形字元,簡繁體中文轉換等—在0.6系列的架構中,這些功能原本是寫在程式核心中,現在則像輸入法一樣,寫成了獨立的插件或外掛(plugin)模組。

除了全半型轉換與簡繁轉換之外,我之前寫了一個 Unicode Hex 碼查詢的模組,讓你在打出某個字的同時,提示你所打出的字的 Unicode 字碼為何,也就是,各種輸入法字根的反查,都可以透過同樣的方式實做—不過現在還沒有做出來。lukhnos 寫了一個注音符號過濾模組,可以避免在打字的時候打出注音符號出來,vgod 則寫了一個將某些特殊字元轉換成 HTML Entity的模組,方便在網頁上寫作使用。另外還有一個將英數字轉換成摩斯電碼的模組,則是因為前兩天在線上看到一篇用摩斯電碼寫成的 blog 文章,受到某種啟發(或是基於某種無聊)寫成的。(順道一提,我也順便用 PHP 寫了一個摩斯電碼產生器。)

在 0.7 當中,也可以自行針對每一個輸入法以及過濾器套件,設定鍵盤快速鍵,在使用時可以快速在不同的個別輸入法模組中切換,例如,將Ctrl+Option與從1到0之間的按鍵都設為輸入法,將shift與空白鍵設為全半型英數轉換,就可以讓您在麥金塔電腦上,找回像倚天中文那樣的輸入法切換方式了。

而我最近總覺得,我已經完全習慣了酷音輸入法,特別是之前對酷音的特殊符號輸入的修改,用 Option 加上 Ctrl 的快速鍵輸入如新式篇名號與書名號(〈〉、《》),以及某些標點(…、—、○等等)的方式,還有 Mac OS 原本就可以用 Option 加上其他按鍵,快速輸入一些特殊羅馬字母(如ü、ö、ä等Umlaut),換回到 Windows 環境,反而覺得不會打字,或打字不自在了。甚至習慣了酷音的前選字模式(按下空白鍵時,是對游標後的那個字做選字切換),而不習慣漢音的前選字模式。

b6s 做了一個相當有趣的實驗,他將 WordNet 的英文同義詞功能做成了一個輸入法,在輸入了某個英文單字後,按下空白鍵,便會列出與打出的字意義相同的其他單字,如此一來,輸入法也可以作為西方語文的寫作工具,如果Rhyme Zone的韻腳字典釋出的話,也可以拿來即時顯示同韻字的列表。只是,看到 OS X 10.4 現在的實做,西方人或許習慣的,該是像那樣的使用者介面?

而 hans 問道:

我發現香草OV 和10.4 上安裝的adobe 部份軟件會相撞,至少photoshop cs2、bridge、acrobat pro and reader 也出會還沒開就quit。雖我不能百份百說 OV 出事,但我已重灌10.4 兩次,本來那些軟件還可以,但發現當安裝ov後就出問題。

各種關於 OV 的問題,歡迎在專案回報頁面上提出,因為這個頁面會立刻將反應意見以電子郵件方式,發給所有的團隊成員,寫在我這邊,可能有些成員不會看到,而延緩了處理的速度。就像前面所說的,OV 0.7 基本上重寫了整個核心,拋棄了之前的架構,整個團隊現在可以說不會去解決之前版本的錯誤,新的架構應該可以解決不少問題,而目前因為還欠缺 POJ 輸入法、偏好設定的使用者介面、以及新的使用手冊而還無法釋出,現在寫一些東西,就算是為了使用手冊先做一些準備。

另外,開發團隊目前手上沒有Adobe的CS2軟體,還沒有辦法測試到底是怎樣的問題。

2 thoughts on “Mac OS X 10.4 的語文環境(以及一些輸入法的發展)

  1. Hi, I’m just writing a Chinese input method, but for the apple’s poor documents, I got many problems to implement it.

    Any document or suggestion for `How to write a input method’ will be nice to me.

  2. Hi, I’m just writing a Chinese input method, but for the apple’s poor documents, I got many problems to implement it.

    I read the source code of `SpaceChewingOSX’, it’s very useful.

    Any document or suggestion for `How to write a input method’ will be nice to me.

    Thanks.

Comments are closed.