emacs26.2 で矢印(→)等の一部のフォントが半角表示されるようになった

Page content

emacs のバージョンを 26.2 に変えたことで、 色々と細かいところの使い勝手が変っている。

その中で、 等の一部のフォントが半角表示されるようになったのが 微妙にストレスだったのでちょっと追ってみた。

原因

原因、と言うよりは起因と言った方が良いかもしれないが、 等の一部のフォントが半角表示されるようになったのは、 フォントに "DejaVu Sans Mono" を使用していることに起因していた。

これを "Bitstream Vera Sans Mono" に変更することで、現象が治った。

全く同じ環境で、 emacs 26.2 ではなく、以前使用していたバージョンの emacs だと 現象は発生しなかった。

emacs の処理が変ったことが原因であるのはほぼ間違い無いが、 emacs の何がどう変ってこの現象が発生し、 どう設定(使用するフォントを変える以外で)すれば、 現象を修正できたのかは残念ながら分からないまま。

と、思ったが、次のブログに答えがあった。

<http://misohena.jp/blog/2017-09-26-symbol-font-settings-for-emacs25.html>

詳しくは、上記ブログを確認してもらうとして、 要点だけ説明すると use-default-font-for-symbols に nil 以外が設定されていると、 シンボル等の文字のフォントが default フォントを使用するようになるらしい。 このデフォルト値が t であるため、矢印等の一部のフォントが半角になっていた。

ということで、 以下を設定してやれば、使用するフォントを変えなくても全角で表示されるようになる。

(setq use-default-font-for-symbols nil)

じゃぁ、どうして "Bitstream Vera Sans Mono" に変えると 全角で表示されたのか?が気になったんで調べてみたが、 どうやら "Bitstream Vera Sans Mono" には矢印などのフォントが 含まれていなことが原因のようだ。

fontforge でフォントの中身を見ると、 "Bitstream Vera Sans Mono" には矢印のフォントがなく、 "DejaVu Sans Mono" には矢印のフォントがあることが判った。

つまり、"DejaVu Sans Mono" には矢印のフォントがあるので、それが表示され、 "Bitstream Vera Sans Mono" には矢印のフォントがないので、 別で設定していた全角のフォントが表示された、ということだろう。

あぁ、これでストレスが一つ減った。