Along with geometric shapes and images, canvas allows you to display text. Part of this is to first set the canvas context’s font property:
var canvas = document.getElementById("myCanvas"), context = canvas.getContext("2d"); context.font = "22px Verdana";
The property fontaccepts a font definition as a value. In this case, the Verdana font is 22 pixels high. Standard fonts are used as fonts.
Next, we can output some text using the fillText() method :
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Canvas in HTML5</title> </head> <body> <canvas id="myCanvas" width="300" height="200" style="background-color:#eee; border:1px solid #ccc;"> Your browser does not support Canvas </canvas> </body> </html>
The method fillText(text, x, y)takes three parameters: the text to be displayed and the x and y coordinates of the point from which the text is displayed.
To draw text, you can also use the strokeText() method , which creates a border for the characters to be drawn:
var canvas = document.getElementById("myCanvas"), context = canvas.getContext("2d"); context.font = "30px Verdana"; context.strokeStyle = "red"; context.strokeText("Hello HTML5!", 20, 50);
TextAlign property
The textAlign property allows you to align text with respect to one of the sides. This property can take the following values:
- left: text starts at specified position
- right: text ends at specified position
- center: text is centered relative to the specified position
- start: default value, text starts at specified position
- end: text ends at specified position
var canvas = document.getElementById("myCanvas"), context = canvas.getContext("2d"); context.font = "22px Verdana"; context.textAlign = "right"; context.fillText("Right Text", 120, 30); context.textAlign = "left"; context.fillText("Left Text", 120, 60); context.textAlign = "center"; context.fillText("Center Text", 120, 90); context.textAlign = "start"; context.fillText("Start Text", 120, 120); context.textAlign = "end"; context.fillText("End Text", 120, 150);
lineWidth property
The lineWidth property sets the width of the text line:
var canvas = document.getElementById("myCanvas"), context = canvas.getContext("2d"); context.font = "30px Verdana"; context.strokeStyle = "red"; context.lineWidth = 2; context.strokeText("Hello HTML5!", 20, 50);
textBaseline property
The textBaseline property sets the text alignment to the baseline. It can take the following values:
- top
- middle
- bottom
- alphabetic
- hanging
- ideographic
var canvas = document.getElementById("myCanvas"), context = canvas.getContext("2d"); context.font = "18px Verdana"; context.textBaseline="top"; context.fillText("Top",15,100); context.textBaseline="bottom"; context.fillText("Bottom",60,100); context.textBaseline="middle"; context.fillText("Middle",130,100); context.textBaseline="alphabetic"; context.fillText("Alphabetic",200,100); context.textBaseline="hanging"; context.fillText("Hanging",300,100);
Defining Text Width
Using the measureText() method, you can determine the width of the text on the canvas:
var canvas = document.getElementById("myCanvas"), context = canvas.getContext("2d"); context.font = "18px Verdana"; var text = context.measureText("Hello HTML5"); alert(text.width);