fontconfig で、埋め込みビットマップフォントを持つスケーラブルなフォント使用時にビットマップフォントを無効にするには

適用前 (unapplied):
f:id:moriyoshi:20100511144208p:image

適用後 (applied):
f:id:moriyoshi:20100511144209p:image

Linux などのデスクトップ環境で、埋め込みビットマップフォントを持つスケーラブルなフォント使用時にビットマップフォントを無効にするには、すべてのフォントについて、embeddedbitmap プロパティの値が false になるように fonts.conf を設定してやればいい。

fonts.conf のデフォルトの読み込み元は /etc/fonts/fonts.conf だが、このファイルの中で追加の読み込み元として、/etc/fonts/conf.d 配下のファイルが指定されており、この conf.d の中にあるはずの 50-user.conf で ~/.fonts.conf をさらに読み込むようになっているので、~/.fonts.conf に以下のような設定を書いてやるだけで大丈夫なはず。


When you are using desktop environment such as GNOME on a Linux distribution, you may occasionally find some fonts not being anti-aliased when they are displayed in small sizes. That is due to a fontconfig's default setting that lets freetype use bitmap fonts embedded in a scalable font. It is really confusing because that doesn't get overridden even if antialias property is in effect and non-scalable (bitmap) fonts are disabled through <rejectfont> directive.

All you need to do is edit your fonts.conf so embeddedbitmap property is set to false for every font:

<?xml version="1.0" ?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <edit name="embeddedbitmap">
      <bool>false</bool>
    </edit>
  </match>
</fontconfig>