PdfASymbolicFontEncodingStrategy
PdfASymbolicFontEncodingStrategy class
Diese Klasse beschreibt Regeln, die verwendet werden können, um den Prozess des Kopierens von Kodierungsdaten für Fälle zu optimieren, wenn TrueType-Symbolschriftarten mehr als eine Kodierung haben. Einige PDF-Dokumente könnten nach der Konvertierung in das PDF/A-Format den Fehler “Mehr als eine Kodierung in symbolisch cmap der TrueType-Schriftart”. Was ist ein Grund für diesen Fehler? Alle symbolischen TrueType-Fonts haben eine spezielle Tabelle “cmap” in ihren internen Daten. Diese Tabelle bildet Zeichencodes auf Glyph-Indizes ab. Und diese Tabelle könnte verschiedene Codierungsuntertabellen enthalten, die verwendete Codierungen beschreiben. Weitere Informationen zu cmap-Tabellen finden Sie unter https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6cmap.html. Normalerweise enthält die cmap-Tabelle mehrere Codierungsuntertabellen, aber der PDF/A-Standard erfordert diese nur eine Codierung Untertabelle (3,0) muss für diesen Font im PDF/A-Dokument verlassen werden. Und die Schlüsselfrage hier - welche Daten müssen aus anderen Untertabellen genommen werden, um sie in die Zielkodierungstabelle (3,0) zu kopieren? Die meisten Schriftarten haben „wohlgeformte“ cmap-Tabellen, in denen jede untergeordnete Codierungstabelle mit einer anderen untergeordneten Tabelle vollständig konsistent ist. Aber einige Schriftarten haben cmap-Tabellen mit Kollisionen - wobei zum Beispiel eine Untertabelle den Glyphenindex 100 für Unicode 100 hat, aber eine andere Untertabelle den Glyphenindex 200 für denselben Unicode 100 hat. Um dieses Problem zu lösen, ist eine spezielle Strategie erforderlich. Standardmäßig wird folgende Strategie verwendet: mac subtable(1,0) wird gesucht. Wenn diese Tabelle gefunden wird, werden nur diese Daten verwendet, um die Tabelle destination (3,0) zu füllen. Wenn die Mac-Untertabelle nicht gefunden wird, werden alle Untertabellen außer (3,0) iteriert und zum Kopieren von Daten in die Zieluntertabelle (3,0) verwendet. Auch die Zuordnung für jeden Unicode (Unicode, Glyph-Index) wird nur dann in die Zieltabelle kopiert, wenn die Zieltabelle diesen Unicode im aktuellen Moment nicht hat. Wenn also beispielsweise die erste Untertabelle den Glyphenindex 100 für Unicode 100 und die nächste Untertabelle den Glyph -Index 200 für denselben Unicode 100 hat, werden nur Daten aus der ersten Untertabelle (Unicode=100, Glyphenindex = 100) kopiert. Also hat jede vorherige Untertabelle Vorrang vor der nächsten. Eigenschaften dieser KlassePdfASymbolicFontEncodingStrategy
helfen, das Standardverhalten zu optimieren. Wenn EigenschaftPreferredCmapEncodingTable
des TypsCMapEncodingTableType
gesetzt ist, wird die relevante Untertabelle vorrangig vor der Mac-Untertabelle (1,0) verwendet. Wert ‘MacTable’ from AufzählungCMapEncodingTableType
hat in diesem Fall keinen Sinn, weil es auf die gleiche Mac-Untertabelle (1,0) zeigt, die standardmäßig verwendet wird. EigentumCmapEncodingTablesPriorityQueue
verwirft alle Prioritäten für alle Untertabellen. Wenn diese Eigenschaft gesetzt ist, werden nur Untertabellen aus der deklarierten Warteschlange in der angegebenen Reihenfolge verwendet. Wenn die angegebenen Untertabellen nicht gefunden werden, wird die standardmäßige Iteration aller Untertabellen und die oben beschriebene Kopierstrategie verwendet. ObjektQueueItem
gibt die verwendete Untertabelle für die Codierung an. Diese Untertabelle kann über eine Kombination von Mitgliedern (PlatformID, PlatformSpecificId) oder über set gesetzt werdenCMapEncodingTableType
Aufzählung.
public class PdfASymbolicFontEncodingStrategy
Konstrukteure
Eigenschaften
Siehe auch