Вот способ сопоставить преобразования шрифта Fabric.js с преобразованиями CSS: https://jsfiddle.net/mmalex/evpky3tn/
![convert Fabric.js transforms to CSS transforms](https://i.stack.imgur.com/jnkVI.png)
Решение заключается в сопоставлении преобразований текстов, не пытается настроить размер шрифта .
Шаг 1 - подготовить сцену, создать холст, сгруппировать текст с прямоугольником, позволить пользователю манипулировать этой группой, вращатьи масштабировать его.
var canvas = new fabric.Canvas(document.getElementById('c'));
var rect = new fabric.Rect({
width: 50,
height: 50,
left: 90,
top: 120,
fill: 'rgba(255,0,0,0.25)'
});
var text = new fabric.Text("123", {
left: rect.left,
top: rect.top,
fontSize: 15,
fontFamily: 'Verdana',
fill: 'black'
});
text.scaleToWidth(rect.width);
canvas.add(text);
var group = new fabric.Group([rect, text], {
originX: 'center',
originY: 'center',
angle: 25,
scaleY: 1.7
});
canvas.add(group);
canvas.renderAll();
Шаг 2 - подготовить стиль DIV для масштабирования
.scaled { // this style is applied to DIV element with text
...
font-size: 15px; // Fabric.js text is also 15px size
transform: scale(1, 1); // define initial transform
transition: all 0.25s linear; // let it animate
...
}
Шаг 3 - Оценить преобразования Fabric.jsи применить CSS к элементу DIV, например:
element.style {
transform: rotate(25deg) scale(1.74774, 2.97116);
}
Решение (он же обработчик кнопок) преобразует преобразование Fabric.js в преобразование CSS:
function matchCssTransform() {
let textScale = text.getTotalObjectScaling();
let pixelRatio = window.devicePixelRatio;
let styleStr = `rotate(${group.angle}deg) scale(${textScale.scaleX / pixelRatio}, ${textScale.scaleY / pixelRatio}) `;
document.getElementById("scaled").style.transform = styleStr;
}