ibus-skk でUTF-8辞書を使いたい

最近界隈でまた SKK が流行っているので手元にある Arch マシンに ibus-skk を入れてみるなりして体を慣らしていっていたりする。

SKKの辞書事情についてはまだよく理解できていない部分もあるが、これに絵文字辞書を入れようとした際にしばらく悩まされた。

今回利用したい絵文字辞書(skk-emoji-jisyo)は絵文字を対象とする辞書であるので当然ながらUnicodeのコードポイントに依存する。そのため辞書ファイルも当然 UTF-8 で配布されている。

最近のSKK実装であれば大抵この UTF-8 の辞書を扱えるらしい。

例えば macOS 用実装である AquaSKK では辞書の設定画面でUTF-8かEUCかを選択できる。

AquaSKKの辞書設定
AquaSKK では UTF-8 を選択できる

このため、UTF-8辞書の導入は簡単に出来る。

一方で、ibus-skk だとそうはいかないらしい。

例えば、アイドルマスターシンデレラガールズの登場人物や楽曲なんかを収録した辞書である skk-dict-imascg は元々の UTF-8 版辞書にくわえ、EUC 版の辞書ファイルが用意されている。

libskkを使ったSKK実装で辞書を使用できない · Issue #1 · project-brightblue/skk-dict-imascg

どうも ibus-skk には UTF-8 な辞書は登録出来ないとか……

………

……

まっさかー、そんなわけ……

とはいったものの、ibus-skkの設定画面にはそんな項目たしかにない。

ibus-skk の辞書追加画面

ibus-skk の辞書設定

当然このまま使おうとしたところで変換できない。🤔

……と思ってたけど変換できた。マジかよ。

検索したところ ibus-skk は EUC 以外(UTF-8 や SJIS など)にも対応しているということが発覚した。

Look over invalid chars, or support UTF-8 dictionary? · Issue #45 · ueno/ibus-skk

このIssueによるとどうやらConding cookie(先頭行におく -*- coding: utf-8 -*-みたいなやつ)で文字コードを判定する機能が存在してい、それもかなり初期から用意されているらしい。なにも面倒なことはなかった……

ちなみに ibus-skk の吐くユーザー辞書の先頭行にもきちんと ;;; -*- coding: euc-jp -*- が入っていた。


辞書のメンテナがちゃんとそれを考慮していればいいが、そうとは限らない。

このIssueではそういった場合に設定を弄って文字コードを指定する手段についても触れられていた。

gconf/dconfで /desktop/ibus/engine/skk/dictionaries の値をちょっと弄ってやればよいとのこと。

Issue同様コマンドラインからこれを行なってもいいが、コピペではミスしそうだったのもあり、GUIからおこなった。

今回はArchだったのでdconf-editorを開き(もちろん入ってるよね?)、/desktop/ibus/engine/skk/dictionariesをひらく。

スクショではSKK-JISYO.emojiを弄っているがコイツは弄る必要は本来ない

UTF-8 辞書として読み込みたい辞書の末尾に上記スクショのように ,encoding=UTF-8 を書き足し、保存してやればOK。

この上で当該辞書を用いて変換を試みたところ、成功した 。

わかりにくいけどUTF-8版辞書。文面に意味はない。

なお、最近は大体dconf環境であろうのでコマンドラインから行なう際も dconf に読みかえる必要がある。

まあ、こんな面倒なことせずとも設定画面に1項目増やして文字コード選べれば済む話なんだけど……(あとSKK辞書つくるときはちゃんとcoding書いておきましょう)

(ところで他の実装はどうだったんだろう)


ちなみに現在最新版の各アイマスskk辞書は既に上記問題には対処済み

コメントを残す