Наряду с геометрическими фигурами и изображениями canvas позволяет выводить текст. Доля этого вначале надо установить у контекста canvas свойство font:
const canvas = document.getElementById("canvas");
const context = canvas.getContext("2d");
context.font = "22px Verdana";
Свойство font в качестве значения принимает определение шрифта. В данном случае это шрифт Verdana высотой 22 пикселя. В качестве шрифтов используются
стандартные шрифты.
Для вывода текста применяются два метода:
fillText(text, x, y): принимает три параметра: выводимый текст (параметр texte) и координаты точки, с которой выводится текст (параметры x и y).
strokeText(text, x, y): принимает аналогичные параметры.
Разница между двумя метода состоит в том, что fillText() использует цвет заполнения фигуры (из свойства fillStyle) и заполняет им символы текста.
Метод strokeText() использует цвет контура фигуры (задается через свойство strokeStyle) и отрисосывает контур символов.
Например, выведем некоторый текст с помощью метода fillText():
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>METANIT.COM</title>
</head>
<body>
<canvas id="canvas" width="400" height="250"></canvas>
<script>
const canvas = document.getElementById("canvas");
const context = canvas.getContext("2d");
context.font = "30px Verdana";
context.fillStyle = "navy"; // устанавливаем цвет текста
context.fillText("Hello METANIT.COM", 20, 50);
</script>
</body>
</html>
Метод fillText(text, x, y) принимает три параметра: выводимый текст и x и y координаты точки, с которой выводится текст.
Вывод аналогичного текста с помощью метода strokeText():
const canvas = document.getElementById("canvas");
const context = canvas.getContext("2d");
context.font = "30px Verdana";
context.strokeStyle = "navy"; // устанавливаем цвет текста
context.strokeText("Hello METANIT.COM", 20, 50);
Свойство textAlign позволяет выровнить текст относительно одной из сторон. Это свойство может принимать следующие значения:
left: текст начинается с указанной позиции
right: текст завершается до указанной позиции
center: текст располагается по центру относительно указанной позиции
start: значение по умолчанию, текст начинается с указанной позиции
end: текст завершается до указанной позиции
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);
Свойство textBaseline задает выравнивание текста по базовой линии. Оно может принимать следующие значения:
top
middle
bottom
alphabetic
hanging
ideographic
const canvas = document.getElementById("canvas");
const context = canvas.getContext("2d");
context.font = "22px Verdana";
context.textBaseline="top";
context.fillText("Top",10,100);
context.textBaseline="bottom";
context.fillText("Bottom",45,100);
context.textBaseline="middle";
context.fillText("Middle",130,100);
context.textBaseline="alphabetic";
context.fillText("Alphabetic",205,100);
context.textBaseline="hanging";
context.fillText("Hanging",320,100);
С помощью метода measureText() можно определить ширину текста на canvase:
const canvas = document.getElementById("canvas");
const context = canvas.getContext("2d");
context.font = "18px Verdana";
const text = context.measureText("Hello JavaScript");
console.log(text.width);