Frage von chr0m92, 13

Java - Bei Fontausgabe das Dateiformat mit ausgeben?

Hallo!

Ich lese und gebe meine Schriftarten mit folgendem Code aus:

public static void main(String[] args) {
    Font[] fonts =GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
    for (int i=0;i<fonts.length;i++)
    System.out.println(fonts[i]);
}

Als Ausgabe erhalte ich Werte wie [family=Arial Narrow,name=Arial Narrow Kursiv,style=plain,size=1]

Die Frage: kann man das Font[] Array noch um den Wert "ending" erweitern? Also das mir noch ttf, otf oder type1 mitgegeben werden? Im Beispiel:

[family=Arial Narrow,name=Arial Narrow Kursiv,style=plain,size=1,ending=ttf]

In der Dokumentation wurde ich bisher leider nicht fündig.

Antwort
von ArchEnema, 8

Du benutzt hier ja implizit die toString() Methode der Font-Klasse. Die gibt halt nur das aus, was du hier siehst. Und selbst das ist herstellerspezifisch, kann sich also jederzeit und ohne Vorankündigung ändern!

Die einzige Möglichkeit sind "Schweinereien" wie Reflection, die interne Variablen aus den Objekten herausziehen - und damit das Paradigma der Datenkapselung böse verletzen. Und auch das ist dann nicht mehr portabel.

Am besten guckst du dir die Font-Instanzen mal im Debugger an und guckst, was sich da rausholen lässt.

http://stackoverflow.com/questions/13684342/jdk7-sun-font-fontmanager-replacemen...

Antwort
von Zuck3r, 10

Wenn du in die Dokumentation geschaut hast, und es darin nicht vorgesehen ist, das "ending" anzugeben, dann kann die Klasse das nicht.

Wenn du das unbedingt brauchst/haben willst kannst du einfach die Klasse erweitern (erben), sofern diese nicht final ist, und diese um die nötige Funktion erweitern.

Es ist wahrscheinlich, dass du die Funktion, welche die Daten ausliest auch neu schreiben musst, da diese nichts über die Endings weis. :)

Keine passende Antwort gefunden?

Fragen Sie die Community