Wie importiere ich eine benutzerdefinierte java.awt.Font aus einer Font-Familie mit mehreren TTF-Dateien? (Ein Beispiel ist enthalten)

8

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

  1. Hier habe ich die installierte Schrift mit 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):

  1. Und das ist 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) )?

    
Whalmoselity33 17.07.2014, 10:18
quelle

1 Antwort

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.

Test 1

%Vor%

Hier ist ein Bild mit einfacher ( dvs ) und abgeleiteter fett ( dvs.deriveFont(Font.BOLD) ) Schriftart.

Test 2

%Vor%

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.

    
3ph3r 11.04.2015 22:22
quelle

Tags und Links