Mac OS X (10.3&10.4)安裝,設定,使用經驗談27 Mac OS X (10.3&10.4)安裝,設定,使用經驗談,補充27
全字庫倉頡輸入法參考檔的補充
少爺終於找到,編修全字庫倉頡輸入法參考檔,使其能正常匯入開放香草輸入法
框架並顯示於選字視窗的方法了。
詢問學校老師與進階電腦玩家的結果,都是要少爺學習shell script,學會之後
只要下個指令串,在終端機模式一分鐘解決。可是學習shell script是一個長久
的過程,現在少爺只想找個圖形介面可以處理的急就章辦法。少爺把心一橫,決
定以土法煉鋼的方式,將幾款只有英文介面的文字編輯器,一個一個功能選項慢
慢試,看看能不能碰到一個功能選項,它的執行結果是少爺需要的。最後少爺使
用試算表軟體,搭配文字編輯器交互處理,終於把全字庫倉頡輸入法參考檔編修
完成。因為是在圖形介面下處理,而這個參考檔又有八萬兩千多行,所以電腦處
理的過程,真的很耗時。當然,採用G5 CPU與1GB RAM以上等級的MAC,可能另當
別論了,整個操作流程如下:
一開始先用TextWrangler文字編輯器開啟 cnscj.cin(檔案日期為2006/07/04)
就如同全字庫注音入法參考檔,在 %keyname begin字串以上,只留下:
%gen_inp
%ename cnscj
%cname 中標倉頡
%selkey 1234567890
%keyname begin
這些內容,然後要編輯 %chardef begin與 %chardef end之間的8萬多行,因為
試算表軟體 NeoOffice Calc目前版本,最多只能吃到65535行,所以這8萬多行的
健入碼與中文漢字對照表,必須得拆。少爺個人是拆成6萬行與2萬多行,分別複
製貼上,另存成兩個純文字檔,副檔名都取名為csv,在複製貼上的過程中,要
注意,格式不要跑掉,而且存檔時,編碼格式要跟原始檔一樣。
在 TextWrangler選單列>view>text display 這個選單項目中,少爺將
Page Guide,Tab Stops,Line Numbers,Invisibles,Spaces 都設定成show的
模式,這樣在做字元比較時,較有依據。
少爺先以2萬多行的csv檔為例,開啟 NeoOffice Calc,載入csv檔,會出現一個
"匯入文字"對話視窗,首先注意"匯入字型"是要被選為Unicode(UTF-8)的狀態
,"分隔選項"選擇"固定的寬度",再來第三個"欄位"要開始細部調整設定分隔線
了,大約目測估算一下,在尺規數字"10"中間的位置,一個可視的漢字的右側第
一個位置,點選加入分隔線(這個位置如果往左移一格。則會把可視的漢字切成
兩個空白字元)。點選加入分隔線後,尺規上會出現紅色小點(若點選錯了位置,
再點選一次紅色小點,就會取消了。)。欄的類型就用預設值"標準"即可,完成以
上設定後,點選確定,接下來就是"等" ,為有2萬多行要載入,需要時間,這個
等的過程,讓少爺懷疑,到底是程式當掉了,還是行數多機器慢,因為都沒有感
受到任何徵兆。等了一段時間,終於載入完成,這個csv檔被分成A,B兩個欄位,
B欄位的內容,目測看去,就是井字號與倉頡字根,將B欄位全選並移除,再全選
A欄位,此時在工具列的字型清單選擇一個等寬的字型,少爺選了個courier字型
,稍微等一下,結果可以看到鍵入碼與中文漢字整齊的排列著,最後存檔離開(
要記得存成原來csv副檔名的utf-8編碼unix模式純文字格式)。再將csv檔拿回
TextWrangler開啟,可以發現每一個中文漢字之後,都會有一個或兩個代表空白
字元的菱形淺灰色符號,此時估算一下中文漢字之後第一個空白字元的位置,將
游標移動到空白字元之後,使用鍵盤的方向鍵往前回一格,可以發現編輯器左下
角的狀態列欄位標示數字是11,少爺任意抓了好幾行測試,都是11,少爺因此判
定,每一行的倉頡鍵入碼+空格+中文漢字結束為止,會用掉10個字元的空間(額
外提一下,根據進階玩家提供的想法,如果採用shell script的方式處理,要顧
慮的問題還包含,有的字元可能是4bytes存放,有的是2bytes,有的是1byte,那
麼切該行位置的算法,又不一樣了。),這是少爺根據現在這個環境,呈現的畫
面來判定,別的編輯器與編碼環境是不是這樣的結果,少爺不得而知。
接下來就要用TextWrangler的進階功能。將每一行中文漢字之後的空白字。全都
移除掉。
點選 TextWrangler 選單列>Edit>Selet All> 確定這2萬多行都被選取了,再點
選TextWrangler 選單列>Text>Hard Wrap> 出現一個對話框,Break line at欄
位選擇"Character width",輸入數值"10",Paragraph fill項目要勾選,
Paragraph indentation 項目選擇"Flush left",Relative to first line項目
也要勾選,最後點選Wrap。
等了一會文件處理完畢,這2萬多行,每一行中文漢字之後的空白字元都被拿掉了
,只剩代表"行結束"的淺灰色符號,不過少爺發現,因為游標位置的不同,執行
全選的時候,最後一行的狀況可能會不太一樣,所以處理完後,確認一下最後一
行有沒有殘餘空白字元,2萬多行的csv檔,處理完後存檔(再提醒一次,要注意
如前所述的編碼問題,必須要是跟原始檔一樣的unix純文字檔模式與utf-8編碼格
式。)。而另外一個6萬行的csv檔,依此類推,做法一樣,也因為是6萬行所以處
理的過程,等待的時間,會比較久。
兩個檔都處理完後,接下來就是合併到 %chardef begin與 %chardef end之間,
參考前面所述的cin檔編輯方法,完成存檔(再次提醒,要注意如前所述的編碼問
題,必須要是跟原始檔一樣的unix純文字檔模式與utf-8編碼格式。),然後就如
同前面所述的中標注音的方式,匯入開放香草輸入法框架,將開放香草偏好設定中
,中標倉頡的相關設定值設定好,重新登出登入系統,就可以使用傳統形式的中標
倉頡輸入法,搭配全字庫正楷體(三個字型檔一組),輸入,顯示並列印"82173"
個中文漢字了。
參考連結
這次沒有,都是少爺自己摸索出來的,不過有從國產的文字編輯器軟體MadEdit
for Windows 的操作過程中得到一些靈感,MadEdit 這套國產軟體真是好用,可
惜沒有for MacOSX的版本。 |