gpt4 book ai didi

pdf - 使用具有可靠字体选择的 ImageMagick 将 SVG 转换为 PDF?

转载 作者:行者123 更新时间:2023-12-04 14:03:20 26 4
gpt4 key购买 nike

我有一个简单的测试 SVG,它使用两种已安装的字体( Helvetica-NarrowHelvetica-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

产量:

default font applied

看起来 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

bold font specified

第一 <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

both font paths added

ImageMagick 使用 Helvetica-Narrow两个元素的字体,出于同样的原因,这是不正确的。

有没有办法说服 ImageMagick 使用 <text> 中指定的正确字体输入SVG中的元素?

最佳答案

看什么convert -list font

Font: Helvetica-Bold
family: Helvetica
style: Normal
stretch: Normal
weight: 700
glyphs: /usr/share/fonts/type1/gsfonts/n019004l.pfb
Font: Helvetica-Narrow
family: Helvetica Narrow
style: Normal
stretch: Condensed
weight: 400
glyphs: /usr/share/fonts/type1/gsfonts/n019043l.pfb
Helvetica-Bold 的字体系列和 Helvetica-NarrowHelveticaHelvetica Narrow分别。您可以通过在 <text> 上使用其他属性来实现预期效果(粗体/窄体)。喜欢:
<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" font-size="24px" font-weight="700">Bold</text>
<text x="0" y="48" fill="blue" font-family="Helvetica Narrow" font-size="24px" font-stretch="Condensed">Narrow</text>
</svg>

我研究过是否可以直接使用类型名称( Helvetica-BoldHelvetica-Narrow ),但无济于事,这是我能找到的唯一解决方案,ImageMagick 的 convert 尊重它工具。希望能帮助到你。

关于pdf - 使用具有可靠字体选择的 ImageMagick 将 SVG 转换为 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39153814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com