How to set the horizontal origin of transformation of Text using FabricJS?

FabricJSJavascriptHTML5 Canvas

Complete Python Prime Pack

9 Courses     2 eBooks

Artificial Intelligence & Machine Learning Prime Pack

6 Courses     1 eBooks

Java Prime Pack

9 Courses     2 eBooks

In this tutorial, we are going to learn how to set the horizontal origin of transformation of Text using FabricJS. We can display text on canvas by adding an instance of fabric.Text. Not only does it allow us to move, scale and change the dimensions of the text but it also provides additional functionality like text alignment, text decoration, line height which can be obtained by the properties textAlign, underline and lineHeight respectively. Similarly we can also set the horizontal origin of transformation by using the originX property.

Syntax

new fabric.Text(text: String , { originX : String }: Object)


Parameters

• text − This parameter accepts a String which is the text string that we want to display.

• options (optional) − This parameter is an Object which provides additional customizations to our text. Using this parameter colour, cursor, border width and a lot of other properties can be changed related to the object of which originX is a property.

Options Keys

• originX − This property accepts a String value which allows us to set the horizontal origin of transformation. The possible values are “left”, “right”, and “center”. Its default value is “left”.

Example 1

Default appearance of the Text object

Let’s see a code example to see how our text object looks when the originX property is not used. In this case, the horizontal origin of transformation will be left which is also the default.

<!DOCTYPE html>
<html>
<!-- Adding the Fabric JS Library-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/510/fabric.min.js"></script>
<body>
<h2>Default appearance of the Text object</h2>
<p>You can see that the horizontal origin of transformation is towards left</p>
<canvas id="canvas"></canvas>

<script>
// Initiate a canvas instance
var canvas = new fabric.Canvas("canvas");
canvas.setWidth(document.body.scrollWidth);
canvas.setHeight(250);

// Initiate a text object
var text = new fabric.Text("Add sample text here.", {
width: 300,
left: 60,
top: 70,
fill: "green",
});

// Add it to the canvas
</script>
</body>
</html>


Example 2

Passing the originX property as key with a value

In this example, we will see how assigning a value to the originX property changes the horizontal origin of transformation. We have used two text objects in this example to show the difference. In our first text object, since we have passed the value as “right”, the horizontal origin of transformation now lies towards the right. Same left property of 200 is applied to both text but still they are in different horizontal position because of change in the horizontal origin of transformation.

<!DOCTYPE html>
<html>
<!-- Adding the Fabric JS Library-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/510/fabric.min.js"></script>
<body>
<h2>Passing the originX property as key with a value</h2>
<p>You can see that the first text object(text1) has drifted further away while text2 maintains the default horizontal origin of transformation</p>
<canvas id="canvas"></canvas>

<script>
// Initiate a canvas instance
var canvas = new fabric.Canvas("canvas");
canvas.setWidth(document.body.scrollWidth);
canvas.setHeight(250);

// Initiate a text object
var text1 = new fabric.Text("Text 1", {
width: 300,
left: 200,
top: 70,
fill: "green",
originX: "right",
});

// Initiate another text object
var text2 = new fabric.Text("Text 2", {
width: 300,
left: 60,
top: 70,
fill: "red",
});

// Add it to the canvas