Windows VistaでJava(Swing)のフォントをClearType効かせることを追求してみました。
まずは、日経BP ITProに掲載されている櫻庭氏の記事を参照しました。
記事によると、Windows環境では日本語の小さなフォント(実験では20ポイント以下)はアンチエイリアス(LCD)がかかりません。小さいといっても普通のGUIプログラムを作るときはほとんどの文字を12〜14ポイントで作るので、事実上日本語はClearTypeが適用できません。
これは、おそらくJDKが使用しているフォントがMS ゴシックであり、小さなサイズのときはTrueTypeではなくビットマップデータを表示するフォントであるためではないかと思っています。
Windows Vistaでは、メイリオというフォントが導入され、これは小さなサイズのときもビットマップではなく表示されます。そこで、Windows上のJavaでもメイリオをフォントとして使用できればフォントが小さくてもClearTypeが適用されるはずです。
JDK 6のフォントは、fontconfig.propertiesファイルで指定します。標準では日本語フォントにMS GothicとMS Minchoを使うよう記述されています。これをメイリオに変更すればいけるか実験してみました。
元のfontconfig.properties.src(抜粋)
sansserif.plain.japanese=MS Gothic
:
filename.MS_Gothic=MSGOTHIC.TTC
fontconfig.propertiesに名前を変えて編集
sansserif.plain.japanese=Meiryo
:
filename.Meiryo=MEIRYO.TTC
これで、JDK 6でテストプログラムを起動すると、画面のように小さなサイズの日本語もClearTypeでアンチエイリアスされた表示になりました。