【问题标题】:FabricJs: IText adds extra paddingFabricJs:IText 添加了额外的填充
【发布时间】:2018-03-14 20:26:53
【问题描述】:

我正在使用 FabricJs 创建一些文本图层,但我遇到了对齐线问题。正在创建文本图层,并且在图层边界和实际文本之间有额外的空白空间。 我想要实现的是对齐线适合文本限制,但是,即使填充设置为 0(这是默认值),它们也会对齐,包括空格。

我尝试了一个 hacky 解决方案,在图层上添加 -7px 填充,但看起来仍然很奇怪。

var iText2 = new fabric.IText('Text with negative padding', {
    fontFamily: 'Arial',
    left: 100,
    top: 250,
    fill: "#000000",
    stroke: "",
    padding: -7,
    transparentCorners: true
});

JSFiddle:https://jsfiddle.net/grieverll/5gabg92k/

【问题讨论】:

    标签: canvas fabricjs


    【解决方案1】:

    我想出了一个老套的解决方案。我已经修改了 fabricJS 的 AligningGuidelines 函数,因此它对 iText 图层的工作方式不同。

                if (activeObject.typeL == 'TEXT' && !activeTransformed) {
                    activeObjectHeight -= (activeObjectHeight / 2.2);
                    activeTransformed = true;
                }
    
                if (canvasObjects[i].typeL == 'TEXT') {
                    objectHeight -= (objectHeight / 2.2);
    
                }
    
                if (canvasObjects[i].typeL !== 'TEXT' && activeObject.typeL !== 'TEXT') {
                    //Default function code
                }
    

    基本上,如果活动对象与另一个对象或文本层对齐,我会强制修改高度。

    【讨论】: