Qt4でSans Serif(サンセリフ)のフォントがアンチエイリアスされない件についてと非推奨な対処
Qt4のアプリケーション上で、ユーザインターフェースに使用される既定のフォントの英数部分だけアンチエイリアスがされないという状態が続いている。
qtconfig設定ツールで見ると、既定のフォント(「Fonts」タブの「Default Font - Family」)が「Sans Serif」になっていて、別のフォントへ変更することはできるのだが、そのままでは表示が汚い状態になる。
同じ「Font」タブの下にある「Font Substitution」では、フォントの置換(代替)が行えるようになっているのだが、ここで「Select or Enter a Family」の一覧から「Sans Serif」を選択すると「helvetica」が出てくる。これを消したり別のフォント名に置き換えたりすることはできるものの、保存後qtconfigを再び実行するとまた復活してしまい、設定は実際には反映されない。
フォントの描画は汚く、この「helvetica」は実質消せない
KDE4を使用していると、KDE上の各種フォント設定が「Sans Serif」になっているため、個別に設定しなくてはならず、面倒になる。
数字部分のアンチエイリアスが無効になっているのが分かる
これを何とかしようと思い、lsofで調べると、
$ lsof | grep helv qtconfig 4679 [ユーザ名] mem REG 8,8 4677 604632 /usr/share/fonts/75dpi/helvO12-ISO8859-1.pcf.gz qtconfig 4679 [ユーザ名] mem REG 8,8 4451 604150 /usr/share/fonts/75dpi/helvB12-ISO8859-1.pcf.gz qtconfig 4679 [ユーザ名] mem REG 8,8 14390 604927 /usr/share/fonts/75dpi/helvR12.pcf.gz qtconfig 4679 [ユーザ名] mem REG 8,8 4425 604840 /usr/share/fonts/75dpi/helvR12-ISO8859-1.pcf.gz
のようにpcf形式のビットマップフォントが(Helveticaとして)使用されているようで
これらのファイルの属するパッケージを調べると
$ qfile /usr/share/fonts/75dpi/helvO12-ISO8859-1.pcf.gz media-fonts/font-adobe-75dpi (/usr/share/fonts/75dpi/helvO12-ISO8859-1.pcf.gz) (他のファイルも同様に「font-adobe-75dpi」のものだった) $ equery depends font-adobe-75dpi [ Searching for packages depending on font-adobe-75dpi... ] x11-base/xorg-server-1.3.0.0-r6 (media-fonts/font-adobe-75dpi)
Xのサーバが依存しているパッケージの1つの一部ということで、ディストリによってはアンインストールは難しそう。
試しに上記ファイルを別の場所に退避(移動)したところ
- helvO12.pcf.gz
- helvB12.pcf.gz
- helvR12.pcf.gz
の3ファイルが代わりに使用され、これらを退避すると次は
- helvO10.pcf.gz
- helvR10.pcf.gz
- helvB14.pcf.gz
- helvR14.pcf.gz
ときりがない上にサイズも変わってしまっているため、試しに/usr/share/fonts/75dpi/以下の「helv」で始まる名前のファイルを全て別の場所に退避したところ、手元の環境ではこの問題は回避されたように見える。
qtconfig
KDE4のフォント設定
ただ、環境(フォントのインストール状況など)により、回避されない場合があるかもしれない。また、この対処には副作用があるかもしれないので、おすすめはできない。
(2008/11/13)GentooからMandrivaへ乗り換えた時点ではこの記事の問題は起きていない(Qtのバージョンは4.4.3)。
関連URL:
使用したバージョン:
- Qt 4.4.1
- KDE 4.1.0