OpenVanilla 0.8 最近的開發進度

大概在月初的時候,OpenVanilla 開發團隊決定近期內再推出一個版本,下一版的版次為 0.8 版;實際的推出日期還不確定,到時候新的版本會包含多少新功能,很多也還不確定,總之,在這邊先聊一下這一兩個星期的實作進度。

目前 OpenVanilla 主要在 Windows 以及 Mac OS X 兩個平台上發展,而團隊目前也對於 Mac OS X 平台的開發比較熟悉,我個人也只有處理 Mac OS X 這部份,所以,以下的內容,也以 Mac OS X 平台為主。

目前完成的一些功能…

Continue reading

所以,這些字到底是什麼意思呢?

前陣子看到有人在討論則天文字,於是試著寫了一個 OpenVanilla 的過濾器模組,可以在打出漢字的時候轉換成武則天那個時候所使用的字。這個模組有什麼意義呢?顯然實在沒有什麼意義—這年頭誰還在用武則天發明的那幾個字,而且截至目前,許多字碼都還沒有任何字體支援,這個模組的唯一用途就是讓人在打字的時候可以打出符合武則天時代的情境的文字,但是想來不會有什麼人需要武則天時代的情境…。

而搞這麼一個模組,唯一的收穫似乎是,因為許多則天文字在 Unicode 中,是指定在 CJK 延伸字元中,而順便就在 Unicode 中看到了一些奇怪的字。雖然實在不知道這些字究竟怎麼唸,究竟是什麼意思,但是第一眼看到這幾個字的時候,卻實在是忍俊不住,比方說,在 22D0F 這個位置上,有這麼一個字:

Picture

另外一個讓人印象深刻的字,則是 2003F


Picture

其他像Picture,或是,Picture,看起來都很有趣啊。

一些問題的簡單回覆

稍微有點時間,來回覆一下一些朋友之前問到的問題。

一、可否能夠改寫OpenVanilla 通用輸入法表格編輯器—讓使用者在自行編輯輸入法表格的時候,只要先點選某個按鍵組合,然後便可以列出所有符合這個按鍵組合的對應輸出結果。如果某個輸入法的設計是會出現很多候選字(例如注音、拼音等),會需要這樣功能。

CinEdit...

最近幾天花了點時間,是寫出了這樣的東西。能夠在選取某一筆資料之後,列出對應的資料,換句話說,就是要建立資料之間的關聯,也就是需要一些資料庫方面的功能;既然需要一些資料庫功能,又適用 Cocoa 開發,在改寫的時候,便使用了蘋果提供的 CodeData 架構,透過CoreData建立了一個簡單的Model,在讀入輸入法表格的時候,將資料轉換成NSManagedObject,一邊輸入一邊檢查:如果某個對應到按鍵組合的物件存在,那就使用這個物件,反之則建立物件,將對應的結果與之建立關聯,在GUI方面,則是用 Cocoa Binding 搞定…。

右圖便是開啟簡易輸入法的表格時的畫面。

雖然是做出來了,但是效能實在很不好,大概算了一下,如果要這麼做,處理一筆資料,大概要花上0.1到0.2秒的時間,而一般的輸入法少說都有一兩萬筆資料,更不要說有七八萬筆資料的輕鬆輸入法了;以兩萬筆來說,那就需要花上至少半小時才能夠載入,在選好要載入的檔案之後,就只能看到奪命小彩球一直轉,整台機器近乎呈現當機狀態。這樣的東西實在不太能夠拿出來見人,而總感覺問題應該出在 CoreData 本身。

Continue reading

OpenVanilla 通用輸入法表格編輯器

前陣子燈哥也提到,最近我在寫OpenVanilla 的「通用輸入法編輯工具」,而這一兩天算是把這個工具弄成了大概可以見人的樣子。

這個工具的主要功能,就是建立新的查表式輸入法給 OpenVanilla 使用,或是修改既有的 OV 輸入法表格,增加自己需要使用的按鍵組合。OV 的通用輸入法表格是 UTF-8 編碼的純文字檔案,用任何(支援 UTF-8 編碼的)文書編輯軟體都可以開啟、編輯,不過,有一個專屬的工具介面,相信還是會有方便的地方。

用 Openvanilla 輸入法編輯器打開輕鬆輸入法

大抵來說,這個工具比較適合對於一套輸入法的表格做小規模的修改,例如覺得「漁村輸入法」裡頭提供的奇怪符號不夠多,臨時想要再加入一兩個符號進去…而比較不適合拿來做一個比較巨大的輸入法表格,如果您是要把 XCIN 或是 SCIM 的表格轉換成 OV 使用啦,可能還是直接拿出 Smultron 出來改文字檔本身比較快。—畢竟其實自己是抱持著練習 Cocoa 的習作心態在寫(例如:練習看看寫工具列啦、練習看看 Cocoa 提供的 Document-based 的應用程式怎麼寫啦),而 Cocoa 可以提供的物件也實在頂多,總覺得自己還需要多寫一些東西才能夠更熟悉一些。

由於這個程式算是一個獨立的工具,而 OpenVanilla 的通用輸入法的表格規格也一直沒有什麼改動,所以,不管是安裝那一個版本的 OpenVanilla,都可以用這個工具修改表格。目前寫出來的東西只有在 Mac OS X 10.4.9 上面測試過,至於 10.3 或是最近有人拿到的 10.5…都還沒有試過,我手邊也沒有安裝這些作業系統的機器。

下載:http://openvanilla.googlecode.com/files/OpenVanilla-OSX-CinEdit-0.7.2-20070612.zip

最近對於 OpenVanilla 的小修改

這一陣子又改了一下 OpenVanilla,大概如下:

OpenVanilla 圖示修改器

OpenVanilla Icon Changer

在0.7系列之後,OpenVanilla 採用了蘋果比較新的 API,不再將圖示資訊寫在 resource fork 裡頭,而是將資料定義在一個外部 icns 圖示檔案裡頭(依照蘋果的 API,除了 icns 檔案之外,也可以使用 .tiff 檔案,總之,請參見Technical Note TN2128裡頭的 “Do I still need to define my icons in my component’s resource fork?” 部份)。而因為是定義在外部檔案中,所以每個人裝了 OpenVanilla 之後,都可以自己修改 OV 的圖示,之前也有一篇相關的介紹文件,就在說明如何更換香草圖示,在 OV 0.7.2 中,也包含了一組可選用的圖示。

但,老實說,實在有些麻煩:一來要搞清楚 Mac OS X 的 Bundle 結構,二來,如果不想用隨著 OV 0.7.2 附帶的圖示,那自己需要稍微搞清楚怎麼透過影像處理軟體,做出圖示來…而看到身邊許多人裝了 OV 之後,都很想要把圖示換掉。所以搞了一個「圖示修改器」。

Continue reading

OpenVanilla 透過 JavaScript 呼叫 Quartz Composition 製作介面的實做

OpenVanilla 輸入法專案開始嘗試透過 WebKit ,在 Mac OS X 上設計選字窗介面這件事情,從算是開始進行以來,也大概快要一年了,不過,大概從去年九月之後,似乎都沒有再去動過這部份的程式。

上個週末心血來潮,把之前的程式碼重新看了一下,一方面找到原本無法成功使用透明視窗背景的問題癥結,另一方面也參考了蘋果的開發者網站上的範例程式,搞清楚怎樣做出無框視窗。雖然距離告一段落、能夠正式釋出還有一段距離,不過,應該是比之前狀況,堪用得多。接下來,又繼續做了一些選字框介面的實驗。

所謂用 Webkit 製作選字框介面的意思是這樣的:在目前的 0.7.2 版上的選字窗,是先畫出一個視窗,然後直接在視窗上放一個跟這個視窗一樣大小的文字元件;而目前在做的事情則是,我們在選字框裡頭放了一個小小的網頁瀏覽器(也就是 Webkit),透過網頁方式呈現輸入法的候選字清單,方法是,Cocoa 可以從外部將 JavaScript 指令傳到 Webkit 瀏覽器中,所以,像更新選字窗內容、關閉選字窗這些事情,只要透過網頁技術完成即可。—透過不同的網頁樣式設計,便可以得到不同風格的輸入法使用介面,每一種不同的輸入法介面,也可以透過個別的 JavaScript 程式碼,設計不同的行為,甚至(因為是網頁嘛),在輸入法中,還可以呼叫 Flash 影片啦、Google 地圖啦…諸如此類。

或這麼說:你現在可以在 Dashboard 上看到的 widget,只要稍微改寫個幾行,就可以改成 OpenVanilla 的選字窗。反之,OpenVanilla 的選字窗,也可以放在 Dashboard 上。

Continue reading