我试图使用以下命令(Ghostscript 9.27,Windows 10)模拟CID字体“ AdobeGothicStd-Bold”,该字体以OpenType字体形式存在:
gswin64c.exe -I"C:/Program Files/gs/ghostscript-9.27/Resource/Init";"C:/Program Files/gs/ghostscript-9.27/Resource/Font" -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -dPDFSTOPONERROR -dBATCH -dNOPAUSE -sOutputFile=output.pdf "C:/Temp/ghostscript_question_4-22-2019.pdf"
我尝试在'cidfmap'中添加以下内容(这是在我意识到文档中的'cidfmap'替换仅适用于TrueType字体之前):
/AdobeGothicStd-Bold << /FileType /TrueType /Path (C:/Windows/Fonts/AdobeGothicStd-Bold.otf) /CSI [(Japan1) 2] >> ;
具有以下输出:
GPL Ghostscript 9.27 (2019-04-04)
Copyright (C) 2018 Artifex Software, Inc. All rights reserved.
This software is supplied under the GNU AGPLv3 and comes with NO WARRANTY:
see the file COPYING for details.
Processing pages 1 through 1.
Page 1
Loading a TT font from C:/WINDOWS/Fonts/AdobeGothicStd-Bold.otf to emulate a CID font AdobeGothicStd-Bold ... Done.
Error: /undefined in --get--
Operand stack:
--nostringval-- --dict:19/29(L)-- --nostringval-- --dict:19/29(L)-- --dict:1/1(L)-- N false true --dict:3/3(L)-- --dict:13/21(ro)(L)-- F0 13 5 --dict:6/15(L)-- --dict:6/15(L)-- AdobeGothicStd-Bold --dict:10/12(ro)(G)-- --nostringval-- --nostringval-- CIDFontObject --dict:8/17(L)-- --dict:8/17(L)-- AdobeGothicStd-Bold 26 10 75742 resourcefont --dict:29/32(L)-- undefinederror
Execution stack:
%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1992 1 3 %oparray_pop 1991 1 3 %oparray_pop 1979 1 3 %oparray_pop 1980 1 3 %oparray_pop --nostringval-- --nostringval-- 2 1 1 --nostringval-- %for_pos_int_continue 1983 1 7 %oparray_pop --nostringval-- --nostringval-- --nostringval-- --nostringval-- %array_continue --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- --dict:1/1(L)-- --nostringval-- 1 %dict_continue --nostringval-- 1968 7 9 %oparray_pop --nostringval-- 1969 8 9 %oparray_pop --nostringval-- 9 0 1913 10 10 %oparray_pop --nostringval-- false 1 %stopped_push 1912 10 10 %oparray_pop --nostringval-- --nostringval-- (gstatetype) --dict:0/0(L)-- --nostringval-- --nostringval-- %loop_continue 1964 15 10 %oparray_pop --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- %array_continue --nostringval-- --nostringval-- --nostringval-- --nostringval--
Dictionary stack:
--dict:735/1123(ro)(G)-- --dict:1/20(G)-- --dict:80/200(L)-- --dict:80/200(L)-- --dict:133/256(ro)(G)-- --dict:317/325(ro)(G)-- --dict:31/32(L)-- --dict:6/9(L)-- --dict:7/20(L)-- --dict:5/5(L)--
Current allocation mode is local
GPL Ghostscript 9.27: Unrecoverable error, exit code 1
我还尝试过对Fontmap.GS进行以下更改来运行上述命令:
/AdobeGothicStd-Bold (C:/Windows/Fonts/AdobeGothicStd-Bold.otf) ;
和以下输出:
GPL Ghostscript 9.27 (2019-04-04)
Copyright (C) 2018 Artifex Software, Inc. All rights reserved.
This software is supplied under the GNU AGPLv3 and comes with NO WARRANTY:
see the file COPYING for details.
Processing pages 1 through 1.
Page 1
Can't find CID font "AdobeGothicStd-Bold".
Attempting to substitute CID font /Adobe-Korea1 for /AdobeGothicStd-Bold, see doc/Use.htm#CIDFontSubstitution.
The substitute CID font "Adobe-Korea1" is not provided either. attempting to use fallback CIDFont.See doc/Use.htm#CIDFontSubstitution.
Loading a TT font from C:/Program Files/gs/ghostscript-9.27/Resource/CIDFSubst/DroidSansFallback.ttf to emulate a CID font Adobe-Korea1 ... Done.
这告诉我,Fontmap.GS中的更改未被识别(并且我可能不应该使用Fontmap.GS进行CID字体替换)。
我们是否可以使用.OTF文件模拟CID字体?还是当前不支持此功能?
我确实看到了2015年的外部链接,该链接解释了如何使用OpenType字体文件在Ghostscript中设置CID字体:
https://www.preining.info/blog/2015/04/setting-up-cid-fonts-for-ghostscript-technical-notes/
但是我不知道该方法是否适用于当前版本的Ghostscript。
在我的问题中使用的PDF文件位于:
https://drive.google.com/open?id=1hsUACus_T0pu7D2BGnWE2H_mUpfCBrtk
答案 0 :(得分:0)
基本问题是PostScript不直接支持TrueType。它支持类型42,这是一个TrueType格式,其中包含额外的信息,以允许PostScript解释程序使用它。因此,为了使用TrueType字体代替丢失的CIDFont(或字体),itnerpreter必须对丢失的信息进行猜测。
通常这是可行的,但有时无效。进行猜测的代码仅预期会遇到TrueType字体,并且会从TrueType表中获取所需的一些信息。您所说的OpenType字体是带有CFF轮廓的TrueType字体,它实际上是OTTO字体,TrueType字体必须具有TrueType轮廓数据。 OpenType字体可以具有TrueType或CFF轮廓数据。 OTTO OpenType字体的信息与TrueType表中代码所需要的信息不同,因此必须从CFF字体数据的字典中收集。
我不记得目前这个过程正在进行的正确程度。
就像我在这种情况下经常说的那样,您应该始终将所有嵌入在PDF文件中的字体。 PDF规范甚至说CIDFonts就是这种情况。这是保证可重复性的唯一方法。
因为我没有AdobeGothicStd-Bold.otf的副本,所以我无法为您尝试一下,但是有几点可能会有所帮助:
请注意,所有这些要点都与提供替代字体来代替未嵌入字体(或CIDFont)的PDF文件中的字体参考一起使用。嵌入字体,无论哪种轮廓类型都可以使用,并且包括带有CFF轮廓的OpenType字体。