torutkのブログ

ソフトウェア・エンジニアのブログ

JDKのフォントをメイリオに

Windows VistaJava(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を使うよう記述されています。これをメイリオに変更すればいけるか実験してみました。

\jre\lib\fontconfig.properties.srcを編集し、同ディレクトリにfontconfig.propertiesのファイル名で保存し、同ディレクトリのfontconfig.bfcを削除します。

元の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アンチエイリアスされた表示になりました。