Моя цель - нарисовать горизонтально центрированный m
. Поэтому я рассчитываю ширину буквы, вычитаю это значение из общей ширины и, наконец, делим на 2. Результатом должно быть расстояние слева (или одинаково справа).Не может быть расположен в горизонтальном положении 'm' с GD2
Однако «m» всегда неуместен. Я также заметил, что некоторые шрифты не могут вызвать проблемное поведение. Обратите внимание, что мой скрипт корректно работает для всех других латинских символов.
Arial:
Bitstream Vera Sans:
<?php
$totalWidth = 100;
$totalHeight = 100;
$font = 'Arial.ttf';
$img = imagecreatetruecolor($totalWidth, $totalHeight);
$red = imagecolorallocate($img, 255, 0, 0);
$fontSize = 100;
$bbox = imagettfbbox($fontSize, 0, $font, 'm');
$width = max($bbox[2], $bbox[4]) - max($bbox[0], $bbox[6]);
$centeredX = ($totalWidth - $width)/2;
imagettftext($img, 100, 0, $centeredX, 100, $red, $font, 'm');
imagepng($img, 'testcase.png');
imagedestroy($img);
Отличный ответ! Большое спасибо! Мне также удалось центрировать его по вертикали: '$ centeredY = (($ totalHeight - $ bbox ['height'])/2);' и '$ centeredY + $ bbox ['top']' как параметр Y для 'imagettftext() '. – ComFreek