2012-03-23 106 views
4

我正在使用ImageMagick将SVG转换为PNG,并且所有工作都像魅力,直到我尝试使用@ font-face添加自定义字体,然后在SVG文件中。在蜡染这工作得很好,但现在在ImageMagick我只是不能得到它的工作。使用ImageMagick将SVG与自定义字体转换为PNG

我可以将字体更改为“convert -list font”中列出的字体,但我可能不得不经常更改字体,所以我想指向使用font-face或其他解决方案进行转换的字体文件没关系。

SVG文件还可以包含多个字体系列,而我的ImageMagick安装包含rsvg委托。

任何想法?谢谢!

+0

如果您无法使ImageMagick工作,请考虑使用'inkscape'进行转换,该命令也可以在命令行中调用。我不知道它的@ font-face支持是什么样的,但我应该有兴趣知道你是否研究它。 – halfer 2012-03-23 10:18:59

+0

我使用ImageMagick完成了我所有的SVG - > PNG,除了字体以外,它们都运行良好。我会尝试使用type.xml来安装它们,但是我会尽量不要...... – 2012-03-23 10:38:08

+0

尽管如此,Inkscape的工作效果要比部分工作的ImageMagick好。鉴于在CLI上启动转换有多容易,是否值得一试? – halfer 2012-03-23 10:40:30

回答

0

Inkscape可以从命令行运行。它具有丰富的转换选项(请参阅man inkscape),并且通过--verb和--select选项甚至可以执行您在GUI中执行的操作。正如halfer指出的那样,它在转换中也相当快速。但请注意,它的渲染器专为交互式显示而设计,而不是rsvg所做的单通静态显示,因此在某些情况下rsvg可能会更快。此外,在Web服务器上安装Inkscape有时可能会出现问题,原因很简单,这是由于此应用程序需要大量的依赖关系。

当我们向Inkscape添加这些命令行选项时,部分原因是rsvg缺少对很多SVG功能,包括字体。自那时以来,rsvg得到了改进,我认为它现在应该支持通过font-face属性替换字体。最常见的问题是在rsvg不看的地方安装字体(也许专有字体在发行版中保存在不同的路径中)

祝你好运,让我们知道你是否把它整理出来。

1

尝试rsvg-convert(命令行程序)由librsvg2包提供。

我在亚马逊Linux上有与ImageMagick相同的问题(但不是在我的Ubuntu桌面上)。 我认为ImageMagick的SVG处理相当差。它无法正确识别“display:none”样式属性。

+0

我有一个从Illustrator导出的SVG,并且字体没有通过rsvg-convert正确呈现,直到我通过fontType = SVGFontType.OUTLINEFONT(通过JS API;也可能存在于GUI中)从Illustrator导出SVG。 – tremby 2015-05-22 01:15:19