Help us understand the problem. What is going on with this article?

Windows でのステータスライン用フォント

More than 5 years have passed since last update.

本記事は Vim Advent Calendar 2013 の 132 日目です。
131 日目は @keizo_bookman さんによる、とあるvim宣教師の手記 でした。

vim-airline 等ステータスライン系プラグインでは、フォントにパッチを当てることでステータスラインのデザインを更に良くする方法があります。
しかし Windows の定番フォント Consolas ではうまくパッチが当たらなかったり、そもそもパッチを当てるための環境 (fontforge) を用意するのが不便という事情がある為、別のアプローチでこれを行うというのが本記事の趣旨です。

パッチ用フォントの入手、インストール

まずはステータスライン表示用の文字のみが含まれた、パッチ用のフォントを入手します。これは powerline のリポジトリで配布されています。

https://github.com/Lokaltog/powerline/blob/develop/font/PowerlineSymbols.otf?raw=true

これを windows 用の truetype フォントに変換します。変換は Web サービスで行うのが手軽でしょう。調べればそれっぽいサービスがいくつか引っかかります。

http://www.freefontconverter.com/

作成した ttf フォントファイルをインストールします。

フォントリンク

作成したパッチ用のフォントを、対象のフォントに fontlink させます。
例えば Consolas で行う場合、レジストリの
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink
に複数行文字列として新たに Consolas という値を追加し、以下の値を書き込みます。

Consolas
PowerlineSymbols.ttf

他に日本語フォント等リンクさせている場合、一番上にパッチ用のフォントを追加します。

Consolas
PowerlineSymbols.ttf
MEIRYO.TTC,Meiryo,128,85

ちなみにフォントリンクはリンクさせるフォントのサイズを調整することができます。ここで 85 となっている 4 つめの値を、128 を基準に小さくすれば リンクフォントが大きく、128 より大きくすればリンクフォントが小さくなります。3 つめの値も scaling factor に関係すると説明されているところが多いですが、これはおそらく font charset に関係する値のようなので日本語をリンクさせる場合は 128 を指定しておきます。

メリット・デメリット

Windows ではフォントのエイリアスがうまく表示されず、Inconsolata や Ricty などの他 OS での定番フォントが汚くなりがちですが、この方法だと Windows に最適化されている Consolas を用いる為レンダリングが綺麗です。
また、レジストリを操作する必要はありますが、引き換えにフォントにパッチを当てる必要がありません。

デメリットというより制限事項ですが、追加されたフォントのシンボルと隣の文字が続いて表示されているような箇所では、若干の隙間があるようです。カラースキームによってはこの隙間が見えやすかったり見えにくいことがあります。但しパッチを当てたフォントについてもシンボルとフォントのバランスが取れていなかったり、同様に隙間が見えることもあるようです。

おまけ

少し前に、Vim を VS2013 でビルドする記事を書きました (宣伝)。

http://qiita.com/s_of_p/items/fe522eb6b1d48b8b3885

VAC の記事ではありませんが、よければチェックしてみてください。

以上 Vim Advent Calendar 2013 132 日目の記事でした、次回は現在未定です。

参考

http://www.natzworks.com/digital/2010/454.html
http://msdn.microsoft.com/en-us/library/cc194829.aspx

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした