LoginSignup
2
1

More than 1 year has passed since last update.

Windows版gVimでConsolas+メイリオを使う

Last updated at Posted at 2019-04-29

はじめに

Windows版gVim1のフォントに、英数字にはConsolas、日本語などその他の文字にはメイリオを使いたい。しかし、Windows版gVimのフォント(guifont, guifontwide)にはプロポーショナルフォントを指定することができないため、プロポーショナルフォントであるメイリオを指定することができない。メイリオの代わりにMeiryoKeを使えば目的は達成できるが、フォントファイルの改変にはライセンス上の問題がある。
そこで、MeiryoKeは使わず、gVim側でどうにかすることにした。

結論

FEAT_PROPORTIONAL_FONTSを有効にしてgVimをビルドすればよい。フォントが等幅かどうかのチェックが行われなくなる。
Consolas+メイリオ

手順

Kaoriya版のgvim.exeを置き換える形にする。そのため、あらかじめKaoriya版(g)Vimは使えているものとする。
ビルド環境はVisual Studioがインストールされていてnmake, rc等にパスが通っていればよい。この記事ではVisual Studio 2019の"x64 Native Tools Command Prompt for VS 2019"を使っている。
パスやパッチのあて方は環境に合わせて適宜読み替えてほしい。

vimのソースコードを入手

Kaoriya版パッチをあてるために少し前のバージョンに戻す。現在リリースされているKaoriya版ビルドは8.2.1287なので、そのコミットをチェックアウトする。

d:\work>git clone https://github.com/vim/vim.git
d:\work>cd vim
d:\work\vim>git checkout v8.2.1287

Kaoriya版vim相当にする

パッチはKaoriya版のpatchフォルダに入っている*.diffを使わせていただく。

d:\work\vim>git apply -p 1 < d:\work\vim82-kaoriya-win64\patch\0000-kaoriya_marks.diff
 :
 :

ビルド

基本的にvim-jpの説明の通りだが、nmake時にDEFINES=-DFEAT_PROPORTIONAL_FONTSを指定する。
なお、現在はICONV=yesがデフォルト、MBYTEは常時有効になったため廃止されているので、これらは指定しなくてよいはずだ。
今回はとりあえずConsolas+メイリオさえできればよかったので、LuaやPythonなどは指定していない。

d:\work\vim\src>nmake -f Make_mvc.mak GUI=yes IME=yes DEBUG=no DEFINES=-DFEAT_PROPORTIONAL_FONTS

srcフォルダにgvim.exeが生成されるので、これをKaoriya版gvim.exeと差し替える。
また、Kaoriya版のswitches\catalog\utf-8.vimswitches\enabled\utf-8.vimに移動する。

gvimrc

.gvimrcなどgVimが読み込む設定ファイルに以下のように記述する(renderoptionsを設定しない場合は表示上のゴミが発生したりベースラインより下が欠けたりするが、設定するとフォントによってはベースラインの位置が上にずれてしまう)。

.gvimrc
"set renderoptions=type:directx
set ambiwidth=double
set guifont=Consolas:h14
set guifontwide=メイリオ:h14

さいごに

この方法が通用するのは、メイリオのような非ASCII文字が実際には等幅となっているフォントのみであるので、すべてのフォントについてこの方法で正しく描画できるとは限らない。とはいえたいていの日本語フォントは等幅であると思われる。

(例) Yu Gothic UIの場合
Yu Gothic UI

Consolas+メイリオ以外のサンプル

ミンニアム (メイリオ日本語部分と同じデザイナーによる明朝体風フォント)
ミンニアム

ヒラギノ角ゴ
ヒラギノ角ゴ W4

たぬき油性マジック
たぬき油性マジック

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1