Java Runtime Environment のフォント
ユーザーによってはデフォルトの Java フォントや Java アプリケーションのフォントの表示モードが気に入らないという人もいるでしょう。Oracle Java Runtime Environment (JRE) のフォント表示を改善する方法は複数存在します。これらの方法は別々に使うこともできますが、多くの場合まとめて使うことでより良い結果が得られるでしょう。
TrueType フォントは Java で一番良くサポートされているフォーマットです。
目次
アンチエイリアス
フォントのアンチエイリアスは Linux の Oracle Java 1.6 及び OpenJDK で利用可能です。システム全体の設定でアンチエイリアスを使うには、次の行を /etc/environment
に追加してください:
export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=setting'
setting
は以下の7つの値のどれか一つに置き換えて下さい:
設定 | 説明 |
---|---|
off , false , default
|
アンチエイリアスなし |
on
|
完全なアンチエイリアス |
gasp
|
フォントに埋め込まれたヒント情報を使う |
lcd , lcd_hrgb
|
多数派の LCD モニターにあわせてアンチエイリアスを調整する |
lcd_hbgr , lcd_vrgb , lcd_vbgr
|
もうひとつの LCD モニター設定 |
多くの場合 gasp
と lcd
の設定が上手く機能します。
任意で GTK のルックアンドフィールを使うには、代わりに下の行を .bashrc に追加してください。
_JAVA_OPTIONS='-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel'
コマンドラインで実行ファイルの前に変数を指定して新しい設定を試してみましょう:
_JAVA_OPTIONS=options executable
変更を適用するには再ログインする必要があります。
フォントのヒンティング
一部の Java アプリケーションにはヒンティングのシステム設定が反映されません。Java アプリを起動する前に、以下の環境変数のどれかを使ってみてください:
export FT2_SUBPIXEL_HINTING=0 # Classic mode export FT2_SUBPIXEL_HINTING=1 # Infinality mode export FT2_SUBPIXEL_HINTING=2 # Default mode
例えば、0
の場合 FreeType は太字でないフォントを使うようになります。
Overriding the automatically picked up settings
If you do not want to run an xsettings daemon, or the fonts still look ugly, there is also a system property to set anti-aliasing. To do this system-wide, add the following line to /etc/environment
:
_JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=setting'
Where setting
is one of the values:
Setting | Description |
---|---|
off , false , default
|
No anti-aliasing |
on
|
Full anti-aliasing |
gasp
|
Use the font's built-in hinting instructions |
lcd , lcd_hrgb
|
Anti-aliasing tuned for many popular LCD monitors |
lcd_hbgr , lcd_vrgb , lcd_vbgr
|
Alternative LCD monitor setting |
The gasp
and lcd
settings work well in many instances.
To optionally to use GTK look and feel, add the following line instead:
_JAVA_OPTIONS='-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel'
Specify the variable on the command line before the executable to try the new configuration:
_JAVA_OPTIONS=options executable
Re-login for the changes to take effect.
OpenJDK パッチ
Java のオプションを使って強制的にアンチエイリアスをかけても、ネイティブアプリケーションのアンチエイリアスよりかは品質で劣ります。AUR にある OpenJDK のパッチを使うことで改善することができます:
- パッチ適用済み (
--enable-infinality=yes
) の OpenJDK7 は jre7-openjdk-infinalityAUR でインストールできます。 - パッチ適用済みの OpenJDK8 は jre8-openjdk-infinalityAUR でインストールできます。
パッチを適用したバージョンでは fontconfig と freetype の Infinality パッチを上手く混ぜ合わせています。標準の fontconfig API を使用しているため fontconfig-infinalityAUR に依存はしていません。
フォント選択
TrueType フォント
Java アプリケーションによっては特定の TrueType フォントを使用するよう選択できたりしますが、こういったアプリケーションは使用したいフォントのディレクトリパスを指定できるようになっています。TrueType フォントは /usr/share/fonts/TTF
ディレクトリにインストールされます。次の行を /etc/environment
に追加してフォントを有効にしてください。
JAVA_FONTS=/usr/share/fonts/TTF
変更を適用するには再ログインする必要があります。
文字化けの修正 (JRE8)
以下のディレクトリにフォントファイルを配置してください。ディレクトリが存在しない場合は作成してください。
/usr/lib/jvm/java-8-openjdk/jre/lib/fonts/fallback/
参照
- Java Font Configuration Files (Java 11); Java 8