我正尝试生成一些SVG,并允许我的网站用户将这些SVG下载为PNG文件。
在阅读此文后,我可以下载带有外部图像的PNG文件。
现在,我正在尝试使PNG文件中的字体正确。 这篇文章似乎对此有答案,所以我添加了:
<defs>
<style type="text/css">
@font-face {
font-family: Parisienne;
src: url('data:application/font-woff;charset=utf-8;base64,.....')
}
</style>
</defs>
其中.....
是base64编码的woff2字体。然后可以像这样在文本中使用:
<text x="55" y="55" stroke="red" font-family="Parisienne">Blah</text>
字体在浏览器中正确显示(我没有在我的操作系统上安装它),但它仍然没有包含在PNG中。
我需要在第一个链接使用的脚本中添加一些额外的处理吗?
谢谢。
--编辑--
有人要求提供完整示例,这里是:
<svg id="generated-svg" class="generated-svg" width="300px" height="500px"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns-xlink="http://www.w3.org/1999/xlink">
<defs>
<style type="text/css">
@font-face {
font-family: Parisienne;
src: url('data:application/font-woff;charset=utf-8;base64,.....')
}
</style>
</defs>
<rect width="300" height="500" fill="#222"/>
<text x="55" y="55" stroke="red" font-family="Parisienne" font-size="20px">Test text</text>
</svg>
由于base64编码后字体文件太大,我没有添加。但是您可以对任何喜欢的字体进行编码并替换...
。我使用的是巴黎女郎字体。
这是一个带有实际字体的工作jsfiddle: https://jsfiddle.net/z8539err/
在我的浏览器中,输出如下: