如何在 fabric js 中减少文本对象中的选择区域填充

How to reduce selection area padding in text object in fabric js

在这里,我们在 fabric.js 中创建设计 tool.We 需要减少 fabric js 中文本对象中选择区域的填充。 Canvas 对象文本是 highlighted/selected,虽然它与原始大小一样大,但选定的框会延伸到正在工作的 area.This 处理此 issue.How 时用户不友好减少 canvas 对象中的选择区域填充大小。我们尝试在 "Canvas.set()" 函数中添加填充,但在工作区域中它不是 response/change。

objss.set({
 borderColor: 'green',
 cornerColor: 'purple',
 CornerSize: 33,
 transparentCorners: false,
 strokeWidth: 10,
padding:4
});

如有任何帮助,我们将不胜感激。

我制作了一个小的 jsfiddle,其中在 2 个简单的文本对象中,填充(以及因此选择的框)设置为 2 种不同的大小:http://jsfiddle.net/z4fty1de/ 这是你想知道的吗?如果没有,您可以在 jsfiddle 上创建一个小示例吗?

canvas.add(new fabric.Text('hello world1', { left: 100, top: 100, padding: 43 }));
canvas.add(new fabric.Text('hello world2', { left: 100, top: 250, padding: 0 }));

如果您选择的框没有正确设置文本,则意味着您的文本在 FONT 之前加载。请参阅 fabrics js 示例以使用字体。 http://fabricjs.com/loadfonts

如果您仍然遇到任何问题,请像这样清除您的字体缓存。

fabric.util.clearFabricFontCache(obj.fontFamily); // obj.fontFamily - is your font name

从 json

加载时的完整示例
this.canvas.getObjects().forEach((obj)=> {
  if(typeof obj.type !== 'undefined' && obj.type=="i-text"){
    this.canvas.setActiveObject(obj);
    fabric.util.clearFabricFontCache(obj.fontFamily);
    this.canvas.getActiveObject().set("fontFamily", obj.fontFamily);
    this.canvas.renderAll();
  }
});