如果文本框中的文本太大,如何修复文本框的大小并动态减小fontSize?是的,存在类似的问题here,但它只适用于一行文本。
我想实现的正是这个目标:(示例来自imgflip meme editor)
我尝试了以下方法:
let text = new fabric.Textbox(box.text, {
top: box.top,
left: box.left,
width: box.width,
});
if (text.width > box.width) {
text.fontSize *= box.width / (text.width + 1);
text.width = box.width;
}
if (text.height > box.height) {
text.fontSize *= box.height / (text.height + 1);
text.height = box.height;
}
canvas.add(text);
这样,fontSize会按照文本框的宽度或高度变化的比例减小。但这有时会导致文本变得非常小,因为文本不会得到很好的换行。fontSize和换行需要找到一个最佳值。有什么想法吗?谢谢!
2条答案
按热度按时间5vf7fwbs1#
我真的找到了一个解决办法。以防有人有同样的问题。
根据宽度调整字体大小可以很好地使用我的原始代码:
这只会调整非常长的单词的字体大小,因为文本框会自动换行。但是这种换行会导致高度在我的原始代码中收缩太多。为了考虑换行,我最终逐渐减小了字体大小,并通过每次调用
canvas.renderAll()
来重新计算文本换行:这可能是低效的,但它服务于我的用例。
blpfk2vs2#
文字换行和字体大小随便笺宽度和高度而改变。双击时激活编辑模式。