Я использую imagettftext()
для записи динамического текста на изображении, и я хочу, чтобы он соответствовал моей ширине изображения.
Как рассчитать размер шрифта по длине текста?
Вы можете вычислить ограничительную рамку текста TTF, прежде чем выводить ее с помощью функции imagettfbbox
. К сожалению, нет прямого способа масштабирования, чтобы он соответствовал ширине, поэтому вам придется делать это самостоятельно.
Один из способов сделать это – передать текст с размером шрифта по умолчанию, скажем, 20, в imagettfbbox
и извлечь из него ширину. Затем вы можете рассчитать, насколько меньше или больше текст должен соответствовать размеру, который вы хотите, вычисляя масштабный коэффициент:
scale = targetWidth / bboxWidth;
Затем нарисуйте текст с нужным размером:
fontSize = 20 * scale;
используя функцию imagettftext
. Шрифты не масштабируются на 100% отлично, но вы получите очень хорошее приближение.
См. Документацию imagettfbox
здесь .
while (itsTooBigAccordingToimagettftext() && $fontSize > 0) { $fontSize--; }