VLゴシックのsynthetic emboldeningを抑制して、表示に高級感を。

Free な OS の標準的な日本語フォントとして Vine Linux をはじめ様々なディストリビューションに採用されている「VL ゴシック」。字体の見やすさなどから、徐々に愛好者を増やしているようなんだけど、前々から気にくわなかったのがこれの太字。小さい文字ではそれほど気にならないにしても、大きい文字では、なんか滲んだような表示となってしまっていて、非常に見苦しいのだ。

f:id:moriyoshi:20090530125128p:image

一体フォントの作成者は何を思ってこのようなボールド体を作成したのだろう、と思ってしまうかもしれないが、実際には VL ゴシックにはボールド体の字形が用意されておらず、X アプリケーションが文字のレンダリングに利用している Xft が、動的にボールド体を普通の字形から合成して、グリフを補完してしまっているのだ。 (synthetic emboldening)

Xft は、指定されたフォントをどのようにレンダリングするか、という設定を取得するのに fontconfig というライブラリを使用している。なので、これは、fontconfig の設定を変えることで抑制することができる。

具体的には、~/.fonts.conf に次のような内容を書いておく。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <test name="family">
      <string>VL Gothic</string>
      <string>VL PGothic</string>
    </test>
    <test name="pixelsize" compare="more_eq">
      <double>20</double>
    </test>
    <edit name="embolden" mode="assign">
      <bool>false</bool>
    </edit>
  </match>
</fontconfig>

これは

  • フォント名が「VL Gothic」もしくは「VL PGothic」
  • フォントのレンダリング時の大きさが 20 ピクセル以上になる

場合に synthetic emboldening を抑制する、という設定だ。20 ピクセルという数字にはあんまり根拠はなく、これ以上でかい場合に見苦しいのかな、という感覚で決めた。

結果:

f:id:moriyoshi:20090530125248p:image

個人的には満足いく状態になったと思う。