Ghostscript не меняет имя шрифта, но на самом деле в файле PDF есть несколько разных «имен» шрифтов.
В случае вашего файла объект PDF FontDescriptor имеет имя
<<
/Type /FontDescriptor
/FontName /PMLNBT+NimbusRomanNo9L
/Flags 4
/FontBBox [ -168 -281 1031 924 ]
/ItalicAngle 0
/Ascent 924
/Descent -281
/CapHeight 924
/StemV 80
/StemH 80
/FontFile 7 0 R
>>
который ссылается на поток FontFile
/FontFile 7 0 R
Этот поток содержит следующее:
%!PS-AdobeFont-1.0: NimbusRomNo9L-Regu 1.06
%%Title: NimbusRomNo9L-Regu
%Version: 1.06
%%CreationDate: Thu Aug 2 13:14:49 2007
%%Creator: frob
%Copyright: Copyright (URW)++,Copyright 1999 by (URW)++ Design &
%Copyright: Development; Cyrillic glyphs added by Valek Filippov (C)
%Copyright: 2001-2005
% Generated by FontForge 20070723 (http://fontforge.sf.net/)
%%EndComments
FontDirectory/NimbusRomNo9L-Regu known{/NimbusRomNo9L-Regu findfont dup/UniqueID known pop false {dup
/UniqueID get 5020931 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CairoFont-0-0 def
Видите ли вы FontName в фактическом шрифте? Называется CairoFont-0-0
Это возвращает меня к вопросу, который я часто повторяю здесь и в других местах; когда вы обрабатываете PDF-файл с помощью Ghostscript и создаете новый PDF-файл с помощью устройства pdfwrite, вы не «оптимизируете», «преобразовываете», «подмножаете» или в общем смысле манипулируете содержимым исходного PDF-файла.
Что делает Ghostscript, так это интерпретирует файл PDF, создавая набор операций маркировки opf (таких как «штрих», «заливка», «изображение» и т. д.), которые он отправляет на выбранное устройство Ghostscript. Большинство устройств Ghostscript затем будут использовать графическую библиотеку для рендеринга операций в растровое изображение, и когда страница будет завершена, растровое изображение будет записано в файл. Устройства «высокого уровня» или «векторные» вместо этого переупаковывают операции в другой язык описания страниц. В случае pdfwrite это PDF-файл.
На практике это означает, что созданный файл PDF не имеет ничего общего (кроме внешнего вида) с исходным файлом PDF. В частности описание объектов может отличаться.
Итак, в вашем случае устройство pdfwrite не знает, как назывался шрифт в исходном объекте PDF. Он действительно знает, что определенный шрифт назывался Cairo-0-0, поэтому именно так он называет шрифт при его генерировании.
Откровенно говоря, это еще один убогий пример из Каира, чтобы согласиться с определением каждой страницы как содержащей прозрачность, независимо от того, имеет она или нет, FontName в объекте Font предполагается совпадать с именем в поток шрифтов.
Совершенно очевидно, что FontName был изменен, учитывая остальную часть шаблона.
person
KenS
schedule
16.03.2016