Dokumentenformate wie beispielsweise PDF können Schriftarten referenzieren, die zum Einen im Dokument selbst nicht eingebettet sind und zum Anderen der zur Anzeige verwendeten Anwendung oder dem Betriebssystem nicht bekannt sind. Diese Dokumente erwarten jedoch von der anzeigenden Anwendung, dass die eingesetzten Schriftarten bekannt sind, vorliegen und interpretiert werden können.

Java verarbeitet Schriftarten über die API des Abstract Window Toolkit (AWT) und ist für Maßnahmen, die in Fällen wie oben ergriffen werden müssen, nicht flexibel genug. Die jadice document platform beinhaltet daher eine eigene Fontengine. Schriftarten können darüber unabhängig von der java.awt.Font-Implementierung geladen, indexiert und verarbeitet werden. Das Konzept liest in bestimmten Verzeichnissen alle darin verfügbaren unterstützten Schriftarten (siehe Liste „Unterstützte Schriftartenformate“) aus und indexiert sie anhand deren Namen und bestimmten Eigenschaften. Der FontManager hat die Möglichkeit, nicht eingebettete und nicht installierte aber dennoch verwendete Schriftarten zu ersetzen und dabei trotzdem eine dem Original möglichst ähnlich aussehende Schriftart zur Anzeige auszuwählen.

Weiterhin gibt es die Funktionalität die Indexdaten zwischenzuspeichern um die Startzeit der Anwendung zu verkürzen. Der Caching-Mechanismus serialisiert alle Indexdaten und schreibt sie in das temporäre Verzeichnis des Benutzers.

jadice document platform ist in Standardumgebungen in der Lage den FontManager automatisch zu konfigurieren. In „Automatische Konfiguration“ sind die Vorraussetzungen beschrieben unter denen der Automatismus funktioniert. In solchen Fällen ist kein Eingreifen oder Anpassen der Integration notwendig. Sobald die Umgebung vom Standard abweicht, kann über eine manuelle Konfiguration (siehe „Manuelle Konfiguration“) direkter Einfluss auf den FontManager genommen werden.

Die Auswahl der Verzeichnisse zur Indexierung funktioniert weitgehend automatisch und muss in den meisten Umgebungen nicht angepasst werden. Die automatische Konfiguration und Indexierung wurde für die folgenden Systeme implementiert:

Mac OS X

Auf Apple's Supportseiten wird genau definiert in welchen Verzeichnissen sich Schriftarten befinden:

  • ~/Library/Fonts/

  • /Library/Fonts/

  • /Network/Library/Fonts/

  • /System/Library/Fonts/

  • /System Folder/Fonts/

Microsoft Windows

Das Systemverzeichnis wird über die Umgebungsvariable windir ermittelt. Ist dies nicht erfolgreich wird nach Standardverzeichnissen gesucht. Aktuelle Windows-Betriebssysteme platzieren im System installierte Schriftarten üblicherweise unter C:\Windows\Fonts, ältere unter C:\WINNT\Fonts. In Windows gibt es die Möglichkeit Schriftarten zu verlinken und in beliebigen anderen Verzeichnissen zu platzieren. Diese Schriftarten sind nicht automatisch indexierbar und sollten über die manuelle Konfiguration in den Indexierungsprozess eingebunden werden (siehe „Manuelle Konfiguration“).

Linux

Die weit verbreiteten Linux-Distributionen und deren grafische Systeme nutzen in der Regel fontconfig. Die automatische Konfiguration versucht die XML-Datei /etc/fonts/fonts.conf zu lesen. Sie enthält Informationen über Verzeichnisse, die Schriftarten enthalten. Die Verzeichnisse sind in <dir>-Elementen definiert. Diese Elemente werden ausgelesen und alle existenten und lesbaren Verzeichnisse werden indexiert. Ist die XML-Datei nicht unter oben genanntem Pfad auffindbar, muss manuell konfiguriert werden (siehe „Manuelle Konfiguration“).

Sobald die im Abschnitt „Automatische Konfiguration“ genannten Vorraussetzungen nicht gegeben sind oder die Standardkonfiguration nicht ausreicht, kann eine manuelle Konfiguration durchgeführt werden. FontManagerFactory bietet Möglichkeiten zur manuellen Erzeugung und Konfiguration eines FontManagers. Die Erzeugung wird auf Basis eines Arrays mit Verzeichnissen vorgenommen. Im Anschluss kann der FontManager als Standardinstanz über setDefaultInstance(..) in FontManagerFactory gesetzt werden. Alternativ ist es möglich den erzeugten FontManager in einem FontManagerReaderSettings-Objekt zu setzen und dieses dem Ladevorgang eines Dokuments zu übergeben (siehe „Einlesen von Dokumentdaten“).

Speziell für Linux-Distributionen, welche mit fontconfig arbeiten, aber die fonts.conf entweder an anderer Stelle zu finden ist oder in mehrere Dateien aufgeteilt wurde, steht eine API für die Interpretation der fontconfig XML-Dateien zur Verfügung. Dies wird über die Methode parseFontConfig(..) der FontManagerFactory ermöglicht. Als Ergebnis erhält man ein Array mit Verzeichnissen, welche in der fontconfig XML-Datei hinterlegt wurden.

Der Caching-Mechanismus arbeitet generell automatisch. In speziellen Fällen kann es erforderlich werden, dass der Cache neu aufgebaut wird. Auf das Verhalten kann bei der Erzeugung eines FontManager beziehungsweise FontManagerHandle Einfluss genommen werden, indem man den gewünschten Booleschen Wert als Argument der Methode create(File[], boolean) übergibt.

Für eine detaillierte Beschreibung des Verhaltens von hier erwähnten Klassen und Methoden sei auf die Javadoc verwiesen.

Einige vorbereitete Beispiele finden sie unter „Beispiele zu FontManager

[jadice document platform Version 5.4.2.13: Dokumentation für Entwickler. Veröffentlicht: 2020-04-08]
loading table of contents...