Aspose::Pdf::PdfASymbolicFontEncodingStrategy klass
PdfASymbolicFontEncodingStrategy class
Denna klass beskriver regler som kan användas för att finjustera processen för att kopiera kodningsdata i fall då en TrueType symbolisk font har mer än en kodning. Vissa PDF‑dokument efter konvertering till PDF/A‑format kan ge ett fel "More than one encoding in symbolic TrueType font’s cmap". Vad är orsaken till detta fel? Alla TrueType symboliska fonter har en speciell tabell "cmap" i sin interna data. Denna tabell mappar teckenkoder till glyf‑index. Och tabellen kan innehålla olika kodnings‑under‑tabeller som beskriver vilka kodningar som används. Se avancerad information om cmap‑tabeller på https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6cmap.html. Vanligtvis innehåller cmap‑tabellen flera kodnings‑under‑tabeller, men PDF/A‑standarden kräver att antingen bara en kodnings‑under‑tabell får finnas kvar för denna font i PDF/A‑dokumentet eller att det finns en (3,0) kodnings‑under‑tabell bland fontens under‑tabeller. Och den centrala frågan här – vilka data måste tas från andra under‑tabeller för att kopieras till destinations‑kodningstabell (3,0)? Majoriteten av fonter har ‘well-formed’ cmap‑tabeller där varje kodnings‑under‑tabell är fullt konsistent med en annan under‑tabell. Men vissa fonter har cmap‑tabeller med kollisioner – där till exempel en under‑tabell har glyf‑index 100 för unicode 100, men en annan under‑tabell har glyf‑index 200 för samma unicode 100. För att lösa detta problem behövs en speciell strategi. Som standard används följande strategi: mac‑under‑tabell(1,0) söks. Om denna tabell hittas används endast dessa data för att fylla destinations‑tabellen (3,0). Om mac‑under‑tabell inte hittas itereras alla under‑tabeller förutom (3,0) och deras data kopieras till destinations‑under‑tabell (3,0). Dessutom kopieras mappning för varje unicode (unicode, glyf‑index) till destinations‑tabellen endast om destinations‑tabellen för närvarande inte innehåller detta unicode. Så, till exempel om den första under‑tabellen har glyf‑index 100 för unicode 100, och nästa under‑tabell har glyf‑index 200 för samma unicode 100, kopieras endast data från den första under‑tabellen (unicode=100, glyf‑index = 100). Så varje tidigare under‑tabell har företräde framför nästa. Egenskaperna i denna klass PdfASymbolicFontEncodingStrategy hjälper till att finjustera standardbeteendet. Om egenskapen PreferredCmapEncodingTable av typen QueueItem::CMapEncodingTableType är satt, kommer relevant under‑tabell att användas i företräde framför mac‑under‑tabell(1,0). Värdet ‘MacTable’ från uppräkningen QueueItem::CMapEncodingTableType har ingen mening i detta fall, eftersom det pekar på samma mac‑under‑tabell (1,0) som används som standard. Egenskapen CmapEncodingTablesPriorityQueue förkastar alla prioriteringar för någon under‑tabell. Om denna egenskap är satt används endast under‑tabeller från den deklarerade kön i angiven ordning. Om angivna under‑tabeller inte hittas används standarditerering av alla under‑tabeller och kopieringsstrategin som beskrivits ovan. Objektet QueueItem specificerar vilken kodnings‑under‑tabell som används. Denna under‑tabell kan sättas via en kombination av medlemmar (PlatformID, PlatformSpecificId) eller via uppräkningen QueueItem::CMapEncodingTableType. Om fonten saknar (3,0)‑under‑tabell kommer någon annan under‑tabell att användas för att upprätthålla PDF/A‑kompatibiliteten. Valet av under‑tabell görs enligt samma regler som beskrivits tidigare, så att PreferredCmapEncodingTable och CmapEncodingTablesPriorityQueue egenskaperna används för att bestämma den resulterande under‑tabellen, och om fonten inte har den begärda under‑tabellen/under‑tabellerna används någon befintlig under‑tabell.
class PdfASymbolicFontEncodingStrategy : public System::Object
Nested classes
- Class QueueItem
Metoder
| Metod | Beskrivning |
|---|---|
| get_CmapEncodingTablesPriorityQueue() const | Specificerar kö av kodnings‑under‑tabeller som ska bearbetas. |
| get_PreferredCmapEncodingTable() const | Specificerar under‑tabell som kommer att användas i företräde framför mac‑under‑tabell(1,0). Värdet ‘MacTable’ från uppräkningen QueueItem::CMapEncodingTableType har ingen mening i detta fall. |
| PdfASymbolicFontEncodingStrategy() | Konstruktor. Anger standard‑under‑tabell (mac 1,0) |
| PdfASymbolicFontEncodingStrategy(const System::SharedPtr<System::Collections::Generic::Queue<System::SharedPtr<PdfASymbolicFontEncodingStrategy::QueueItem>>>&) | Konstruktor. |
| PdfASymbolicFontEncodingStrategy(PdfASymbolicFontEncodingStrategy::QueueItem::CMapEncodingTableType) | Konstruktor. |
| set_CmapEncodingTablesPriorityQueue(const System::SharedPtr<System::Collections::Generic::Queue<System::SharedPtr<PdfASymbolicFontEncodingStrategy::QueueItem>>>&) | Specificerar kö av kodnings‑under‑tabeller som ska bearbetas. |
| set_PreferredCmapEncodingTable(PdfASymbolicFontEncodingStrategy::QueueItem::CMapEncodingTableType) | Specificerar under‑tabell som kommer att användas i företräde framför mac‑under‑tabell(1,0). Värdet ‘MacTable’ från uppräkningen QueueItem::CMapEncodingTableType har ingen mening i detta fall. |
Se även
- Class Object
- Namespace Aspose::Pdf
- Library Aspose.PDF for C++