У меня есть следующий код для печати текста на изображении. Я также добавляю отладочную рамку вокруг текста. Тем не менее, я заметил, что текст слева находится за пределами поля, который PHP дает мне с imagettfbbox
.Как учесть шрифт swash с PHP и GD
Это выглядит как вопрос с перекосом шрифта. Стоит ли так объяснять это? Могу ли я определить расстояние между началом перекоса и фактическим положением imagettfbbox
?
Я не думаю, что это проблема с шрифтом, поскольку я пробовал его с помощью нескольких шрифтов в стиле скрипта, и результаты были похожи.
<?php
$font = 'scriptin.ttf';
$text = 'Ipsum';
$size = 30;
$image = imagecreatetruecolor(200, 200);
$fontColour = imagecolorallocate($image, hexdec('11'), hexdec('11'), hexdec('11'));
$bgColour = imagecolorallocate($image, hexdec('CC'), hexdec('CC'), hexdec('CC'));
imagefilledrectangle($image, 0, 0, 200, 200, $bgColour);
$dimensions = imagettfbbox($size, 0, $font, $text);
imagefilledrectangle(
$image,
$dimensions[0] + 40,
$dimensions[7] + 50,
$dimensions[2] + 40,
$dimensions[3] + 50,
imagecolorallocate($image, mt_rand(1, 180), mt_rand(1, 180), mt_rand(1, 180))
);
imagettftext(
$image,
$size,
0,
40,
50,
$fontColour,
$font,
$text
);
header('Content-Type: image/png');
imagepng($image);
код и шрифт доступен здесь: https://github.com/AydinHassan/image-swash-example
Если Вы направляете ВХост в хранилище, вы можете просто нажать swash.php
похоже, что вы правильно не поместили коробку: количество пробелов, «пропавших» слева, похоже на объем пространства «слишком много» справа. –
Вот что я подумал, но если да, я не вижу, где я делаю это неправильно. Я использую информацию, которую «imagettfbbox» дает мне. –
http://php.net/manual/en/function.imagettfbbox.php#97211 предполагает, что это известная, если неудобная, ошибка. –