我有一个简单的测试SVG,使用了两种已安装的字体(Helvetica-Narrow
和Helvetica-Bold
):
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100" height="50">
<text x="0" y="24" fill="blue" font-family="Helvetica-Bold" font-size="24px">Bold</text>
<text x="0" y="48" fill="blue" font-family="Helvetica-Narrow" font-size="24px">Narrow</text>
</svg>
如果我使用 ImageMagick(ImageMagick 7.0.2-0 Q16 x86_64 在 CentOS Linux 7 (Core) 上运行)将此文件转换为 PDF 文件,则结果不会使用已安装的字体。
例如:
$ convert -density 600 test.svg test.pdf
产生的结果:
看起来 ImageMagick 默认使用普通的 Helvetica
字重,这与输入 SVG 中指定的任何字体系列都不匹配。
接下来,我尝试指定输入 SVG 中指定的字体系列之一的路径。这是从运行 convert -list font
确定的 Helvetica-Bold
字体系列的路径。
$ convert -density 600 -font /net/module/sw/ghostscript-fonts/5.50-32/n019004l.pfb test-helvetica-mix.svg test-helvetica-mix-bold.pdf
第一个<text>
元素是正确的——它使用了Helvetica-Bold
。第二个<text>
元素是错误的——它也使用了Helvetica-Bold
,但实际上应该使用Helvetica-Narrow
。
尽管如此,这种方法让我更接近目标,因此我尝试添加输入SVG中使用的第二种字体的路径:
$ convert -density 600 -font /net/module/sw/ghostscript-fonts/5.50-32/n019004l.pfb -font /net/module/sw/ghostscript-fonts/5.50-32/n019043l.pfb test-helvetica-mix.svg test-helvetica-mix-both.pdf
ImageMagick使用Helvetica-Narrow
字体类型来渲染两个元素,这是不正确的,原因是相同的。
是否有一种方法可以说服ImageMagick使用输入SVG中<text>
元素中指定的正确字体类型?
font-family="Helvetica" font-weight="bold"
?但是我不确定是否有细体样式,也许你调用其中一个变量并仅修改粗体文本行就能得到正确的输出? - Stefan Hegnyidentify -list font | grep -i helvetica
并将结果粘贴。 - Mark Setchell