Schriftart-Subset-Erstellung - wie sie funktioniert und wann sie verwendet wird
Um die Dateigröße zu reduzieren, verwenden PDF-Produzenten eine Technik namens Schriftart-Subset-Erstellung. Was geschieht genau mit den Schriftarten und welche Folgen hat das?
Wenn eine PDF-Erstellungssoftware Text zu einer Seitenbeschreibung hinzufügt, bezieht sie sich auf eine Schriftart. Die Schriftart enthält eine Sammlung von Zeichen mit einer Beschreibung ihres grafischen Erscheinungsbildes, die Glyphen, Metriken und andere relevante Informationen zur Wiedergabe des Textes genannt werden. Es gibt verschiedene Typen von Schriftformaten, die in einem PDF-Dokument verwendet werden können, wie z. B. Type 1, TrueType, CFF und OpenType-Schriften.
Schriften müssen nicht in eine PDF-Datei eingebettet werden. In diesem Fall werden sie nach ihrem Namen bezeichnet und müssen verfügbar sein, um das Dokument korrekt wiederzugeben. Um zu garantieren, dass die Schriftarten immer verfügbar sind, kann die PDF-Erstellungssoftware sie als Binärströme in die Datei einbetten. Die Größe der Schriftartdateien selbst kann jedoch verringert werden, indem alle Informationen entfernt werden, die tatsächlich nicht benötigt werden, um das Dokument korrekt darzustellen. Die PDF-Spezifikation listet genau die erforderlichen Schriftartteile auf. Nebenbei kann die Schriftgröße reduzierte werden, indem nur die Zeichenerklärungen beibehalten werden, auf die tatsächlich von den Textobjekten verwiesen wird. Die Entfernung von nicht benötigten Zeichenerklärungen wird als Subsetting bezeichnet.
Schriften mit PostScript-Umrissen (Type1, CFF, OpenType) können reduziert werden, indem einfach die Zeichenfolgen entfernt werden, da ihre Auswahl mit einzigartigen Glyphennamen oder Zeichenidentifikatoren (CID) erfolgt. Für TrueType-Umrisse gibt es verschiedene Möglichkeiten, das Subsetting durchzuführen. Eine Möglichkeit besteht darin, die Glyphen vollständig zu entfernen, und die andere ist, nur die Umrisse zu entfernen und leere Glyphen beizubehalten. Der Vorteil der ersten Option besteht darin, dass die resultierende Größe kleiner ist. Der Vorteil der letzteren Option besteht darin, dass die GID (Glyphenidentifizierer) sich nicht ändern. Dies ist wichtig, weil die Glyphen nach ihrem GID ausgewählt werden. Wenn die erste Option verwendet wird, müssen die Schriftcodierungstabellen (cmap) oder die Datenstruktur GIDtoCIDMap angepasst werden, um die Änderungen in der Glyphennummerierung zu reflektieren. Aber es gibt auch einige Sonderfälle.
Schriftprogramme können zusammengesetzte Glyphen enthalten, z.B. kann die Glyphe 'ä' auf zwei separate Glyphen 'a' und '¨' verweisen. Beim Subsetting einer solchen Schrift müssen die Beschreibungen der zusammengesetzten Glyphen aktualisiert werden, wenn sich die Glyphennummerierung ändert, und die verwiesenen Glyphen dürfen nicht entfernt werden, wenn sie nicht direkt vom Text in einem Dokument referenziert werden. Weitere Informationen wie die Codierungstabellen (cmap), Schriftmétriken (head, hhea, hmtx) und Anweisungen (prep, fpgm, cvt) können ebenfalls auf Glyphennummern verweisen und müssen entsprechend aktualisiert werden.
Subsetting verhindert die Bearbeitung von PDF-Dokumenten. Insbesondere in interaktiven Formularen dürfen die Schriften, die zum Ausfüllen von Formularfeldern verwendet werden, nicht unterteilt werden.
Das Subsetting von Schriftarten ist eine komplexe Aufgabe und fehleranfällig. Die Mehrheit der schlechten PDF-Dateien in der realen Welt enthält fehlerhaft eingebettete Schriften, die von nicht funktionierenden Subsetting-Algorithmen herrühren.