2007-08-03

fontconfigアプリケーションのフォント設定

最近gnucash 2.2.0が出たのでちょっと遊んでみようとしたが、まあ日本語化がほとんどできていない(1.xのころの訳がそのまま放置されてる感じ)のはいいとして、フォントがギザギザして見た目がなんとも不恰好。同じfontconfigを使っているはずのfirefoxやopenoffice.orgはちゃんとアンチエイリアシングがかかってるのに。そういえば、インストールだけして使ってないgimpとか、mousepadとかもギザギザしている。

で、原因を調べるうちに、japanese/ipa-ttfontsを入れるとついてくる /usr/local/etc/fonts/conf.d/62-fonts-ipattfonts.confのsans-serifからIPAPGothicとIPAUIGothicの行を消してみると、当然M+フォントになってしまうもののきちんとアンチエイリアスされたフォントが表示されることがわかった。ということは、オリジナルのIPAフォントに含まれている組込ビットマップが表示されてしまっているだけという感じである。

あとは、~/.fonts.confあたりをいじればいいんだろうということで、書体関係 Wiki - X でのフォント設定を参考に、

<match target="font">
<test name="family" compare="eq">
<string>IPAPMincho</string>
<string>IPAPGothic</string>
<string>IPAUIGothic</string>
<string>IPAGothic</string>
<string>IPAMincho</string>
</test>
<edit name="embeddedbitmap" mode="assign">
<bool>false</bool>
</edit>
<edit name="antialias" mode="assign">
<bool>true</bool>
</edit>
</match>
のように加えたところ、gnucash, gimp, mousepadともアンチエイリアスが有効になった。というか、組込ビットマップフォントを使わなくなった。antialiasの部分は付けなくても同じ。falseにすると当然ギザギザになる。mode="assign"もこの場合はなくても同じ。IPAフォントに限らず全部やりたいという場合は、test要素を省けばよいが、match要素の中に入れておかないと効かない。

ついでにサブピクセルレンダリングは、conf.avail/10-sub-pixel-rgb.confをconf.dにリンクするか、その中身を~/.fonts.confに入れればよい。ただ、rgbかbgrかなどは、クライアント側の問題ではなくサーバ(ディスプレイ)側の問題なんだから、本来ここで固定的に変更するのはおかしいのではないかと思う。

さらにもう一件、以前の記事で、Firefoxでboldを出すにはuserContent.cssをいじって<b>のfont-weightをboldにすればよいと書いたが、あれはやはりただの対症療法だったと悟った。やはりhtml的に<b>の中にさらに<b>を書いてより強調したいようなこともあるかもしれない。なので、問題の本質は、1回の<b>でちゃんと太字にならないフォント処理側にあって、css側にあるわけではない。

解決は同様に~/.fonts.confでできる。
<match target="font">
<test name="weight" compare="less_eq">
<const>medium</const>
</test>
<test target="pattern" name="weight" compare="more">
<const>medium</const>
</test>
<edit name="embolden" mode="assign">
<bool>true</bool>
</edit>
</match>

0 件のコメント: