Swingフォント改善作戦 (んー、微妙?)

  • (2009-02-24) コメントを受けて、少々追加/修正。

Swingのフォントが汚ない(@Windows XP)ので、何とかならんかといろいろ試してみた。

アンチエイリアスのオプションを加えてみた

「Java SE 6完全攻略」第17回 文字に対するアンチエイリアス | 日経 xTECH(クロステック)等を参考に、JVMの起動オプションに「-Dawt.useSystemAAFontSettings=on」を指定してみた。

確かに効果はあるが、今時液晶ディスプレイじゃない環境を探す方が難しいくらいなので、やはり「lcd」を使えるようにしたい。

ここから試行錯誤の日々が始まったのであった。

MSゴシック/MS明朝の埋め込みビットマップフォントを削って入れ換えてみた

以下のページを参考に作業してみた。

作業自体は問題なく、Swingを含むシステムフォント全般でClearTypeが効くようになった。が、小さいフォントがボケボケ過ぎて使用に耐えなかったorz

IPAフォントを入れてfontconfig.propertiesを設定してみた

何故IPAフォントかというと、それなりの品質でライセンスの縛りがそれほどキツくないからである。(利用者が改変するのは認められてる。改変版の再配布はNGだが)

で、以下のページを参考に、メイリオの代わりにIPAフォントを使ってみた。

んー? 何か効いてる気がしない……、ってこれもビットマップフォントが埋め込まれてるのか(^^;

IPAフォントからビットマップフォントを削ってみた

以下のページを参考に(以下略)

んー、微妙?


  • あと、よく確認すると、「-Dawt.useSystemAAFontSettings=lcd」を付けなくてもClearTypeが効いていた。……デフォルトで有効になっていたけど、MSゴシックの埋め込みビットマップフォントのせいで気付かなかった?

とは言え、FreeMind 0.9.0 RC1*1NetBeans 6.5*2 では結構きれいになったような気がする。

ただ、NetBeans 6.5 の「開始ページ」タブのフォントはLaFの設定にかかわらずMSゴシック固定になるっぽいなぁ……。JVMが6u11の方を向いていて、fontconfig.propertiesが効いてなかった(^^;

以下、参考までに

IPAフォントからビットマップフォントを削除するためのシェルスクリプト群。Cygwin専用。ツールとフォントのダウンロードからフォントファイルの生成まで全部やる。(インストールはしないので注意)

http://vmi.jp/software/fonts/mk_ipafontNB.tar.bz2

ビットマップ無し版IPAフォント用のフォント設定ファイル。

http://vmi.jp/software/fonts/fontconfig.properties

*1:LaFが「標準」でも、描画領域はfontconfig.propertiesが効くし、GUI部品ではボールドのシステムフォントが使われていないので気にならない

*2:「--laf System」だとプロジェクトタブ等が微妙