使用Python中的自定义字体将SVG转换为PNG
我正在使用基于Cairo/RSVG的解决方案将SVG光栅化为PNG。这已经在StackOverflow中描述过了。 但是,此解决方案似乎不适用于自定义字体 我找到了 我尝试通过XLink从外部SVG中包含它们,如示例中所述。我已经尝试将字体直接嵌入到同一个SVG文件中。由于失败了,我尝试了CSS Web字体语法。使用Cairo进行渲染时,这三种方法都不起作用(在Ubuntu默认的GNOME查看器中也不起作用) 我试过ImageMagick,结果和Cairo完全一样 另一方面,在所有3种字体嵌入方法中,字体在WebKit中都可以很好地呈现,可以使用Google Chrome,也可以使用Google Chrome。然而,如果可能的话,我希望避免在服务器上使用QT WebKit,因为它的设置非常繁琐(包括xvfb等),我担心这可能不会带来非常高效和稳定的结果 有没有其他方法可以从Python将SVG呈现为PNG 您可以尝试使用,也许这会给您带来更好的效果:使用Python中的自定义字体将SVG转换为PNG,python,svg,png,librsvg,Python,Svg,Png,Librsvg,我正在使用基于Cairo/RSVG的解决方案将SVG光栅化为PNG。这已经在StackOverflow中描述过了。 但是,此解决方案似乎不适用于自定义字体 我找到了 我尝试通过XLink从外部SVG中包含它们,如示例中所述。我已经尝试将字体直接嵌入到同一个SVG文件中。由于失败了,我尝试了CSS Web字体语法。使用Cairo进行渲染时,这三种方法都不起作用(在Ubuntu默认的GNOME查看器中也不起作用) 我试过ImageMagick,结果和Cairo完全一样 另一方面,在所有3种字体嵌入方
inkscape inputfile.svg --export-png=exportfile.png
这里描述了从python运行此功能:我花了一周时间研究这个问题,并得出结论,使用自定义字体处理SVG的服务器端渲染/光栅化的最佳方法是在服务器上安装这些字体。我尝试的工具(rsvg、imagemagick、phantomjs、qtwebkit…)无法处理web字体和svg字体 谷歌有(而且还在增长)可以在服务器上下载和使用的功能
- 下载OTF或TTF字体
- 在服务器上安装它们并刷新字体缓存
- 用SVG文档中的字体族名称替换外部字体的CSS定义
如果您还需要在网页中使用这些相同的字体,您可以直接链接到Google CDN以获取WOFF文件,以节省您自己的服务器时间和网络带宽。对于Imagemagick,我仍然难以使用安装在服务器上并可用于某些操作的字体进行svg栅格化,但是使用-convert from.svg to.png时失败。。。。它似乎把每一种文本都变成了arial。我认为这可能是ImageMagick的一个缺陷,或者.svg中需要的某种格式。使用RSVG需要检查以下几点:
- 字体源文件是否在系统或用户字体路径中
- SVG中的字体名称不会被引用,即使它们包含空格。librsvg将假定引号是字体名称的一部分,它将找不到源文件