При рендеринге PDF-файла, созданного PDFCreator 0.9.x.Я заметил, что он содержит ошибку в сопоставлении символов.Теперь об ошибке в файле PDF нечего удивляться, Acrobat творит чудеса при отображении неисправных файлов PDF, поэтому многие генераторы PDF создают файлы PDF, которые не полностью соответствуют стандарту PDF.
Я краткосоздайте небольшой файл примера: http://test.continuit.nl/temp/Document.pdf
На одной странице отображается один глиф (заглавная A) с помощью команды Tj (см. поток 5 0 obj).Выбранный шрифт (7 0 объектов) содержит шрифт с одним встроенным глифом.Все идет нормально.На char ссылается char # 1.Учитывая кодировку шрифта, он содержит часть «Различия»: [1 / A].Таким образом char 1 -> символ / A.Теперь во встроенном шрифте подмножества есть cmap, который не соответствует глифу в символе 65 (например, заглавная A), раздел cmap шрифта действительно определяет символ в точном порядке в файле PDF Font -> Encoding -> Differences array.
Похоже, что отображение / кодирование символов выполняется дважды.Похоже, что затрагиваются только файлы из PDFCreator 0.9.x.
Мой вопрос: правильно ли это (или я допустил ошибку и является ли PDF правильным) и что бы вы сделали, чтобы обнаружить эту ситуацию, чтобырешить проблему с рендерингом.
Примечание: мне нужно иметь возможность рендерить эти PDF-файлы ..
Решение
В файле ISO32000 естьпримечание, что для символических шрифтов TrueType (флаговый бит 3 включен в дескрипторе шрифта) кодировка не разрешена, и вы должны игнорировать ее, всегда используя простую кодировку 1on1.В общем, если это символический шрифт, я полностью игнорирую объект Encoding, и это решает проблему.