我尝试在一个节点服务器上使用来创建svgs。我的问题是画布的toSVG()函数不能正确识别字体,它根据错误的字体计算字符位置。
旧版本:
节点: 6.10
"canvas": "1.6.5"
"fabric": "1.7.14"AFAIK:较新的'1.7.*‘版本的织物,也不计算正确的位置。
它是为PNG工作,根据本教程(织物-介绍-第4部分)。
canvas.contextContainer.addFont(font);
canvas.contextTop.addFont(font);生成PNG或SVG:
canvas.toDataURL({
format: 'png',
});
canvas.toSVG();并且PNG输出的位置是正确的(参见示例),但是使用toSVG()不能正确地应用(自定义)字体。
在这个示例中,您可以看到定制字体没有正确显示(正确的字体用于显示,因为字体安装在我的当前系统上,而不是安装在创建SVG的节点服务器上!)
我的下一个选择是比较toDataURL(...)和IText toSVG()的源代码,但我不确定这在任何方面是否有帮助。
由于生成SVG的函数是在AWS中执行的,所以我无法在Linux操作系统(AFAIK)中安装字体。
您有什么想法吗,或者我错过了什么教程或bug报告?是否有类似contextTop或contextContainer的内容,可以添加自定义字体,从而将它们应用到toSVG()函数中?
我感谢各位提出的建议。
示例:解决这一问题
PS:在浏览器中,toSvg()知道字体,因为浏览器加载它们,因此定位是正确的!
也被问到:https://groups.google.com/forum/#!topic/fabricjs/mff7Pr4fkGY
发布于 2017-09-28 13:58:54
没有访问目标字体文件的权限,任何软件都无法正确定位字体符号。每种字体都有不同的度量和定位规则,它们在非常复杂的opentype表中进行描述,这些表是字体文件本身的一部分。
发布于 2017-10-10 17:19:41
到目前为止,包括字体都起作用了。看见
https://github.com/kangax/fabric.js/issues/4355
或例如在
https://github.com/willKo/BugTest/tree/includeFontsInDOM
不幸的是,定位仍然不正确。可能连接到节点-画布。
https://stackoverflow.com/questions/46468609
复制相似问题