为什么 Ghostscript 无法识别我修改后的 'cidfmap' 文件?
Why won't Ghostscript recognize my modified 'cidfmap' file?
我正在尝试在 Windows 10 Pro 上使用 Ghostscript 9.27 压缩带有 CID 字体的 PDF,使用修改后的 'cidfmap' 文件($GS_HOME/Resource/Init/cidfmap)。但是,Ghostscript 似乎无法识别我对 'cidfmap' 所做的更改,而是想要加载 DroidSansFallback TrueType 字体来模拟缺少的 CID 字体。
我已尝试使用“-I”命令行参数告诉 Ghostscript 使用 $GS_HOME/Resource/Init 目录中修改后的文件,如文档中所指定。
我还尝试在 VS 2017 的开发人员命令提示符中构建源代码,使用以下命令(没有错误):
nmake /A psi/msvc.mak MSVC_VERSION=15 WIN64=
下面是完整的 Ghostscript 命令我在命令提示符中 运行:
gswin64c.exe -I"C:/Program Files/gs/ghostscript-9.27/Resource/Init" -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -dPDFSTOPONERROR -dBATCH -dNOPAUSE -sOutputFile=output.pdf m0001-062-1.pdf
添加到'cidfmap'文件的记录(这是唯一的):
/MSPGothic << /FileType /TrueType /Path ("C:/Windows/Fonts/msgothic.ttc") /SubfontID 0 /CSI [(Japan1) 2] >> ;
以及我在这两种情况下收到的 Ghostscript 输出:
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 4.
Page 1
Loading NimbusRoman-Bold font from C:/Program Files/gs/ghostscript-9.27/Resource/Font/NimbusRoman-Bold... 4570288 3226611 4074256 2336262 4 done.
Page 2
Page 3
Querying operating system for font files...
Substituting font Helvetica for ArialMT.
Loading NimbusSans-Regular font from C:/Program Files/gs/ghostscript-9.27/Resource/Font/NimbusSans-Regular... 5086792 3742157 2284000 967988 4 done.
Substituting font Helvetica-Narrow for ArialNarrow.
Loading NimbusSansNarrow-Regular font from C:/Program Files/gs/ghostscript-9.27/Resource/Font/NimbusSansNarrow-Regular... 5273304 3930300 2397536 1064531 4 done.
Substituting font Helvetica-Bold for Arial-BoldMT.
Loading NimbusSans-Bold font from C:/Program Files/gs/ghostscript-9.27/Resource/Font/NimbusSans-Bold... 5500440 4150230 3021540 1680111 4 done.
Can't find CID font "MSPGothic".
Attempting to substitute CID font /Adobe-Japan1 for /MSPGothic, see doc/Use.htm#CIDFontSubstitution.
The substitute CID font "Adobe-Japan1" 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-Japan1 ... Done.
Page 4
Can't find CID font "MSPGothic".
Attempting to substitute CID font /Adobe-Japan1 for /MSPGothic, 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-Japan1 ... Done.
似乎我在这里错过了一些简单的东西,因为其他有类似问题的人只使用“-I”命令行参数就可以使用它。
我做错了什么?
问题很清楚(一旦我仔细看!)。您在文件名两边加上引号 ""。
'(' 和 ')' 字符是 PostScript 中的字符串定界符,而不是 "(并且 cidfmap 文件被读取为 PostScript 程序)所以通过这样做,您已经使 " 字符成为路径的一部分。不出所料,Ghostscript 找不到以“
开头的路径
因此,如果您将 cidfmap 条目更改为:
/MSPGothic << /FileType /TrueType /Path (C:/Windows/Fonts/msgothic.ttc) /SubfontID 0 /CSI [(Japan1) 2] >> ;
你应该会发现它有用,它对我有用。
我正在尝试在 Windows 10 Pro 上使用 Ghostscript 9.27 压缩带有 CID 字体的 PDF,使用修改后的 'cidfmap' 文件($GS_HOME/Resource/Init/cidfmap)。但是,Ghostscript 似乎无法识别我对 'cidfmap' 所做的更改,而是想要加载 DroidSansFallback TrueType 字体来模拟缺少的 CID 字体。
我已尝试使用“-I”命令行参数告诉 Ghostscript 使用 $GS_HOME/Resource/Init 目录中修改后的文件,如文档中所指定。
我还尝试在 VS 2017 的开发人员命令提示符中构建源代码,使用以下命令(没有错误):
nmake /A psi/msvc.mak MSVC_VERSION=15 WIN64=
下面是完整的 Ghostscript 命令我在命令提示符中 运行:
gswin64c.exe -I"C:/Program Files/gs/ghostscript-9.27/Resource/Init" -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -dPDFSTOPONERROR -dBATCH -dNOPAUSE -sOutputFile=output.pdf m0001-062-1.pdf
添加到'cidfmap'文件的记录(这是唯一的):
/MSPGothic << /FileType /TrueType /Path ("C:/Windows/Fonts/msgothic.ttc") /SubfontID 0 /CSI [(Japan1) 2] >> ;
以及我在这两种情况下收到的 Ghostscript 输出:
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 4.
Page 1
Loading NimbusRoman-Bold font from C:/Program Files/gs/ghostscript-9.27/Resource/Font/NimbusRoman-Bold... 4570288 3226611 4074256 2336262 4 done.
Page 2
Page 3
Querying operating system for font files...
Substituting font Helvetica for ArialMT.
Loading NimbusSans-Regular font from C:/Program Files/gs/ghostscript-9.27/Resource/Font/NimbusSans-Regular... 5086792 3742157 2284000 967988 4 done.
Substituting font Helvetica-Narrow for ArialNarrow.
Loading NimbusSansNarrow-Regular font from C:/Program Files/gs/ghostscript-9.27/Resource/Font/NimbusSansNarrow-Regular... 5273304 3930300 2397536 1064531 4 done.
Substituting font Helvetica-Bold for Arial-BoldMT.
Loading NimbusSans-Bold font from C:/Program Files/gs/ghostscript-9.27/Resource/Font/NimbusSans-Bold... 5500440 4150230 3021540 1680111 4 done.
Can't find CID font "MSPGothic".
Attempting to substitute CID font /Adobe-Japan1 for /MSPGothic, see doc/Use.htm#CIDFontSubstitution.
The substitute CID font "Adobe-Japan1" 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-Japan1 ... Done.
Page 4
Can't find CID font "MSPGothic".
Attempting to substitute CID font /Adobe-Japan1 for /MSPGothic, 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-Japan1 ... Done.
似乎我在这里错过了一些简单的东西,因为其他有类似问题的人只使用“-I”命令行参数就可以使用它。
我做错了什么?
问题很清楚(一旦我仔细看!)。您在文件名两边加上引号 ""。
'(' 和 ')' 字符是 PostScript 中的字符串定界符,而不是 "(并且 cidfmap 文件被读取为 PostScript 程序)所以通过这样做,您已经使 " 字符成为路径的一部分。不出所料,Ghostscript 找不到以“
开头的路径因此,如果您将 cidfmap 条目更改为:
/MSPGothic << /FileType /TrueType /Path (C:/Windows/Fonts/msgothic.ttc) /SubfontID 0 /CSI [(Japan1) 2] >> ;
你应该会发现它有用,它对我有用。