@olezhenka

Как подогнать размер шрифта в зависимости от количества символов и высоты контейнера?

Мне нужно следующее:

У меня есть определенная высота и ширина, в которой нужно разместить текст, и сделать это нужно так, чтобы текст занимал все данное пространство.

Например:
ширина и высота по 500, дана такая строка: АааАаА
мне надо получить размер шрифта такой, чтобы была занята вся ширина текстом.

вот такое говнецо у меня получилось:
function fitSizeFont(canvas, ctx, text)
{
	console.log("\n");
	let width = canvas.width * 0.8;
	let height = canvas.height * 0.5;
	console.log('ШИРИНА КАРТИНКИ ', width);
	console.log('ВЫСОТА КАРТИНКИ', height);
	console.log("\n");

	let fontSize = Math.round(canvas.height * 0.05);
	console.log('Размер шрифта ДО ', fontSize);

	ctx.font = `${fontSize}px "${fontFamily}"`

	let textWidth = ctx.measureText(text).width;
	console.log('Ширина текста относительно размера шрифта ДО ', textWidth);

	let countWrap = textWidth / width;
	console.log('Количество текущих переносов строк ', countWrap);

	let heightWrap = countWrap * fontSize;
	console.log('Высота обертки ', heightWrap);

	let ratio = height / heightWrap;
	console.log('Высота картинки / Высота обертки ', ratio);

	fontSize = Math.round(fontSize * ratio);
	console.log('Размер шрифта ПОСЛЕ ', fontSize);

	textWidth = ctx.measureText(text).width;
	console.log('Ширина текста относительно размера шрифта ПОСЛЕ ', textWidth);

	ctx.font = `${fontSize}px "${fontFamily}"`;

	console.log("\n");

	return fontSize;

}
  • Вопрос задан
  • 716 просмотров
Пригласить эксперта
Ответы на вопрос 1
twobomb
@twobomb
Возможно типа такого. Если текст в одну линию должен быть
Ответ написан
Ваш ответ на вопрос

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

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