首页 > 解决方案 > FabricJS 自定义字体在节点画布上呈现不正确

问题描述

在 AWS Lambda 中让自定义字体与 FabricJS / node-canvas 一起使用时,我遇到了障碍。字体正在加载,但是当它们被渲染到画布上时,它们被完全破坏并出现在一行而不是多行上。字母间距(字距调整)也搞砸了,问题可能是因为这个......?

在浏览器中:

浏览器中的 FabricJS

服务器端(AWS Lambda + node-canvas + FabricJS)

带有 AWS Lambda 和节点画布的 Fabric JS 有没有人对这里发生的事情有最模糊的想法?我已经尝试更改 charSpacing 并且不起作用:(我知道可以在节点画布中呈现浏览器中可以看到的内容的精确副本,因为另一个服务正在使用 FabricJS 做同样的事情......

我将永远感激这方面的任何帮助!并提前感谢!!!

凯尔

基于另一个 SO 问题(字符宽度计算错误,某些字体可以自动缩进)我试过fabric.util.clearFabricFontCache(); 了,但这没有效果。

节点画布版本:2.6.1

FabricJS 版本:3.6.3

通过消除过程 - 我相信文本框字体/字体系列详细信息正在被缓存。我已经从加载中删除了自定义字体,我仍然在渲染自定义字体......我在 loadFromJSON 之后使用了 clearFabricFontCache() 并且它仍然显示自定义字体!

标签: javascriptaws-lambdafabricjscaironode-canvas

解决方案


我遇到了同样的问题。我遵循了这种方法:

  fabric.nodeCanvas.registerFont(__dirname + '/test/fixtures/Ubuntu-Regular.ttf', {
    family: 'Ubuntu', weight: 'regular', style: 'normal'
  });

一切正常。

参考:节点上 Fabric 中的自定义字体


推荐阅读