Jun 07, 2016

Italic fonts in iTerm2, tmux and Emacs

息抜きで iTerm2 + tmux + Emacs な環境下でフォントをイタリック表示できるようにしてみた。

バージョンなどは以下の通り。

  • Mac OS X 10.11 (El Capitan)
  • iTerm2 v3.0.0
  • tmux 2.2
  • Emacs 24.5

terminfo

tmux 2.1 以降 screen-256color など screen- で始まる terminal を default-terminal として設定している場合はイタリック表示を無効にされてるらしいので、別の terminfo entry を作って指定する。FAQ の感じで。

$ cat tmux.terminfo
tmux|tmux terminal multiplexer,
    ritm=\E[23m, rmso=\E[27m, sitm=\E[3m, smso=\E[7m, Ms@, ncv@,
    use=xterm+tmux, use=screen,

tmux-256color|tmux with 256 colors,
    use=xterm+256setaf, use=tmux,

El Capitan のシステムの screen-256color だと underline も表示できていなかったので、それの表示に必要な(?) ncv@ もついでに追加。で、このファイルを tic -x tmux.terminfo としたいのだが、xterm+tmuxxterm+256setaf もシステムになかったりしたのでその辺りを ncurses v6.0 から持ってきて追加する。

$ cat xterm.terminfo
xterm+tmux|advanced xterm features used in tmux,
    Cr=\E]112\007, Cs=\E]12;%p1%s\007,
    Ms=\E]52;%p1%s;%p2%s\007, Se=\E[2 q, Ss=\E[%p1%d q,

xterm+256setaf|xterm 256-color (set-only),
    ccc@,
    colors#256, pairs#32767,
    initc@,
    setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
    setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
    setb@, setf@,

xterm-256color-italic|xterm 256color with italic and underline,
    ritm=\E[23m, rmso=\E[27m, sitm=\E[3m, smso=\E[7m, Ms@, ncv@,
    use=xterm-256color,

で terminfo entry 作る。

$ tic -x xterm.terminfo
$ tic -x tmux.terminfo

iTerm2

iTerm2 で、イタリックフォントを有効にしつつ、Terminal の設定に xterm-256color-italic を設定。

tmux

次に tmux.conf で設定。

set -g default-terminal "tmux-256color"

これで、iTerm2 + tmux 上のシェルで italic 出てるか確認できる。

$ echo `tput sitm`italics`tput ritm`

Emacs

最後に Emacs。daemon モードで起動している場合は emacsclient を、そうでない場合は emacs コマンドを italic 対応した term 環境化で起動する感じ。

alias emacsclient="TERM=xterm-256color-italic emacsclient"

コメントをイタリックにしてみたの図。

悪くない。

参考

Comments