Ragtime_Kitty
@Ragtime_Kitty

Canvas: как задать font, а затем изменить размер?

Привет.
Я хочу нарисовать текст в канвасе, и задать ему ширину равную размеру текста.
var
  canvas = document.querySelector('canvas'),
  ctx = canvas.getContext("2d"),
  text = "Apples"

ctx.font = "small-caps 44px Arial";
canvas.width = ctx.measureText(text).width;
ctx.font = "small-caps 44px Arial";

ctx.textBaseline = 'middle';
ctx.fillText(text, 0, canvas.height / 2);

Шрифт приходится задавать два раза, ибо если убрать до установки ширины, то, measureText будет высчитываться по дефолтному шрифту. Если убрать после, то сам текст будет рисоваться с дефолтным шрифтом. Пробовала сохранять контекст до установки ширины и восстанавливать после, но безрезультатно.

Что я делаю не так?

  • Вопрос задан
  • 913 просмотров
Решения вопроса 1
lastuniverse
@lastuniverse
Всегда вокруг да около IT тем
Похоже что изменяя canvas.width, параметры канваса сбрасываются в дефолтные, что на мой взгляд является логичным поведением. Если это так, то Вам надо либо искать решение с единожды заданной, фиксированной шириной канваса либо делать так как вы сделали (выставлять шрифт 2 раза)

PS: как и говорил, изменения размера канваса сбрасывают часть его параметров в дефолтные
https://www.w3.org/html/wg/spec/the-canvas-element.html
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы