Spec-Zone.ru › Web APIs

Рисование текста

  • Предыдущая
  • Следующая

После ознакомления с тем, как применять стили и цвета в предыдущей главе, мы теперь рассмотрим, как нарисовать текст на холсте.

Рисование текста

Контекст рендеринга холста предоставляет два метода для рендеринга текста:

fillText(text, x, y [, maxWidth])

Заполняет заданный текст в заданной позиции (x, y). При необходимости с максимальной шириной для рисования.

strokeText(text, x, y [, maxWidth])

Выводит контур заданного текста в заданной позиции (x, y). При необходимости с максимальной шириной для рисования.

Пример использования fillText

Текст заполняется с использованием текущего fillStyle.

function draw() {
  const ctx = document.getElementById("canvas").getContext("2d");
  ctx.font = "48px serif";
  ctx.fillText("Hello world", 10, 50);
}

Пример использования strokeText

Текст выводится контуром с использованием текущего strokeStyle.

function draw() {
  const ctx = document.getElementById("canvas").getContext("2d");
  ctx.font = "48px serif";
  ctx.strokeText("Hello world", 10, 50);
}

Стиль текста

В примерах выше мы уже используем свойство font для увеличения размера текста по сравнению с его значением по умолчанию. Существуют дополнительные свойства, которые позволяют настроить отображение текста на холсте:

font = value

Текущий стиль текста, используемый при отрисовке. Эта строка использует тот же синтаксис, что и свойство CSS font. По умолчанию шрифт — 10px sans-serif.

textAlign = value

Выравнивание текста. Возможные значения: start, end, left, right или center. Значение по умолчанию — start.

textBaseline = value

Выравнивание базовой линии. Возможные значения: top, hanging, middle, alphabetic, ideographic, bottom. Значение по умолчанию — alphabetic.

direction = value

Направление. Возможные значения: ltr, rtl, inherit. Значение по умолчанию — inherit.

Эти свойства вам могут быть знакомы, если вы работали с CSS ранее.

На следующей диаграмме из WHATWG показаны различные базовые линии, поддерживаемые свойством textBaseline. The top of the em square is roughly at the top of the glyphs in a font, the hanging baseline is where some glyphs like आ are anchored, the middle is half-way between the top of the em square and the bottom of the em square, the alphabetic baseline is where characters like Á, ÿ, f, and Ω are anchored, the ideographic baseline is where glyphs like 私 and 達 are anchored, and the bottom of the em square is roughly at the bottom of the glyphs in a font. The top and bottom of the bounding box can be far from these baselines, due to glyphs extending far outside the em square.

Пример textBaseline

Измените код ниже, и изменения будут отображаться в реальном времени на холсте:

Расширенные измерения текста

В случае необходимости получения более подробной информации о тексте, следующий метод позволяет его измерить.

measureText()

Возвращает объект TextMetrics, содержащий ширину, в пикселях, которую займет указанный текст при отрисовке в текущем стиле текста.

Следующий фрагмент кода показывает, как можно измерить текст и получить его ширину.

function draw() {
  const ctx = document.getElementById("canvas").getContext("2d");
  const text = ctx.measureText("foo"); // TextMetrics object
  text.width; // 16;
}

Вопросы доступности

Элемент <canvas> — это просто растровое изображение и не содержит информации об отрисованных объектах. Написанный на холсте текст может вызывать проблемы с читаемостью для пользователей, которые используют увеличение экрана. Пиксели внутри элемента холста не масштабируются и могут становиться размытыми при увеличении. Это связано с тем, что они представляют собой не вектор, а набор пикселей в виде букв. При увеличении пиксели становятся больше.

Содержимое холста недоступно для инструментов доступности, как это есть в семантическом HTML. В общем, следует избегать использования холста на доступном веб-сайте или приложении. В качестве альтернативы используйте элементы HTML или SVG вместо холста.

  • Предыдущая
  • Следующая

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Drawing_text

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API