На этот вопрос (в конце концов) ответили с самого начала, на UseNet в comp.text.pdf.Проблема в том, что файл PDF содержит ссылку на CIDFont (не шрифт, а CIDFont).В отличие от поставленной выше задачи, шрифт не встроен, и в этом трудность.
CIDFonts довольно сложнее, чем шрифты, и непросто заменить отсутствующие шрифты втак же, как отсутствующие латинские обычные шрифты заменяются (например) Courier.
Невозможно пропустить шрифт, потому что Ghostscript не может сразу узнать, где будет отображаться текст (т.е. шрифтзагружается до того, как мы узнаем, где будет отрисовываться текст).
Теперь Ghostscript позволяет вам указывать дополнительные шрифты;в случае CIDFonts они описаны в файле с именем cidfmap, который находится в gs / Resource / Init в дистрибутиве Ghostscript.
Проблема 1 заключается в том, что по умолчанию ресурсы GS встроены в исполняемый файл и используютсяфайл, расположенный в файловой системе ROM.Таким образом, мы должны указать GS смотреть на диск вместо этого.Есть два способа сделать это:
1) Скопируйте все ресурсы из исходного дистрибутива (все в / gs / Resource) в удобное место и используйте ключ -sGenericResourceDir =, чтобы указать GS использовать этот каталог.,Если вы сделаете это, то должны быть осторожны, чтобы добавить конечный разделитель каталогов в конец пути.Я упоминаю об этом, потому что обычно с GS вы не делаете это.В этом случае PLRM говорит, что мы должны.
2) Скопируйте файл cidfmap в удобное для вас место и скажите GS, чтобы он просматривал этот каталог, используя ключ -I, который добавляет каталог в начало списка поиска.Это важно, потому что вы можете иметь только один файл cidfmap, а GS использует первый найденный файл.
Итак, о самих файлах шрифтов.Вы можете использовать подлинный CIDFont или шрифт TrueType вместо CIDFont.
Если вы используете подлинный CIDFont, то вы должны либо использовать опцию 1 выше (GenericResourceDir) и поместить файл в каталог с именем Resource / CIDFonts в расположении GenericResourceDir, либо вы используете опцию 2 и поместите CIDFont вдиректория с именем CIDFonts непосредственно под местоположением, на которое указывает -I.
Если вы используете шрифт TrueType в качестве замены, вы можете использовать ключ / Path в записи для шрифта в cidfmap, чтобы указать на шрифт TrueType.
Сложности преобразования шрифта TrueType неизвестного происхождения в определенный тип CIDFont означают, что вам необходимо предоставить много информации в записи cidfmap, это задокументировано в самом файле.На что следует обратить внимание:
1) / Path должен указывать на файл шрифта, он должен присутствовать и иметь разрешения, позволяющие его читать.
2) Вы должны указать /SubfontID для коллекции TrueType.Если вы хотите использовать что-либо, кроме первого субфонта, тогда вы должны указать SubfontID.
3) Записи в cidfmap интерпретируются интерпретатором PostScript и поэтому должны соответствовать синтаксису PostScript.В частности, имя шрифта является объектом имени PostScript и поэтому должно быть введено с помощью '/'.
Наконец;ряд дистрибутивов Linux не поставляют полный исходный код для Ghostscript, вам может потребоваться подобрать его, прежде чем использовать какой-либо из приведенных выше советов.Вы можете получить релизы здесь:
http://www.ghostscript.com/