织物 js 字体权重不起作用

fabric js fontweight not working

本文关键字:不起作用 权重 字体 js 织物      更新时间:2023-09-26

我正在使用此代码在canvas中添加textbox fabric js

var text = 'Type Text Here';
var textSample = new fabric.Textbox(text, {
    left: getCardLeft() + 100,
    top: getCardTop() + 10,
    width: 200,
    height: 20,
    fontFamily: 'Helvetica',
    fill: getColorPickerForegroundColor(),
    fontWeight: '',
    fontSize: parseInt('25'),
    originX: 'center',
    hasRotatingPoint: true,
    centerTransform: true,
});
canvas.add(textSample);

这成功地将textbox添加到canvas中。现在,如果我尝试使用此命令使其bold

canvas.getActiveObject().set("fontWeight", "bold");
canvas.renderAll();

工作,但是当尝试将其更改为正常时,

canvas.getActiveObject().set("fontWeight", "");
canvas.getActiveObject().set("fontWeight", "100");
canvas.getActiveObject().set("fontWeight", "normal");
canvas.renderAll();

不工作。

我不知道问题出在哪里。我在这里做错了什么吗?

它的行为很奇怪你可以在这里看到它。

首先访问这里然后访问这里

我只是从这里拿fabric.js并替换为我的,然后全部工作。

以下代码对我有用。我看到在你身边我可能会失败的两点:

canvas.renderAll();

需要正确重新渲染。还有:

canvas.setActiveObject(textSample);

对我来说是必要的。因为否则:

canvas.getActiveObject();

未定义。现在是一个完整的工作代码示例:

var canvas = new fabric.Canvas('c', { selection: false });
var text = 'Type Text Here';
var textSample = new fabric.Textbox(text, {
  left: 300,
  top: 50,
  width: 200,
  height: 20,
  fontFamily: 'Helvetica',
  fill: "#fac",
  fontWeight: '100',
  fontSize: parseInt('25'),
  originX: 'center',
  hasRotatingPoint: true,
  centerTransform: true,
});
canvas.add(textSample);
canvas.setActiveObject(textSample);
canvas.getActiveObject().set("fontWeight", "bold");
canvas.renderAll();
canvas.getActiveObject().set("fontWeight", "100");
canvas.renderAll();

希望有帮助。