2017/04/16

tmux 2.3 を全角記号対応させる

tmux 2.3 をちょっといじって全角記号の幅を2にした版を作ってみました。


環境

  • macOS Sierra 10.12.4
  • Homebrew 1.1.12-40-g02f018933
  • Homebrew/homebrew-core (git revision 5559; last commit 2017-04-15)
  • tmux 2.3 (正確には 2.3リリース以降の 640666fb36d7465b188f9d0bedc83ad60b83a1d7)
  • utf8proc 2.1
  • フォントは Ricty



状況

tmux を使っていると ─(U+2500) や(U+25bd) な文字の幅が半角扱いになってしまい、表示がおかしくなる時があります。
例えば、画面を縦2つに分割すると



のように線が何故か二本表示されたり、記号の表示が変になってしまいます。

これは分割に使用されている文字(─)の幅の扱いを tmux が勘違いしているために起こる問題です。
─ といった記号は EastAsianAmbiguous といった種類に区分され、言語圏によって文字幅が違います。
例えば英語圏では基本的に使う文字幅は1なので ─ の幅は1ですが、日本語圏では全角が基本なので文字幅は2となります。
この問題に関しては https://github.com/hamano/locale-eaw などが詳しいです。


解決法

これは Terminal の設定と locale の設定とフォントに依存するので解決方法はいくつかあります。
今回は
  • Terminal は EastAsianAmbigous を Full-Width にしている
  • フォントは日本語フォント( EastAsianAmbiguous は幅2)
  • locale には依存しない (en_US.UTF-8 でも ja_JP.UTF-8 でもOK)
の時を想定しています。
具体的には tmux が文字幅の取得に使っている utf8procちょっといじって、EastAsianAmbiguous の幅を強制的に2にしています。
あと、画面分割に使う文字を ascii にしています。


インストール方法

formula にしてあるので

  • $ brew tap atton-/customs
  • $ brew install atton-/customs/utf8proc
  • $ brew install --HEAD atton-/customs/tmux
でインストールできます。
縦に分割した時に


のようにきちんと線が1本になるはずです。



まとめ

強制的に EastAsianAmbiguous の幅を2にして日本語フォントとの相性を良くしました。
実はこれは対処療法的な解決案で、根本的な解決ではありません。
その辺りは結構長くなると思うので書くなら別の記事で書きます。


参考文献

0 件のコメント:

コメントを投稿