Получить ширину одного символа из шрифта ttf в php? - PullRequest
10 голосов
/ 19 марта 2010

Я создаю динамическое изображение, которое создает заголовки на моей странице, используя PHP-библиотеку GD. Проблема в том, что мне нужна система переноса строк. Это не проблема, но сначала мне нужно получить ширину (в пикселях) текущего символа.

Мне довольно любопытно, есть ли способ? Или мне нужно вручную указывать ширину каждой буквы?

Марти Лайн

Ответы [ 2 ]

13 голосов
/ 19 марта 2010

Вы должны будете сделать imagettfbbox () для каждого отдельного символа.

Не проверено, но должно работать:

$string = "Lorem Ipsum";
$size = 20;
$angle = 0;
$fontfile = "ARIAL.TTF";

$strlen = strlen($string);
for ($i = 0; $i < $strlen; $i++)
 {
    $dimensions = imagettfbbox($size, $angle, $fontfile, $string[$i]);
    echo "Width of ".$string[$i]." is ".$dimensions[2]."<br>";

 }
0 голосов
/ 19 марта 2014

Если вы печатаете результаты

$string = "Lorem Ipsum";
$size = 20;
$angle = 0;
$fontfile = "./fonts/arial.ttf";

$dimensions = imagettfbbox($size, $angle, $fontfile, $string); 
print_r($dimensions);

вы можете получить что-то вроде:

Array
(
    [0] => -1
    [1] => 5
    [2] => 152
    [3] => 5
    [4] => 152
    [5] => -20
    [6] => -1
    [7] => -20
)

где каждый индекс:

0   lower left corner, X position
1   lower left corner, Y position
2   lower right corner, X position
3   lower right corner, Y position
4   upper right corner, X position
5   upper right corner, Y position
6   upper left corner, X position
7   upper left corner, Y position

Так что ширина должна быть индексом 2 - индексом 0. Я не совсем получаю минус 1 для индекса 0.

Немного странно, что если вы суммируете сумму каждого символа в строке, результат будет 130, а не 153.

...