PdfASymbolicFontEncodingStrategy

PdfASymbolicFontEncodingStrategy class

Den här klassen beskriver regler som kan användas för att justera processen för kopiering av kodningsdata för case när TrueType symboliskt teckensnitt har mer än en kodning. Vissa PDF-dokument efter konvertering till PDF/A-format kan ha felet “Mer än en kodning i symbolisk TrueType-teckensnittets cmap”. Vad är orsaken till detta fel? Alla TrueType symboliska teckensnitt har en speciell tabell “cmap” i sin interna data. Den här tabellen mappar teckenkoder till glyfindex. Och den här tabellen kan innehålla olika kodningsundertabeller som beskriver använda kodningar. Se avancerad information om cmap-tabeller på https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6cmap.html. Vanligtvis innehåller cmap-tabellen flera kodningsundertabeller, men PDF/A-standard kräver att endast en kodning undertabell (3,0) måste lämnas för detta teckensnitt i PDF/A-dokument. Och nyckelfrågan här - vilken data måste tas från en annan deltabell för att kopiera in i destinationskodningstabell (3,0)? Majoriteten av typsnitten har “välformade” cmap-tabeller där varje kodande deltabell är helt överensstämmande med en annan deltabell. Men vissa fonts har cmap-tabeller med kollisioner - där till exempel en deltabell har glyph index 100 för unicode 100, men en annan deltabell har glyph index 200 för samma unicode 100. För att lösa detta problem krävs speciell strategi. Som standard används följande strategi: mac subtable(1,0) letas efter. Om denna tabell hittas används endast denna data för att fylla destination -tabellen (3,0). Om mac-undertabellen inte hittas, upprepas alla undertabeller utom (3,0) och används för att kopiera data till destinationsundertabellen (3,0). Även mappning för varje unicode(unicode, glyph index) kopieras till destinationstabellen endast om destinationstabellen inte har denna unicode för närvarande. Så, till exempel om första deltabellen har glyph index 100 för unicode 100, och nästa deltabell har glyph index 200 för samma unicode 100, kommer endast data från första deltabellen (unicode=100, glyph index = 100) att copied. Så varje föregående deltabell har företräde framför nästa. Egenskaper för denna klassPdfASymbolicFontEncodingStrategyhjälpa till att ställa in standardbeteende. Om egenskapPreferredCmapEncodingTable av typCMapEncodingTableType är inställd, då kommer relevant undertabell att användas före mac-undertabell(1,0). Värde ‘MacTable’ från uppräkningCMapEncodingTableType har ingen mening i det här fallet, eftersom det pekar på samma mac-undertabell (1,0) som kommer att användas som standard. EgenskapCmapEncodingTablesPriorityQueue förkastar alla prioriteringar för någon deltabell. Om den här egenskapen är inställd kommer endast deltabeller från deklarerad kö att användas i angiven ordning. Om angivna deltabeller inte hittas kommer standarditeration av alla deltabeller och kopieringsstrategi som beskrivs ovan att användas. ObjektQueueItem anger kodningsundertabell som används. Denna undertabell kan sättas via en kombination av medlemmar (PlatformID, PlatformSpecificId) eller viaCMapEncodingTableType uppräkning.

public class PdfASymbolicFontEncodingStrategy

Konstruktörer

namnBeskrivning
PdfASymbolicFontEncodingStrategy()Konstruktör. Ställer in standardundertabell (mac 1,0)
PdfASymbolicFontEncodingStrategy(CMapEncodingTableType)Konstruktör
PdfASymbolicFontEncodingStrategy(Queue<QueueItem>)Konstruktör

Egenskaper

namnBeskrivning
CmapEncodingTablesPriorityQueue { get; set; }Anger kö av kodningsundertabeller som ska bearbetas.
PreferredCmapEncodingTable { get; set; }Anger undertabell som kommer att användas före mac-undertabell(1,0). Värde ‘MacTable’ från uppräkningCMapEncodingTableType har ingen mening i det här fallet.

Se även