Java 実行環境のフォント

提供: ArchWiki
ナビゲーションに移動 検索に移動

関連記事

ユーザーによってはデフォルトの 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 モニター設定

多くの場合 gasplcd の設定が上手く機能します。

任意で GTK のルックアンドフィールを使うには、代わりに下の行を .bashrc に追加してください。

_JAVA_OPTIONS='-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel' 
ノート:
  • 上述の Java オプションやこのオプションは Java で GUI を描写している Jdownloader などのアプリケーションでしか意味がありません。Java をバックエンドでしか利用していない Openoffice.org や Matlab などのアプリケーションでは表示が変わりません。
  • TrueType フォントにはポイントサイズに合わせてどうフォントを表示するかデザイナーによって決められたグリッド調整およびスキャン変換手続き (GASP) テーブルが含まれています。サイズによっては完全にアンチエイリアスをかけられたり、場合によってはヒンティングを適用したり、あるいはビットマップフォントとして表示するようになったりします。特定のポイントサイズではそれらを組み合わせて使われることもあります。

コマンドラインで実行ファイルの前に変数を指定して新しい設定を試してみましょう:

_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' 
ノート:
  • The described Java options only work for applications that draw their GUI in Java, like Jdownloader, and not for applications which utilize Java as backend only, like Openoffice.org and Matlab.
  • TrueType fonts contain a grid-fitting and scan-conversion procedure (GASP) table with the designer's recommendations for the font's display at different point sizes. Some sizes are recommended to be fully anti-aliased, others are to be hinted, and some are to be displayed as bitmaps. Combinations are sometimes used for certain point sizes.

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) の OpenJDK7jre7-openjdk-infinalityAUR でインストールできます。
  • パッチ適用済みの OpenJDK8jre8-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/

参照