「Java Runtime Environment のフォント」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎フォントのヒンティング: === Overriding the automatically picked up settings === を追加(英語版より))
(AshMyzk がページ「Java 実行環境のフォント」を「Java Runtime Environment のフォント」に移動しました: Java 公式の名前に合わせる)
 
(2人の利用者による、間の3版が非表示)
13行目: 13行目:
 
TrueType フォントは Java で一番良くサポートされているフォーマットです。
 
TrueType フォントは Java で一番良くサポートされているフォーマットです。
   
==アンチエイリアス==
+
== アンチエイリアス ==
フォントの[[Wikipedia:Antialiased_font|アンチエイリアス]]は Linux の Oracle Java 1.6 及び OpenJDK で利用可能です。システム全体の設定でアンチエイリアスを使うには、次の行を {{ic|/etc/environment}} に追加してください:
 
   
  +
フォントの [[Wikipedia:Antialiased_font|アンチエイリアス]] は Linux の Oracle Java 1.6 及び OpenJDK で利用可能です。
export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=''setting'''
 
  +
  +
=== xsettings デーモンの実行 ===
  +
  +
Java は、xsettings を通じてシステムのデフォルトを取得しようとします。[[GNOME]] では何もする必要はありません。{{ic|gnome-settings-daemon}} はすでに実行されています。それ以外の場合は、[[Xsettingsd]] が簡単な代替手段です。
  +
  +
=== 自動的に取得された設定を上書きする ===
  +
  +
xsettingsデーモンを実行したくない場合、またはフォントがまだ醜く見える場合は、アンチエイリアスを設定するシステムプロパティもあります。システム全体でこれを行うには、{{ic|/etc/environment}} に以下の行を追加します:
  +
  +
_JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=''setting'''
   
 
{{Ic|''setting''}} は以下の7つの値のどれか一つに置き換えて下さい:
 
{{Ic|''setting''}} は以下の7つの値のどれか一つに置き換えて下さい:
40行目: 49行目:
 
|}
 
|}
   
多くの場合 {{Ic|gasp}} と {{Ic|lcd}} の設定が上手く機能します。
+
{{Ic|gasp}} と {{Ic|lcd}} の設定は多の場合に適切に機能します。
   
任意で GTK のルックアンドフィールを使には、代わりにの行を .bashrc に追加してください
+
オプションで GTK のルックアンドフィールを使用するには、代わりにの行を追加します
   
 
_JAVA_OPTIONS='-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel' ''
 
_JAVA_OPTIONS='-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel' ''
50行目: 59行目:
 
* '''TrueType''' フォントにはポイントサイズに合わせてどうフォントを表示するかデザイナーによって決められたグリッド調整およびスキャン変換手続き (''GASP'') テーブルが含まれています。サイズによっては完全にアンチエイリアスをかけられたり、場合によってはヒンティングを適用したり、あるいはビットマップフォントとして表示するようになったりします。特定のポイントサイズではそれらを組み合わせて使われることもあります。}}
 
* '''TrueType''' フォントにはポイントサイズに合わせてどうフォントを表示するかデザイナーによって決められたグリッド調整およびスキャン変換手続き (''GASP'') テーブルが含まれています。サイズによっては完全にアンチエイリアスをかけられたり、場合によってはヒンティングを適用したり、あるいはビットマップフォントとして表示するようになったりします。特定のポイントサイズではそれらを組み合わせて使われることもあります。}}
   
コマンドラインで実行ファイルの前に変数を指定して新しい設定を試してみましょう:
+
コマンドラインで実行ファイルの前に変数を指定して新しい設定を試して下さい:
   
 
_JAVA_OPTIONS=''options'' ''executable''
 
_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
 
 
例えば、{{ic|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 {{ic|/etc/environment}}:
 
 
_JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=''setting'''
 
 
Where {{Ic|''setting''}} is one of the values:
 
 
{| class="wikitable"
 
! Setting
 
! Description
 
|-
 
| {{Ic|off}}, {{Ic|false}}, {{Ic|default}}
 
| No anti-aliasing
 
|-
 
| {{Ic|on}}
 
| Full anti-aliasing
 
|-
 
| {{Ic|gasp}}
 
| Use the font's built-in hinting instructions
 
|-
 
| {{Ic|lcd}}, {{Ic|lcd_hrgb}}
 
| Anti-aliasing tuned for many popular LCD monitors
 
|-
 
| {{Ic|lcd_hbgr}}, {{Ic|lcd_vrgb}}, {{Ic|lcd_vbgr}}
 
| Alternative LCD monitor setting
 
|}
 
 
The {{Ic|gasp}} and {{Ic|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' ''
 
 
{{Note|
 
* 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 '''g'''rid-fitting '''a'''nd '''s'''can-conversion '''p'''rocedure (''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 のパッチを使うことで改善することができます:
 
* パッチ適用済み ({{ic|1=--enable-infinality=yes}}) の '''OpenJDK7''' は {{AUR|jre7-openjdk-infinality}} でインストールできます。
 
* パッチ適用済みの '''OpenJDK8''' は {{AUR|jre8-openjdk-infinality}} でインストールできます。
 
パッチを適用したバージョンでは fontconfig と freetype の [[Infinality]] パッチを上手く混ぜ合わせています。標準の {{Pkg|fontconfig}} API を使用しているため {{AUR|fontconfig-infinality}} に依存はしていません。
 
   
 
==フォント選択==
 
==フォント選択==
126行目: 73行目:
 
変更を適用するには再ログインする必要があります。
 
変更を適用するには再ログインする必要があります。
   
===文字化けの修正 (JRE8)===
+
=== 文字化けの修正 ===
  +
以下のディレクトリにフォントファイルを配置してください。ディレクトリが存在しない場合は作成してください。
 
  +
フォントファイルを {{ic|/usr/lib/jvm/java-8-openjdk/jre/lib/fonts/fallback/}} に配置します。必要に応じて作成します。
  +
  +
実際に使用している JRE の {{ic|/usr/lib/jvm/java-8-openjdk}} を {{ic|$JAVA_HOME}} に置き換えてください。Oracle Java 9 以降、この機能は削除されていることに注意してください。Oracle は[https://bugs.java.com/bugdatabase/view_bug?bug_id=8039273、ユーザーに {{ic|lib}} の変更を促すためにバグとみなし]、設定ファイルを {{ic|conf}} に移動し、フォールバック機能を "mis-feature" と呼びました。この動作を提供する具体的な関数は {{ic|sun.awt.FontConfiguration.getInstalledFallbackFontsFonts}} で、OpenJDK にはまだあるようです。
  +
  +
これにより、Java は常にこのディレクトリ内のフォントをフォールバックシーケンスに追加して、文字の形状 (グリフ) を検索します。この方法では、アプリケーションがどのようなフォントを要求したとしても、必要に応じてこれらの追加フォントが不足しているグリフを提供します。
  +
  +
== 参照 ==
   
  +
* [https://docs.oracle.com/en/java/javase/11/intl/font-configuration-files.html Java Font Configuration Files] (Java 11); [https://docs.oracle.com/javase/8/docs/technotes/guides/intl/fontconfig.html Java 8]
/usr/lib/jvm/java-8-openjdk/jre/lib/fonts/fallback/
 

2024年4月2日 (火) 17:24時点における最新版

関連記事

ユーザーによってはデフォルトの Java フォントや Java アプリケーションのフォントの表示モードが気に入らないという人もいるでしょう。Oracle Java Runtime Environment (JRE) のフォント表示を改善する方法は複数存在します。これらの方法は別々に使うこともできますが、多くの場合まとめて使うことでより良い結果が得られるでしょう。

TrueType フォントは Java で一番良くサポートされているフォーマットです。

アンチエイリアス

フォントの アンチエイリアス は Linux の Oracle Java 1.6 及び OpenJDK で利用可能です。

xsettings デーモンの実行

Java は、xsettings を通じてシステムのデフォルトを取得しようとします。GNOME では何もする必要はありません。gnome-settings-daemon はすでに実行されています。それ以外の場合は、Xsettingsd が簡単な代替手段です。

自動的に取得された設定を上書きする

xsettingsデーモンを実行したくない場合、またはフォントがまだ醜く見える場合は、アンチエイリアスを設定するシステムプロパティもあります。システム全体でこれを行うには、/etc/environment に以下の行を追加します:

_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 のルックアンドフィールを使用するには、代わりに次の行を追加します。

_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

変更を適用するには再ログインする必要があります。

フォント選択

TrueType フォント

Java アプリケーションによっては特定の TrueType フォントを使用するよう選択できたりしますが、こういったアプリケーションは使用したいフォントのディレクトリパスを指定できるようになっています。TrueType フォントは /usr/share/fonts/TTF ディレクトリにインストールされます。次の行を /etc/environment に追加してフォントを有効にしてください。

JAVA_FONTS=/usr/share/fonts/TTF

変更を適用するには再ログインする必要があります。

文字化けの修正

フォントファイルを /usr/lib/jvm/java-8-openjdk/jre/lib/fonts/fallback/ に配置します。必要に応じて作成します。

実際に使用している JRE の /usr/lib/jvm/java-8-openjdk$JAVA_HOME に置き換えてください。Oracle Java 9 以降、この機能は削除されていることに注意してください。Oracle はlib の変更を促すためにバグとみなし、設定ファイルを conf に移動し、フォールバック機能を "mis-feature" と呼びました。この動作を提供する具体的な関数は sun.awt.FontConfiguration.getInstalledFallbackFontsFonts で、OpenJDK にはまだあるようです。

これにより、Java は常にこのディレクトリ内のフォントをフォールバックシーケンスに追加して、文字の形状 (グリフ) を検索します。この方法では、アプリケーションがどのようなフォントを要求したとしても、必要に応じてこれらの追加フォントが不足しているグリフを提供します。

参照