NERDFonts

読了まで:約4分


とは?

のコトで、Powerline 向けのフォントをベースに様々なアイコンフォントが追加されたフォントで、 主に Terminal Emulator などでのアイコン表示に使われます。

NERDFonts を一番手軽に使う方法

おそらく一番手軽に NERDFonts を扱う方法は:

  • NERDFonts が公式に提供している patched fonts を使う
  • NERDFonts を取り込んで配布しているフォントを使う

のどちらかです。

また自分の普段使っている Monospace フォントが NERDFonts を含んでいない場合などでは、

  • Windows だとフォントリンク
  • Linux だと fontconfig によるフォントのリンク

と言った辺りでなんとかなる場合もあります。(macOS で類似機能があるかは不明)

NERDFonts に対応していないフォントで NERDFonts を使う方法

私の環境だと普段使っている Monospace フォントは、

なのですが、この合成フォントには NERDFonts のグリフは含まれていないため、 下記の様な方法で NERDFonts を使っています

まず用意するもの

基本的にこの手法で用意するものとしては、下記の三つです:

  1. 普段使っている Monospace フォント(私の場合 MyricaM M)
  2. 元のフォントのソースフォントに NERDFonts のパッチが当たったもの
  3. Windows の fontlink や Linux などでの fontconfig 環境

(1) については各環境に合わせて、(3) については Windows か Linux なら問題なし、 と言う感じなのですが (2) はちょっとややこしいので解説すると、 私の使っている MyricaM M では、下記の様なグリフの継承が行われています:

源ノ角ゴシック(Noto Sans Mono) → 源真ゴシック → Myrica M

また MyricaM M では Inconsolata のグリフも継承しているのですが、 文字幅に関して言えば大本である Noto Sans Mono がベースとなっているっぽいので、 私の場合だと用意すべきモノとしては:

  1. MyricaM M
  2. Noto Sans Mono に NERDFonts patch が当たったフォント
  3. Linux(NixOS)で fontconfig が使える環境

と言った感じになります。

そして NERDFonts と NERDFonts 非対応フォントを組み合わせる上で一番重要なのは、

組み合わせる 2 つのフォントの、グリフ幅と高さが合っていること

なので、上記の例となる MyricaM M だと Inconsolata に NERDFonts patch が当たっているフォントとの組み合わせは微妙にグリフ幅と高さが合わないので、 この後で解説するフォントサイズの微調整を行なったとしても上手く噛み合わないと言う結果になります。

グリフサイズを微調整する

基本的には上記の様なフォントの組合せでフォントのグリフ幅と高さは合うと思うのですが、 フォントのレンダラーや各種フォントのレンダリング方法によっては、 フォントのグリフサイズを合わせるためにフォントサイズを調整する必要があります。

しかしこれらの調整方法については各種フォントリンカーやフォントレンダラーを使うソフトウェアによってまちまちで、 一同に解説する方法があまり無いのですが、例として普段 NixOS on WSL2 で使っている VcXsrv 上の mlterm で解説すると、 私は下記の設定でグリフサイズを合わせる事にある程度は成功しています:

# ~/.mlterm/aafont
DEFAULT=MyricaM M 16
U+E000-F8FF=NotoSansMono Nerd Font 14

# ~/.mlerm/main より抜粋
col_size_of_width_a = 2
fontsize = 15
line_space = 3

なおフォントサイズなどを微調整する際に一番重要なのは、先にも述べた通り、

組み合わせる 2 つのフォントの、グリフ幅と高さが合っていること

なので、これさえ合っていれば NERDFonts のパッチが当っていないフォントだとしても、 NERDFonts のパッチが当たったフォントと同等の環境が得られると思います。

あと細かい話と最終手段

以上が NERDFonts を手軽に使う、 あるいは NERDFonts にフォントが対応していなくともそこそこに使える方法なのですが、 それでも NERDFonts のグリフがズレたりして気になる、と言った場合には、 最終手段として、

自前で NERDFonts と使いたいフォントを合成する

と手段があります。

なお私はこの方法を取ったことが無いのであまり詳しくは無いのですが、 基本的に NERDFonts や NERDFonts 対応の合成フォントは、

を使ったスクリプト処理と微調整でモノを実現していて、実際のサンプルとしては、

が参考になると思います。

なおフォントのグリフサイズについては基準となる大きさが 1000em のものと 1024em があったりするので、 自前でフォントを合成する場合には、この辺りを意識してフォントを合成するとより上手く行く可能性が上がると思います。


ちなみに NERDFonts 対応フォントをどの環境でもグリフの崩れなくキチンと表示する、 と言うのはかなり難しいと言うか苦難の道程なので、 ある程度綺麗に表示が出来たらそこそこの所で妥協するのも必要なのではないかな? と個人的には思っています。はい。

にゃるら(カラクリスタ)

『輝かしい青春』なんて失かった人。
次に備えて待機中。

今は趣味でプログラミングをして
生活しています。