Ich weiß, dass Sie eine Schriftart in Java mit etwas wie diesem importieren können:
%Vor% Dann würden Sie zum Beispiel font.deriveFont(Font.PLAIN, 20);
verwenden, um den gewünschten Stil und die gewünschte Größe zu erhalten.
Beispiel
Aber jetzt schauen wir uns als Beispiel die Schriftart Consolas
an, dort haben Sie vier TTF-Dateien:
consola.ttf
(Einfach) consolab.ttf
(Fett) consolai.ttf
(Kursiv) consolaz.ttf
(Fett & amp; Italic) Natürlich könnten Sie auch consola.ttf
mit der oben angegebenen Methode importieren, aber dann ist font.deriveFont(Font.BOLD, 20);
nicht dasselbe wie consolab.ttf
, weil die einfache Schriftart einfach in aussehen wie eine Fettschrift.
Beispielbilder
new Font("Consolas", Font.PLAIN, 20);
und new Font("Consolas", Font.BOLD, 20);
verwendet (als Randnotiz, wenn die Schrift auf dem System installiert ist, erhalten Sie auch die richtige fette Schrift, wenn Sie deriveFont(Font.BOLD);
verwenden):
consola.ttf
, importiert mit createFont
und abgeleitetem Fettschrift (beide mit der Größe 20 wie im obigen Beispiel):
Nun, wenn es installiert ist, ist es kein Problem, aber ich erwarte nicht, dass andere eine benutzerdefinierte Schriftart haben, also möchte ich die TTFs in die JAR-Datei schreiben, damit ich sie während der Initialisierung über% co_de importieren kann %.
Gibt es eine Möglichkeit, alle relevanten TTFs zu importieren und dann einfach getResourceAsStream(path)
aufzurufen, so dass es wie eine installierte Schriftart verwendet wird (Bild 1) und nicht wie eine abgeleitete "falsche" Fettschrift aussieht (Bild 2) )?
Ich bin mir nicht sicher, was genau das Problem ist. Sie haben alle Ihre TTF-Dateien und Sie müssen sie importieren und registrieren. Verwenden Sie nach den Tests DejaVu Sans -Schriften, die nicht auf meinem System installiert sind.
Hier ist ein Bild mit einfacher ( dvs
) und abgeleiteter fett ( dvs.deriveFont(Font.BOLD)
) Schriftart.
Und hier ist ein Bild mit plain ( dvs
) und wirklich fett ( dvsb
) font.
Sie können bestätigen, dass die korrekte Datei verwendet wird, indem Sie font2DHandle
betrachten.
Ich habe auch italic und fett kursiv getestet und beide haben genauso gut funktioniert wie Font#createFont(int, InputStream)
method.
Der obige Ansatz funktioniert, weil Zeichensätze mit ihrem vollständigen Namen (z. B. Arial, Arial Bold usw.) zugeordnet werden. Solange Ihre Zeichensätze korrekt benannt sind, können Sie mehrere Mitglieder einer Familie registrieren.