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 KlassePdfASymbolicFontEncodingStrategyhelfen, 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

NameBeschreibung
PdfASymbolicFontEncodingStrategy()Konstruktor. Legt die Standard-Untertabelle fest (Mac 1,0)
PdfASymbolicFontEncodingStrategy(CMapEncodingTableType)Konstruktor
PdfASymbolicFontEncodingStrategy(Queue<QueueItem>)Konstruktor

Eigenschaften

NameBeschreibung
CmapEncodingTablesPriorityQueue { get; set; }Gibt die Warteschlange der zu verarbeitenden Codierungsuntertabellen an.
PreferredCmapEncodingTable { get; set; }Gibt die Untertabelle an, die vor der Mac-Untertabelle (1,0) verwendet wird. Wert ‘MacTable’ from AufzählungCMapEncodingTableType hat in diesem Fall keinen Sinn.

Siehe auch