【发布时间】:2017-01-02 09:20:59
【问题描述】:
我有一个简单的测试 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(在 CentOS Linux 7 (Core) 上运行的 ImageMagick 7.0.2-0 Q16 x86_64)将其转换为 PDF 文件,则结果不会使用已安装的字体。
例如:
$ convert -density 600 test.svg test.pdf
产量:
看起来 ImageMagick 默认使用 Helvetica 的正常粗细,这与输入 SVG 中指定的任一字体系列都不匹配。
接下来,我尝试指定输入 SVG 中指定的字体之一的路径。这是Helvetica-Bold 字体的路径,由运行convert -list font 确定。
$ 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> 元素中指定的正确字体?
【问题讨论】:
-
原始 SVG 是否在您的机器上正确呈现? IE。使用正确的字体?
-
ImageMagick 是一个万能转换器。如果它与一种特定格式存在问题,这不会是意料之外的。您是否尝试过专门研究 SVG 的软件?例如阿帕奇蜡染? xmlgraphics.apache.org/batik/tools/rasterizer.html
-
SVG 是正确的。虽然我很欣赏其他工具的建议,但我应该注意,我正在寻找指定问题的解决方案,即使 ImageMagick 与安装的字体正常工作所需的具体内容。 (最好在此线程之外讨论其他工具。)
-
嗯,css中没有单独的方法来指定窄/粗体吗?喜欢
font-family="Helvetica" font-weight="bold"?但不确定那里的 Narrow 样式,但是当您只修改带有粗体文本的行时,您的调用变体之一可能会给出正确的输出? -
请尝试运行
identify -list font | grep -i helvetica并粘贴结果。
标签: pdf svg types fonts imagemagick