Windows の Vim でフォントを綺麗に表示する方法

読みやすいフォントとして Ricty をよく使いますが、Windows ではそのままだと線が欠けてしまったりして綺麗に表示されません。
そんなときに gdipp などが有効ですが、Vim – KaoriYa ではこの手のツールは使えません。
ではどうするかというと、実は Vim 自体にフォントを綺麗に描画する DirectWrite 機能を有しているのでそれを使います。
設定自体は簡単なのですが他に影響が出てちょっと面倒なのでまとめてみます。

設定方法はこちらにもありますが、set renderoptions=type:directx を追加するだけです。
但し set enc=utf-8 が設定されていることが発動条件なのですが、これを設定するとメニューが日本語表示の場合文字化けします。
そこで set langmenu=ja_jp.utf-8 でメニューも UTF-8 にする必要がありますが、どうも起動時が cp932 固定のようで反映しません。
結局一旦メニューを削除してメニューも UTF-8 にして再登録するという面倒な作業が必要になります。
まとめると以下のような設定になります。

set enc=utf-8
source $VIMRUNTIME/delmenu.vim
set langmenu=ja_jp.utf-8
source $VIMRUNTIME/menu.vim
set guifont=Ricty:h12:cSHIFTJIS
set renderoptions=type:directx
set antialias

一応 set antialias も入れてみましたが影響はないかもしれず、アンチエイリアスなら set renderoptions=type:directx,renmode:5 の方が良さそうです。
この辺は好みかもしれません。

これでやっと落ち着いたと思いきや印刷時のヘッダが文字化けします……。
これも cp932 決め打ちのようなのでこちらを参考にして、_gvimrc の文字コードが UTF-8 なのを確認してから以下のようにヘッダを再設定します。

set printheader=%<%f%h%m%=%N ページ

これで Ricky の文字が欠けずに表示される環境が作れました。
ちなみに Ricky はライセンスの関係で ttf を直接配布できませんが、その辺を回避した Ricty Diminished というものがあり、さくっと導入できるのでおすすめです。

technical

Posted by yokky