SVG文本到PNG无法使用php和imagemagick渲染字体

时间:2014-07-24 10:14:27

标签: php svg imagemagick png

当我尝试使用PHP imagemagick将此svg转换为png时,它只会以默认字体呈现文本。

有什么方法可以在转换为png时使用相同的Google字体来呈现文字吗?

任何帮助都会受到极大的欢迎。提前谢谢。

带有Sickness字体的SVG文件没问题,但是当使用imagemagick渲染失败时。 我的svg代码是:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type='text/css' href='svg-stylesheet.css' ?>
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" width="250" height="100" version="1.1"><text xml:space="preserve" style="font-size:30px;text-shadow: 1px 1px 1px #CCCCCC;-moz-text-shadow:1px 1px 1px #CCCCCC;-webkit-text-shadow:1px 1px 1px #CCCCCC; fill:#999; font-family:Sickness" x="30" y="70" class="test">
<tspan>Sample TEXT</tspan>
</text>
</svg>

我的PHP代码是:

exec('convert -verbose 4.svg -transparent white -quality 100 -alpha on 4.png');

我的svg文件在这里

http://speedy.sh/PfWXD/4.svg

svg结果

enter image description here

使用imagemagick

获得png结果

enter image description here

1 个答案:

答案 0 :(得分:2)

对于配置的type.xml之外的自定义字体,您需要更新$MAGICK_FONT_PATH环境以包含字体所在的路径。或者只是将字体文件复制到您执行的工作目录中。然后,只需定义要使用的Imagemagick的-font(如果没有自动拾取)。

// Example with environment path
exec('MAGICK_FONT_PATH=/path/to/sickness convert -font Sickness 4.svg -transparent white -quality 100 -alpha on 4.png');
// Example with ttf in same directory
exec('convert -font Sickness.ttf 4.svg -transparent white -quality 100 -alpha on 4.png');

其他提示&amp;提示here

SVG to PNG with custom font