Я использую imagettftext()
для написания динамического текста на изображении и хочу, чтобы он соответствовал ширине моего изображения.
Как рассчитать размер шрифта по длине текста?
Я использую imagettftext()
для написания динамического текста на изображении и хочу, чтобы он соответствовал ширине моего изображения.
Как рассчитать размер шрифта по длине текста?
Вы можете рассчитать ограничивающую рамку текста TTF перед его выводом с помощью функции imagettfbbox
. К сожалению, нет прямого способа масштабирования по ширине, поэтому вам придется делать это самостоятельно.
Один из способов сделать это — передать текст с размером шрифта по умолчанию, скажем, 20, в imagettfbbox
и получить из него ширину. Затем вы можете рассчитать, насколько меньше или больше должен быть текст, чтобы соответствовать нужному размеру, вычислив коэффициент масштабирования:
scale = targetWidth / bboxWidth;
Затем нарисуйте текст нужного размера:
fontSize = 20 * scale;
используя функцию imagettftext
. Таким образом шрифты не масштабируются на 100% идеально, но вы получите очень хорошее приближение.
См. документацию imagettfbox
здесь.
itsTooBigAccordingToimagettfbbox()
, а не itsTooBigAccordingToimagettftext()
;-)
- person Capsule; 15.04.2015