Ist "sequence.fallback" aus den font.properties zur Laufzeit änderbar

0xdeadbeef

Top Contributor
Hi,

ich entwickle gerade ein kleines Programm, um japanische Schriftzeichen (Kanji) zu lernen. Dazu muß ich natürlich offensichtlich japanische Schriftzeichen darstellen, also neben Kanj auch Kana (zwei Silbenschriften) und gemischten Text mit deutschem/englischem Text und japanischen Zeichen.
Das hat auf den ersten Blick erstmal überraschend gut funktioniert, die Kana wurden trotz Default-Font (Tahoma o.ä.) perfekt dargestellt und die Kanji sahen auf den ersten Blick auch OK aus.

Zwischenzeitlich ist mir aber aufgefallen, daß für die Kanji kein japanischer Zeichensatz (MS Gothic oder MS Mincho) verwendet wird, sondern ein chinesischer (MingLiU oder sowas). Einige Zeichen sehen in beiden Sprachen/Fonts gleich aus, aber andere unterscheiden sich mehr oder weniger stark.
Mein erster Versuch war, den richtigen Zeichensartz zu erzwingen:
Java:
fontKanji = new Font("MS PMincho", Font.PLAIN, (int)Core.fontSizeKanji);
Aber damit schaltet man den Zeichensart halt komplett um. Das ist OK für das Text/Labels, in denen nur japanische Zeichen vorkommen, aber für gemischten Text sieht das absolut furchtbar aus. "MS PGothic" ist etwas besser, aber das Kernproblem dabei ist, daß dann halt auch die "lateinischen" Buchstaben aus dem japanischen Zeicheensatz kommen.

Nach einiger Recherche habe ich rausgefunden, daß der Fallback-Mechanismus für nicht existierende Zeichen im eingestellten Zeichensatz über die Datei "fontconfig.properties" eingestellt werden kann. Dort stehen leider chinesische Fonts vor den japanischen, was mein Problem erklärt.

C-ähnlich:
sequence.fallback=symbols,\
                  chinese-ms950,chinese-hkscs,chinese-ms936,chinese-gb18030,\
                  japanese,korean,chinese-ms950-extb,chinese-ms936-extb,\
                  georgian,devanagari,bengali,gujarati,gurmukhi,kannada,\
                  malayalam,oriya,sinhala,tamil,telugu,thai,khmer,mongolian,\
                  myanmar

Wenn ich die entsprechende Datei "fontconfig.properties.src" aus dem "lib"-Verzeichnis der JRE/JDK als "fontconfig.properties" ablege und "japanese" vor "chinese..." schiebe, verhält sich alles wie gewünscht. So weit , so gut.

Nur ist das natürlich irgendwie keine so wirklich tolle Lösung. Ich habe derzeit über 30 Java Runtimes installiert, weil ja inzwischen jede Eclipse-IDE ihre eigen Runtime mitbringt usw. Außerdem ist es etwas viel verlangt, daß potentielle Anwender mit unterdurchschnittlichen PC-Kenntnissen Konfigurationdateien in irgendwelchen JRE-Ordnern kopieren und editieren müssen.
Aber anscheinend kann man diese Font Properties nicht über System.setProperty() o.ä. ändern. Zumindest habe ich dazu nichts gefunden.

Langer Rede kurzer Sinn:
Gibt es irgendeine (möglichst einfache, elegante) Lösung, den Fallback-Mechanismus für fehlende Zeichen in Zeichensätzen in der oben beschriebenen Form (Japanisch vor Chinesisch) zur Laufzeit zu ändern, also ohne die Einstellung für die ganze JRE/JDK permanent über eine Konfigurationsdatei zu ändern?
Und um das nochmal klarzustellen: ich will weder die Spracheinstellung auf Japanisch ändern noch den Zeichensatz komplett auf Japanisch umstellen. Ich will lediglich den Fallback-Mechanismus so ändern, daß für UTF8-Kanji-Zeichen der japanische Zeichensatz und nicht der chinesische benutzt wird.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Anderes (schlechteres) Font-Rendering in OpenJDK 8 AWT, Swing, JavaFX & SWT 21
Splayfer Custom Font in AttributedString Java AWT, Swing, JavaFX & SWT 4
L JavaFX Eigene Font benutzen AWT, Swing, JavaFX & SWT 6
B AWT Font Größenverhältnisse AWT, Swing, JavaFX & SWT 2
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
L Font für Dashboard AWT, Swing, JavaFX & SWT 3
Tronert JavaFX Fehler beim Ändern der font-weight AWT, Swing, JavaFX & SWT 7
S Swing JColorChooser Font ändern AWT, Swing, JavaFX & SWT 2
N JLabel HTML mit custom Font AWT, Swing, JavaFX & SWT 0
A AWT TTF-Datei zu Font-Objekt finden? AWT, Swing, JavaFX & SWT 5
Y Globale Font-Color definieren AWT, Swing, JavaFX & SWT 5
F java.awt.Font - ist das wirklich alles? AWT, Swing, JavaFX & SWT 3
Luk10 Ungewollte Unicode Characters im Font AWT, Swing, JavaFX & SWT 5
S Font laden, Wort zeichnen und animieren..? AWT, Swing, JavaFX & SWT 2
M Font Size in FormsEditor AWT, Swing, JavaFX & SWT 2
F Font in JTable setzen AWT, Swing, JavaFX & SWT 7
1 Font ändern AWT, Swing, JavaFX & SWT 5
I Textbreite von Font inklusive Tabs ermitteln AWT, Swing, JavaFX & SWT 4
T Swing Font für alle Komponenten ändern AWT, Swing, JavaFX & SWT 2
Dit_ Font durchgestrichen AWT, Swing, JavaFX & SWT 6
B Welche Font Family ist vorhanden? AWT, Swing, JavaFX & SWT 3
N Swing JEditorPane mit Farbe und Font AWT, Swing, JavaFX & SWT 2
G Frame,Font,Standard,Schriftart,JFrame AWT, Swing, JavaFX & SWT 3
M JSpinner Font ändern AWT, Swing, JavaFX & SWT 4
H anderes font in textarea AWT, Swing, JavaFX & SWT 2
Schandro Den größten passenden java.awt.Font zu einem Rectangle berechnen AWT, Swing, JavaFX & SWT 2
D Font laden AWT, Swing, JavaFX & SWT 2
T Font mit Border AWT, Swing, JavaFX & SWT 7
Fu3L Wie Schriftfarbe und Font global setzen? AWT, Swing, JavaFX & SWT 5
J Font Änderung nach Editorwechsel? AWT, Swing, JavaFX & SWT 3
A Font: Ist Schriftart überall verfügbar? AWT, Swing, JavaFX & SWT 4
I font-größe ermitteln AWT, Swing, JavaFX & SWT 4
S jTable Font einer Zelle ändern AWT, Swing, JavaFX & SWT 5
StephenKing Font-Größe in JTextField normalisieren AWT, Swing, JavaFX & SWT 6
DEvent Standard Font-Auswahl-Dialog? AWT, Swing, JavaFX & SWT 15
I GUI - Font und Labelklick AWT, Swing, JavaFX & SWT 6
S JTree - Renderer - Font AWT, Swing, JavaFX & SWT 3
R Schriftfarbe ändern in JTextArea / Font bekommen AWT, Swing, JavaFX & SWT 2
V Font setzen in JLabel AWT, Swing, JavaFX & SWT 6
M Schwieriges Label - Font - Problem "Dynamisches Label&a AWT, Swing, JavaFX & SWT 7
TheJavaKid font lässt sich bei der jtextarea nur einmal ändern AWT, Swing, JavaFX & SWT 3
G Font in JTextArea ändern AWT, Swing, JavaFX & SWT 2
I Font 2 Vektor AWT, Swing, JavaFX & SWT 3
V falscher Unicode font AWT, Swing, JavaFX & SWT 6
S Hilfe bei java.awt.Font AWT, Swing, JavaFX & SWT 7
H Create Font will nicht AWT, Swing, JavaFX & SWT 5
G Font tiefergestellt AWT, Swing, JavaFX & SWT 2
G Font nur für einen Teil String im JTextArea AWT, Swing, JavaFX & SWT 5
H Liste von Font Sizes und Colors AWT, Swing, JavaFX & SWT 4
D Font eines JLabels verändern, JLabel mit LookAndFeel-Format AWT, Swing, JavaFX & SWT 2
B Font fett setzen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben