PHP imagettfbbox и imagettftext дают разную ширину для одного и того же символа - PullRequest
0 голосов
/ 11 марта 2020

Я хотел бы знать ширину письма, прежде чем записать его в изображение. Я использую 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

...