PdfASymbolicFontEncodingStrategy

PdfASymbolicFontEncodingStrategy class

Этот класс описывает правила, которые можно использовать для настройки процесса копирования данных кодировки для случаев , когда символьный шрифт TrueType имеет более одной кодировки. Некоторые PDF-документы после преобразования в формат PDF/A могут иметь ошибку Cmap шрифта TrueType". В чем причина этой ошибки? Все символьные шрифты TrueType имеют в своих внутренних данных специальную таблицу “cmap” . Эта таблица сопоставляет коды символов с индексами глифов. И эта таблица может содержать различные подтаблицы кодирования, которые описывают используемые кодировки. См. дополнительную информацию о таблицах cmap по адресу https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6cmap.html. Обычно таблица cmap содержит несколько подтаблиц кодирования, но стандарт PDF/A требует только одной кодировки. подтаблица (3,0) должна быть оставлена для этого шрифта в документе PDF/A. И здесь ключевой вопрос - какие данные нужно взять из других подтаблиц, чтобы скопировать в целевую таблицу кодирования (3,0)? Большинство шрифтов имеют «правильно сформированные» таблицы cmap, где каждая подтаблица кодирования полностью согласуется с другой подтаблицей. Но некоторые fonts имеют таблицы cmap с коллизиями - где, например, одна подтаблица имеет индекс глифа 100 для юникода 100, а другая подтаблица имеет индекс глифа 200 для того же юникода 100. Для решения этой проблемы требуется специальная стратегия. По умолчанию используется следующая стратегия: mac subtable(1,0) ищется. Если эта таблица найдена, только эти данные используются для заполнения таблицы destination (3,0). Если подтаблица mac не найдена, то все подтаблицы, кроме (3,0), повторяются и используются для копирования данных в подтаблицу назначения (3,0). Также сопоставление для каждого юникода (юникода, индекса глифа) копируется в целевую таблицу, только если в целевой таблице нет этого юникода в текущий момент. Так, например, если первая подтаблица имеет индекс глифа 100 для юникода 100, а следующая подтаблица имеет индекс глифа 200 для того же юникода 100, будут скопированы только данные из первой подтаблицы (юникод = 100, индекс глифа = 100). Таким образом, каждая предыдущая подтаблица имеет приоритет над следующей. Свойства этого классаPdfASymbolicFontEncodingStrategyпомогите настроить поведение по умолчанию. Если свойствоPreferredCmapEncodingTable типаCMapEncodingTableType , тогда соответствующая подтаблица будет использоваться в приоритете над подтаблицей mac(1,0). Значение «MacTable» из перечисления CMapEncodingTableType в этом случае не имеет смысла, потому что указывает на ту же подтаблицу mac (1,0), которая будет использоваться по умолчанию. СвойствоCmapEncodingTablesPriorityQueue отбрасывает все приоритеты для любой подтаблицы. Если это свойство установлено, то в указанном порядке будут использоваться только подтаблицы из объявленной очереди. ОбъектQueueItem указывает используемую подтаблицу кодирования. Эту подтаблицу можно установить с помощью комбинации элементов (PlatformID, PlatformSpecificId) или с помощьюCMapEncodingTableType перечисление.

public class PdfASymbolicFontEncodingStrategy

Конструкторы

ИмяОписание
PdfASymbolicFontEncodingStrategy()Конструктор. Устанавливает подтаблицу по умолчанию (mac 1,0)
PdfASymbolicFontEncodingStrategy(CMapEncodingTableType)Конструктор
PdfASymbolicFontEncodingStrategy(Queue<QueueItem>)Конструктор

Характеристики

ИмяОписание
CmapEncodingTablesPriorityQueue { get; set; }Указывает очередь подтаблиц кодирования для обработки.
PreferredCmapEncodingTable { get; set; }Определяет подтаблицу, которая будет использоваться в приоритете над подтаблицей mac(1,0). Значение «MacTable» из перечисления CMapEncodingTableType в данном случае не имеет смысла.

Смотрите также