みかづきの色々

デバイス(スマホからキャンプ用品まで)とかプログラミングとか中心のいろいろ試験的なブログ。

GNOME-terminalにおける一部のフォントがつぶれる問題

本項は以下と同期しています。

なお、以下は技術的な参考記事です。
eng-blog.iij.ad.jp


これは GNOME-terminalの設定で「曖昧な文字幅を半角で表示する」ようになっているのを全角表示に変更するものです。

解説します。

ちょっとパソコン知ってる人ならパソコンの文字に半角(ASCII文字など)と全角(日本語のひらがな・漢字等)の二種があるのはご存じだと思います。

(まぁ、これらとは別に可変幅と固定幅の問題の方が最近は大きいかもですが)

これはCP932(WindowsシフトJISと言われているやつの最新の実装)でもEUC-JPでもiso-2022-jp(いわゆるJIS)でも同様なんですが、実はUnicodeの一派である UTF-8 には「幅がどちらとも決まってない曖昧な文字列」があるんですよ。たとえば「…」や「◇」がいい例で、GNOME-Terminalのデフォルト設定では、これを半角とみなしてしまうので文字がつぶれたり表示がおかしくなります。
これは不具合ではなくむしろ ''非漢字圏むけの仕様'' なので、変更が必要です。

これに対応する方法は今のところ三つ。

方法その1、UTF-8以外の文字コードに切り替える。

これはガチで有効ですけどたいへん不便なので却下。

方法その2、mlterm を使う。

mltermは実は日本初のTerminalエミュレータでたいへん有能で、これ入れるだけですぐ解決します。

しかしGNOME環境の場合は……親和性が微妙 なので「んー」という人もいらっしゃるでしょう。実は私もここの問題で「んー」となってしまいました。

方法その3「曖昧幅のフォントを全角表示」に変更。

GNOME-Terminalの設定みればみつかると思いますが、曖昧幅(ambiguous-width)のフォントを全角(wide)半角(narrow)どちらで表示するかっていうのがみつかると思います。デフォルトは半角(narrow)になっているので、これを全角(wide)にしてください。

ふふ、にっくき「◇」や「…」のダブりがきれいに解消されますよ?

残っている問題

正直申し上げると、そもそもこのCJKむけ対策でも完璧とは言い難いと思います。GNOME-Terminalはそれほど高性能のターミナルじゃないですしね。

現状で表示まわりでベターを選ぶなら mlterm かなと思います(それでも完璧ではないが)