acroreader 在一个 pdf 文件中显示缺少字体(WPMathB、WPMathA WP Greek Helve,......),可以从以下位置轻松下载http://www.fontpalace.com。
然而,ghostscript 命令失败,尽管它指向缺少的字体目录,/home/user/WP_ttf_fonts
:
$ gs -o file-with-embedded-fonts.pdf -sDEVICE=pdfwrite -dEmbedAllFonts=true -sFONTPATH="/home/user/WP_ttf_fonts" input-without-embedded-fonts.pdf
Page 35
Can't find CID font "WPMathB".
Attempting to substitute CID font /Adobe-Identity for /WPMathB, see doc/Use.htm#CIDFontSubstitution.
Loading a TT font from
/usr/share/ghostscript/9.10/Resource/CIDFSubst/DroidSansFallback.ttf to emulate a CID font Adobe-Identity **** Warning: can't process font stream, loading font by the name.
... Done.
Can't find CMap Identity-UTF16-H building a CIDDecoding resource.
Can't find CID font "WPMathB".
Attempting to substitute CID font /Adobe-Identity for /WPMathB, see doc/Use.htm#CIDFontSubstitution.
Loading a TT font from /usr/share/ghostscript/9.10/Resource/CIDFSubst/DroidSansFallback.ttf to emulate a CID font Adobe-Identity
**** Error reading a content stream.
The page may be incomplete.
**** File did not complete the page properly and may be damaged.
... Done.
有什么帮助吗?请问如何告诉 ghostscript 接受这些字体?
答案1
WPMathA 等来自 Correl Word Perfect,Correl 允许您下载这些字体(尽管我在自解压 zip 存档中没有找到任何许可证)。不要害怕 *.exe,因为如果您解压它,它就可以正常工作。WP MathA 字体的文件名是 Wphv06na.ttf,而且它并没有那么可怕。
例子:
sudo chown $USER /usr/local/share/fonts/
cd /usr/local/share/fonts/
wget http://www.corel.com/akdlm/6763/downloads/WordPerfect/wpwin/9/wpfonts.exe
unzip wpfonts.exe
sudo chown -R root /usr/local/share/fonts/
sudo fc-cache
下一个障碍是 PDF 有WPMathA
,但字体缓存有WP MathA
:
fc-list | grep local.*MathA
/usr/local/share/fonts/Wphv06na.ttf: WP MathA:style=Normal
fc-list -v | grep -c WPMathA
0
您的任务是创建缺少的配置文件,并使用所需的别名将其绑定WPMathA
到WP MathA
。之后,您就可以放松一下,用牙签建造一艘航空母舰了。
mkdir -p ~/.config/fontconfig/
echo '<?xml version="1.0"?>' > ~/.config/fontconfig/fonts.conf
xmlcopyeditor ~/.config/fontconfig/fonts.conf
插入:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<!-- $XDG_CONFIG_HOME/fontconfig/fonts.conf for per-user font configuration -->
<fontconfig>
<alias>
<family>WPMathA</family>
<prefer><family>WP MathA</family></prefer>
</alias>
</fontconfig>
不要忘记重新构建缓存。我不需要 root/sudo。
fc-cache
此时,acroread 已不再抱怨缺少 WPMathA,而 ghostscript bugzilla bug 687595 有一条评论称在 8.60 中添加了 fontconfig 支持,但我猜他们撒了谎。如果您仍然坚持使用嵌入字体创建 PDF,即使您现在拥有的字体应该可以正常工作,您可以阅读 ghostscript bugzilla bug 692001,我将在此处引用:
评论 2 Ken Sharp 2011-02-28 11:44:42 PST
有两种方法可以做到这一点:
1) 找到名为 Arial 的正版 CIDFont,将其放在 gs/Resource/CIDFont 中,然后告诉 Ghostscript 使用磁盘文件以及内置文件系统。这可以通过 -I 命令行开关(例如 -I/gs/Resource)完成。
2) 使用 TrueType 字体作为替代。为此,您需要编辑 gs/Resource/Init/cidfmap 并添加字体 (Arial) 的条目,指定要使用的 TrueType 字体和其他一些参数。然后,您还必须告诉 Ghostscritp [sic] 使用指定的文件,再次使用上面的 -I 开关。
您还可以通过在 cidfmap 文件中指定名称来使用具有不同名称的现有 CIDfont 作为替代。
请参阅文档:/gs/doc/Use.htm
寻找“CID 字体”和“CID 字体替换”。
您将必须要apt-get install ghostscript-doc
得到file:///usr/share/doc/ghostscript-doc/Use.htm
Ken 所指的。
要更新的文件/var/lib/ghostscript/fonts/cidfmap
只需添加此行/WPMathA << /FileType /TrueType /Path (/usr/local/share/fonts/Wphv07na.ttf) /SubfontID 0 /CSI [(Identity) 0] >> ;
然后运行gs -o embedeed-font.pdf -sDEVICE=pdfwrite -dEmbedAllFonts=true -I/usr/local/share/fonts/Wphv06na.ttf no-embedded-font.pdf
请阅读file:///usr/share/doc/fontconfig/fontconfig-user.html
背景信息。它将告诉您请参阅 XDG 基本目录规范以了解更多详细信息,因为您将在那里找到 $XDG... 系列环境变量的默认值,就显示而言,这些变量在 14.04 上均未设置为任何值ps axwwe
。