:::

修正Fcitx RIME注音・臺灣正體異體字打字問題 / Fixing the Problem of OpenCC Issues when typing with bopomofo_tw of Fcitx RIME

2-cover-Fcitx_RIME_Fixing_the_Problem_of.png

哈囉,大家最近在吃什麼呢?這裡是終於可以開心打字的布丁。

在臺灣的中文使用者大多都以注音輸入法為主。而各種注音輸入法中,我最推崇的就是RIME中州韻輸入法引擎中的注音・臺灣正體輸入法。在眾多跨平臺的版本中,我目前使用的是Fcitx5 RIME版本。但這個版本有著打一個詞彙卻只出現單字的問題,需要修正opencc之中tw2t.json的設定。

如果你想知道怎麼修正Fcitx RIME的問題的話,就繼續看下去吧!


不過,在文章開始之前,我們還是先來個沒工商版面吧。

沒工商版面:Ducky One 2 天際線TKL機械鍵盤  / Non-advertising column: Ducky One 2 TKL Mechanical Keyboard

2022-0402-031911.png

(照片來源:Ducky)

空有好用的輸入法,沒有好打的鍵盤也是白搭。作為時常打字的程式設計師兼寫些廢話的部落客,我不僅非常依賴電腦軟體的RIME輸入法,就連硬體的機械鍵盤也是不可或缺的關鍵。Ducky One 2天際線TKL機械鍵盤是我入手的第二隻機械鍵盤。而且也是直到我用了Ducky打字之後,我才真正體會到何謂人機一體

Ducky One 2天際線TKL機械鍵盤採用了Cheery MX機械軸,我買的是紅軸版本。PBT的鍵帽材質,不僅觸感非常舒服,也不易卡油漬或是掉漆。Ducky的機械鍵盤每一行按鍵都有不同的傾斜角度,兼顧了觀看和打字的舒適設計,讓雙手可以自然地在鍵盤上舞動。此外,由於桌面空間狹小,我買的80%鍵盤省略了數字鍵,讓我打字時距離滑鼠更近,同時操作鍵盤與滑鼠時,姿勢也更為自然。最後就是Ducky的天際線鍵盤設計,在灰沉沉的大樓中看到遠方天空,給人一種沉穩、安定的感覺,特別適合我這種總是被RBG閃瞎的老人啊!

綜合以上所述,Ducky One 2天際線TKL機械鍵盤讓我喜愛的四大特色如下:

  1. Cheery MX機械軸就是品質保證:雖然很多人都推青軸,但我還是喜歡安靜和紮實的紅軸啊。
  2. 舒服的PBT鍵帽和傾斜角度:雙手可以自然擺放真的很棒。現在打平面的薄膜鍵盤總是會覺得特別累。
  3. 天際線低調沉穩時尚設計:可以選擇將ESC和Enter的鍵帽更換成天空藍,看起來真的很賞心悅目。
  4. 臺灣製造:支持在地企業!

如果你對Ducky One 2天際線TKL機械鍵盤感到興趣的話,可以到Ducky官方網站看看One 2天際線TKL的更多細節。Ducky的機械鍵盤在各大通路都有販售,也可以在INPAD硬派精靈線上購買。

好的,讓我們結束沒工商版面,回到今天要講的主題吧。


環境 / Environment

2022-0402-015949.png

我現在是使用Linux作業系統。但其實Linux作業系統有很多不同的發佈版,每個發佈版都可以使用不同的輸入法框架。每個框架都可以選擇不同的輸入法引擎,這也包含了RIME輸入法引擎。而注音・臺灣正體則是RIME底下的一種輸入法。

我知道現在Windows的使用者已經露出了「不可思議」的表情了。但Linux裡要打個中文,真的就是這麼複雜!

想要安裝RIME的朋友,可以來看看夢見草先生寫的中州韻輸入法引擎安裝教學喔!ibus跟fcitx兩種版本都有,真是太貼心啦!

話說回來,我們繼續來看一下我現在的環境:

  • 作業系統:Kubuntu 21.10
  • Linux核心:5.13.0-39-generic (64-bit)
  • KDE Plasma:5.22.5
  • 輸入法框架:Fcitx 5.0.5
  • 輸入法引擎:fcitx-rime 5.0.4
  • 輸入法:注音・臺灣正體 bopomofo_tw 1.6.1

在其他的環境,例如ibus-rime,就不見得會出現這個問題。不過ibus-rime有更為嚴重的問題,我找了好久都找不到解決方法。所以現在是以Fcitx5的RIME為主。

問題敘述 / Problem Description

2022-0402-021957.png

我想要輸入「為了」這兩個字,而我打了「為了」的注音「ㄨㄟ ˋ ㄌㄜ˙」,不過卻只能選取「為」,而不能輸出「為了」。即使我為RIME加入自訂詞彙,也還是打不出「為了」。只能「為」跟「了」兩個字分開輸入。

一開始我以為是注音・臺灣正體 bopomofo_tw的設定檔bopomofo_tw.schema.yaml的問題。各種嘗試後,赫然發現是RIME使用的開放中文轉換OpenCC (Open Chinese Convert)的問題。接著我又進一步深入研究OpenCC的設定檔,最後才找到在t2tw.json的正確設定組合。

解決方法 / Solution

2022-0402-023858.png

關鍵的設定檔位於 /usr/share/opencc/t2tw.json。這個檔案只有root才能修改,你可以用以下指令使用nano來進行編輯:

sudo nano /usr/share/opencc/t2tw.json

原本的內容如下:

{
  "name": "Traditional Chinese to Traditional Chinese (Taiwan standard)",
  "segmentation": {
    "type": "mmseg",
    "dict": {
      "type": "ocd2",
      "file": "TWVariants.ocd2"
    }
  },
  "conversion_chain": [{
    "dict": {
      "type": "ocd2",
      "file": "TWVariants.ocd2"
    }
  }]
}

請修改成以下的內容,紅字的部分是增加的設定

{
  "name": "Traditional Chinese to Traditional Chinese (Taiwan standard)",
  "segmentation": {
    "type": "mmseg",
    "dict": {
      "type": "ocd2",
      "file": "TWVariants.ocd2"
    }
  },
  "conversion_chain": [
    {
      "dict": {
        "type": "ocd2",
        "file": "TWVariantsRevPhrases.ocd2"
      }
    },
{
    "dict": {
      "type": "ocd2",
      "file": "TWVariants.ocd2"
    }
  }]
}

2022-0402-022936.png

修改後,請執行RIME的「重新部署」。

2022-0402-023007.png

現在打「ㄨㄟ ˋ ㄌㄜ˙」就真的可以直接輸入「為了」了。

2022-0402-023047.png

我平常使用RIME打字都不太打聲調,現在直接打「ㄨㄟ ㄌ」就可以跑出「為了」。需要按的按鍵直接減少一半,打字起來輕盈許多了呢!

可能原因探討 / What's TWVariants and TWVariantsRevPhrases?

2022-0402-024004.png

(圖片來源:繁简中文转换概说)

那麼話說回來,輸入其他文字的時候其實都不太會有問題。偏偏就是少數幾個字,例如「為」,就會被RIME中斷。到底為什麼是「為」,而不是其他字呢?而又為什麼加上「TWVariantsRevPhrases.ocd2」之後就可以正常使用呢?

這個原因,我們可能可以看一下OpenCC這些設定檔的原始碼。

在t2tw.js裡面,我們設定的「ocd2」是已經被編譯後的版本。它的原始的內容可以在GitHub上找到。

2022-0402-024321.png

在對應了TWVariants.ocd2的TWVariants.txt裡,我們可以注意到「爲 為」的設定。從這裡可以猜想,當我們在輸入「ㄨㄟ ˋ 」的時候,RIME是把它當成「爲」,並試著透過OpenCC的t2tw.json設定,把它轉換成「為」。

然而,TWVariants.txt似乎只能處理單字,遇上「ㄨㄟ ˋ ㄌㄜ˙」這種超過一個字的詞彙,它就無法識別了。這時候我們加上TWVariantsRevPhrases.ocd2的設定,這樣就可以讓OpenCC正確處理詞彙。

TWVariantsRevPhrases.ocd2的原始檔TWVariantsRevPhrases.txt裡面,記錄了一些用字轉換,但這之中並沒有「為了」的詞彙。雖然還是不太懂為什麼會是如此,但目前能夠順利運作就好。如果有大神看到這篇的話,可以幫我解惑嗎?


結語 / In closing

2022-0402-023338.png

透過修改OpenCC的t2tw.json設定,Fcitx5 RIME總算能夠正常打字了。

最後就來聊一下這段期間,我跟Linux的輸入法奮鬥的過程吧。

轉換到Linux的時候,一開始我是用ibus-rime。ibus是Ubuntu預設的輸入法框架,相關的設定和文件資源相當多。但ibus-rime在使用Google Chrome 83版後面的版本時,總是會遭遇不明原因的吃字。為此我從Ubuntu的GNOME換成KDE,再換到Majaro KDE、再換到Fedora KDE。後來才發現Fcitx跟Fcitx5都可以正常運作,於是又從Fedora換回Ubuntu,而且直接跳到了最新的KDE版本Kubuntu 21.10。

本篇提到的這個問題是在使用Fcitx5 RIME的時候才會遇到的狀況。一開始我也試著找尋解決方法,但並沒有結果。我只能在遇到特殊字的時候,一個字一個字輸入,就這樣跟Fcitx5 RIME相處了幾個月。不過眼看接下來需要打字的工作只會越來越多,一日不修好這個問題,後面只會越來越痛苦。

C0sTnyCVIAAsUfz.jpeg

(圖片來源:中田譲治)

還好,花時間研究的結果,總算是有了回報。現在打字超級輕盈,比在Windows上用小狼毫打字還要輕鬆,真是令人愉悅啊。


讀者迴響 / Reader Comments

上次寫著寫著居然就把讀者迴響的專欄給忘了orz 這次總算記得啦!讓我們一起來看看這段期間有什麼讀者的留言吧!

2022-0402-034340.png

這位讀者是在「Zotero引用文獻樣式:中文、英文APA合併版本」底下詢問CSL的設定細節。老實說我還蠻感動的。之前也有很多讀者來問Zotero的引用文獻樣式,但是大多數時候,與其說是來問問題,不如說是希望我能幫他們開發他們想要的引用文獻樣式。這位是少數幾位真的想要嘗試修改CSL檔案、創造一個適合自己使用的引用文獻樣式的讀者,值得嘉獎。我知道Zotero使用的CSL-m標準門檻不低,不過真的有心的話還是可以改改看,有問題也歡迎來討論喔。

2022-0402-035132.png

這篇是來自「發掘模型背後的知識:子群組探勘」底下ye先生的留言。留言內容主要是來感謝我之前的資訊行為讀書筆記,同時也表達自己是圖資學領域的學生。其實看到ye先生這樣寫的時候我還蠻訝異的。臺灣的圖資學是指「圖書資訊學」(Library and Information Science, LIS),而其中Information Science在中國大陸通常是作為「情報學」。而這個「情報學」跟日本以理組(理科生)為主的「情報學」又不太一樣。各地對「圖資學」的差異反映了各地的文化發展脈絡,其實是很有趣的議題呢。

2022-0402-040319.png

這篇是來自Facebook粉絲專頁上介紹「PDF-XChange Editor」的留言。陳先生介紹了Abbyy的FineReader,推薦它的OCR功能。我之前的確沒有用過FineReader,我還蠻喜歡它的操作界面,看起來清晰又容易使用。不過FineReader目前沒有Linux版本,我還是希望能找到以Linux能用的軟體為主啦。

附帶一提,很多人都以為Linux的軟體一定都是免費的自由軟體,其實這是一個誤會。Linux裡有許多付費,但很值得使用的工具。我之前用過Qoppa的PDF Studio,它也是容易操作的付費軟體。而Linux最知名的付費軟體,我想應該就crossover吧。crossover大多時候都可以幫你無痛安裝與使用Windows軟體,真的很神。


那麼這次修正Fcitx 5 RIME的教學就到這裡了。寫到最後,我來問個關於輸入法的問題:

你都是用什麼輸入法打字呢?

  • A. 系統內建的輸入法:微軟的繁體中文輸入法、Mac的繁體注音輸入法,開箱即用就好。
  • B. 另外安裝的輸入法:新酷音、RIME,我的輸入法我自己選擇。
  • C. 其他:我有超推薦的輸入法可以跟大家分享!

歡迎在下面的留言處跟大家分享你的想法。你的意見都是我繼續分享的動力喔!

如果你覺得我這篇實用的話,請幫我在AddThis分享工具按讚,或是將這篇分享到Facebook等社群媒體吧!想在社群媒體追蹤我的話,歡迎到我的Facebook粉絲專頁「布丁布丁吃什麼?」按個讚喔!

不知道這篇文章有沒有讓你吃到什麼有趣的東西呢?我是布丁,期待下次見!

總共1 則留言 ( 我要發問 , 隱藏留言 顯示留言 )