So erhalten Sie Font-Daten aus Systemschriften in Java

8

Ich habe einige TTF-Schriftarten auf dem System installiert.

Ich bekomme diese Liste mit

%Vor%

Dies ist nicht nur TTF-Schriften, sondern alle Schriften, die ich denke. Schließlich wenn ich verwende:

%Vor%

Ich kann awt.Font-Instanz bekommen.

Soweit ich weiß, ist Font nicht mit tatsächlichem PhysicalFont verbunden, also Wie kann ich entweder ttf font-Datei oder Byte-Daten aus dieser ttf-Datei für eine Schriftart aus dieser Liste oder von awt.Font abrufen? Ich versuche, eine physische Schriftartdaten oder ähnliches zu erhalten. Diese Daten sollten irgendwo richtig sein?

Der Grund, warum ich es brauche, ist die Verwendung mit libGDX FreeTypeFontGenerator um BitmapFont zu generieren

Dies muss mit Windows, OSX und Linux funktionieren.

    
Avetis Zakharyan 22.04.2015, 17:41
quelle

2 Antworten

3

Es ist nicht möglich. Das Beste, was Sie tun können, ist Verwendung der Reflektion , aber es funktioniert nur mit einer Oracle JRE und greift auf eine private API zu, so dass es möglicherweise zu einer neuen Oracle-Version kommt.

Sie könnten wahrscheinlich eine native lib schreiben, um die Schriften und ihre Dateien aufzulisten.

    
NateS 23.04.2015 10:16
quelle
3

Wie @NateS gezeigt hat, scheint es, was ich erreichen möchte, nicht genau möglich.

Also werde ich nur die Lösung teilen, die ich in meinem Fall für jetzt verwendet habe:

Was ist diese Klasse: FontManager.java

Dies ermöglicht es, vorhandene ttf-Dateien an bekannten Systemstandorten basierend auf Ihrem System vorzucachen und dann eine Zuordnung für fontName- & gt; fontFile-Verbindungstyp zu erstellen. Dies geht dann zu den Voreinstellungen und wird beim nächsten Lauf geladen.

Bekannte Probleme sind

  1. awt.Font hat einen bekannten Fehler, der einige ttf-Schriftfamiliennamen auf osx-Systemen (hauptsächlich arabische und chinesische Schriftarten) nicht lesen kann
  2. Unter Linux nicht getestet, wird wahrscheinlich fehlschlagen.
  3. Der erste Durchlauf ist möglicherweise langsam, wenn Sie viele Schriftarten haben.

Es wäre ideal, eine native lib zu schreiben, aber die Zeit ist eine Essenz ...

    
Avetis Zakharyan 24.04.2015 16:51
quelle

Tags und Links