Hässliche / Nicht-Anti-Alias-Schriften in Java-Swing-Anwendungen

15

Ich habe kürzlich zu Ubuntu gewechselt und das Java JDK 8u45 (32 Bit) von Oracle mit dem Repository webupd8team / java installiert.

Alles scheint gut zu funktionieren, außer dass die Java-Swing-Anwendungen kaputte und hässliche Schriftarten ohne Anti-Aliasing haben. Das Ändern der Schriftart funktioniert nicht. Native Anwendungen wie Gedit mit der gleichen Schriftart sind nicht betroffen (auch Java-Anwendungen, die nicht von Swing stammen, wie Eclipse). Dies betrifft nur Swing-basierte Anwendungen.

Screenshots: (jEdit v5.1)

Screenshot von jEdit

Ich verwende Ubuntu 15.04 (das ist die neueste Version vom 15.06.2015). Meine Java-Version ist 1.8.0_45 und 'Java-Version' gibt die folgende Ausgabe aus:

java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) Server VM (build 25.45-b02, mixed mode)

Ich habe versucht, die in ähnlichen Fragen angegebenen Korrekturen (hier und auf anderen Stackexchange-Sites) durchzuführen, aber sie funktionieren nicht. Ich habe auch die folgenden Zeilen in / etc / environment hinzugefügt (wie hier angegeben: https://wiki.archlinux.org/index.php/Java_Runtime_Environment_Fonts ), aber sie geben mir keine offensichtlichen Ergebnisse.

JAVA_FONTS=/usr/share/fonts/truetype
_JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on'

Ich bin sicher, dass es dafür eine Lösung geben muss. Die gleichen Java-Anwendungen funktionieren auch unter Windows-7.

Hexman
quelle

Antworten:

16

Dieses Problem ist seit langem behoben und ich habe beschlossen, die Lösung zu veröffentlichen. Beachten Sie, dass das Problem standardmäßig weiterhin besteht, aber durch einen Parameter behoben werden kann.

Hinzufügen dieser Zeile:

_JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true'

um /etc/environmentdas Problem zu beheben.

Dieser Fix funktioniert ab Ubuntu 16.04 und OpenJDK 8u151 (nicht mit Oracle JDK oder Java 9 geprüft).

Arbeitsbeispiel: Bildbeschreibung hier eingeben

Hinweis : Einige Schriftarten und AA-Einstellungen erschweren das Problem. In jEdit verwende ich für alles die Standard-Java-Schriftarten ("Dialog", wie es heißt). Sie können wahrscheinlich eine andere Schriftart für den Textbereich verwenden, aber Dialog eignet sich am besten für Schaltflächen usw. Die beste AA-Einstellung für den Textbereich, die ich gefunden habe, ist Standard, aber Ihre Laufleistung kann variieren.

Hexman
quelle
1
Ihre Lösung funktioniert hervorragend!
Nadav B
1
Ab Ubuntu 18.10 und OpenJDK 11 wieder benötigt. Und es funktioniert immer noch! :)
Tanius