Я хотел бы знать ширину письма, прежде чем записать его в изображение. Я использую imagettfbbox
для этого. Однако ширина, которую я получаю от этой функции, кажется, не равна ширине, которую я получаю после рисования буквы. Шрифт, который я использую для рисования: FreeSans Medium Style
Код, который я написал для проверки, выглядит следующим образом:
/* Create the temp image. */
$tempImage = imagecreatetruecolor(100, 100);
$fontSize = 24;
$font = __DIR__ . '/Fonts/FreeSans.ttf';
$text = 'e';
/* Get letter size before writing. */
$letterBoxSize = imagettfbbox($fontSize, 0, $font, $text);
$letterBoxWidth = max([$letterBoxSize[2], $letterBoxSize[4]]) - min([$letterBoxSize[0], $letterBoxSize[6]]);
/* Write the letter at (50, 50). */
$bbox = imagettftext($tempImage, $fontSize, 0, 50, 50, 0, $font, $text);
$bboxWidth = max([$bbox[2], $bbox[4]]) - min([$bbox[0], $bbox[6]]);
echo 'Width of letter from imagettfbbox: ' . PHP_EOL;
var_dump($letterBoxWidth);
echo 'Width of letter from imagettftext: ' . PHP_EOL;
var_dump($bboxWidth);
В результате получается:
Width of letter from imagettfbbox:
int(19)
Width of letter from imagettftext:
int(20)
Как получить одинаковую ширину до и после написания письма?
Моя PHP версия - 7.4.3, а версия моей библиотеки GD согласно gd_info()
- 2.2. 5