我正在尝试将 pdf 文件转换为图像。
命令:gs -sDEVICE=pngalpha -sOutputFile=cover.png -r144 myfile.pdf
输出:
Can't find CID font "MyStrangeNonEmbeddedFont".
Attempting to substitute CID font /Adobe-Identity for /MyStrangeNonEmbeddedFont, see doc/Use.htm#CIDFontSubstitution.
The substitute CID font "Adobe-Identity" is not provided either. attempting to use fallback CIDFont.See doc/Use.htm#CIDFontSubstitution.
Loading a TT font from /some/path/DroidSansFallback.ttf to emulate a CID font Adobe-Identity ... Done.
字体已成功替换为 DroidSansFallback.ttf,但所有字符都不正确。示例:
'C' is substituted with '<'
'6' is substituted with '>'
'B' is substituted with '@'
'D' is substituted with 'B'
可以修复吗?
最佳答案
评论太长,添加为答案。
这就是 PDF 规范强烈建议嵌入 CIDFonts 的原因。
字符代码 -> CID -> 字形描述是规范的一个复杂区域,比常规字体更复杂。
唯一正确的方法是使用未嵌入的原始字体。 “修复”此问题的最佳方法是嵌入字体并制作一个新的 PDF 文件。
如果您不能这样做,那么您可以获取字体并向 cidfmap 添加特定条目。
否则您可以尝试编辑 PDF 文件中的 CMap(CMap 将字符代码映射到 CID)或文档中的字符代码,以匹配您可用的任何字体(这可能需要大量工作).
CIDSystemInfo 的排序“可能”会给您一些线索,您可以使用注册表和排序来确定 CID 与实际字形的关系。
如果您有一个真正的 CIDFont 用作替代品,可能能够操纵字形的 CID,但这将很难。如果您使用 TrueType 字体代替 CIDFont,则您无法更改 Ghostscript 将为该 CIDFont 生成的 CMap。
关于linux - GhostScript - 错误的字体替换(错误的字符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33577882/