Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

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

$
0
0

はじめに

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.1.1048 (b45125)なので、そのコミットをチェックアウトする。

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

Kaoriya版vim相当にする

パッチはKaoriya版のpatchフォルダに入っている*.diffを使わせていただく。今回はGit for Windows (msys2)のpatchを使用した。パッチのうち0001-rich_icon.diffは適用できなかったのでスキップした。

$ cd /d/work/vim
$ patch -p 1 < /d/work/vim81-kaoriya-win64/patch/0000-kaoriya_marks.diff
 :
 :

このままビルドしても起動できないので、vimを使って必要なファイルを更新する2

d:\work\vim>cd src
d:\work\vim\src>d:\work\vim81-kaoriya-win64\vim.exe -u NONE -i NONE -X -S create_cmdidxs.vim

ビルド

基本的にvim-jpの説明の通りだが、nmake時にDEFINES=-DFEAT_PROPORTIONAL_FONTSを指定する。
なお、8.1.1048時点では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:directxset ambiwidth=double
set guifont=Consolas:h14
set guifontwide=メイリオ:h14

さいごに

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

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

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

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

ロダンNTLG (ニンテンドー3DSなどで使われているフォント)
ロダンNTLG M

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

新ゴ
新ゴ R

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


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>