最近界隈でまた SKK が流行っているので手元にある Arch マシンに ibus-skk を入れてみるなりして体を慣らしていっていたりする。
SKKの辞書事情についてはまだよく理解できていない部分もあるが、これに絵文字辞書を入れようとした際にしばらく悩まされた。
今回利用したい絵文字辞書(skk-emoji-jisyo)は絵文字を対象とする辞書であるので当然ながらUnicodeのコードポイントに依存する。そのため辞書ファイルも当然 UTF-8 で配布されている。
最近のSKK実装であれば大抵この UTF-8 の辞書を扱えるらしい。
例えば macOS 用実装である AquaSKK では辞書の設定画面でUTF-8かEUCかを選択できる。
このため、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 は 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
をひらく。
UTF-8 辞書として読み込みたい辞書の末尾に上記スクショのように ,encoding=UTF-8
を書き足し、保存してやればOK。
この上で当該辞書を用いて変換を試みたところ、成功した 。
なお、最近は大体dconf環境であろうのでコマンドラインから行なう際も dconf
に読みかえる必要がある。
1 |
$ dconf read /desktop/ibus/engine/skk/dictionaries |
1 |
$ dconf write /desktop/ibus/engine/skk/dictionaries "['file=/path/to/SKK-JISYO.imascg.unified.euc,mode=readonly,type=file', 'file=/path/to/SKK-JISYO.emoji.utf8,mode=readonly,type=file,encoding=UTF-8']" |
まあ、こんな面倒なことせずとも設定画面に1項目増やして文字コード選べれば済む話なんだけど……(あとSKK辞書つくるときはちゃんとcoding書いておきましょう)
(ところで他の実装はどうだったんだろう)
ちなみに現在最新版の各アイマスskk辞書は既に上記問題には対処済み