TTF-шрифт и размер символа?

Dimanjy

Новичок
1. Есть рукописный шрифт Pushkin.ttf.
2. Есть функция для определения размера коробки символа imagettfbbox

Пытаюсь вывести строку посимвольно таким образом, чтобы буквы не перекрывались. Т.е. если каждую букву обвести ее прямоугольником, то в этот прямоугольник не будут попадать соседние буквы.

Проблемы возникают с буквами, имеющими длинные закорючки. Пример на картинке.



Например, буква G. Ее нижний хвостик выезжает за пределы картинки. Ниже привожу таблицу результатов работы функции imagettfbbox для каждого символа строки. Видно, что координата X левого нижнего угла у всех букв равна -1, хотя для буквы G она на вид гораздо левее!

PHP:
// 'G' lb=-1;30 rb=50;30 rt=50;-28  lt=-1;-28
// 'A' lb=-1;-1 rb=40;-1 rt=40;-29  lt=-1;-29
// 'g' lb=-1;21 rb=34;21 rt=34;-11  lt=-1;-11
// 'a' lb=-1;1 rb=24;1 rt=24;-10  lt=-1;-10
// '!' lb=-1;1 rb=29;1 rt=29;-32  lt=-1;-32
Вопрос:
Как мне правильно определить отступы от базовой точки символа шрифта, чтобы символы не перекрывались и не уезжали за пределы изображения?
Возможен ли такой вариант, что это ошибка в самом шрифте?

Вот сам шрифт: ссылка
 

WMix

герр M:)ller
Партнер клуба
прикидываю как тебе не повезло... я даже могу представить что запрятанно в imagettfbbox...
Дональд Кнут рассказывал про клей и блоки, описывая ТеХ..

видать размер символа не самое наилучшее решение
 

craz

Нестандартное звание
можно процент ко всему этому прибавить, потестить на 10 размерах и забить...Потому что я юзкейс вот к примеру даже не представляю данной задачи...
 

craz

Нестандартное звание
пикчи? или капчи?

потому как если пикчи, то я так понял там проблем не возникает)
 

Dimanjy

Новичок
можно процент ко всему этому прибавить, потестить на 10 размерах и забить...
Такой вариант не подходит.
Требуется точное отображение символов до пикселя с произвольным (загружаемым) шрифтом на произвольном размере.

Обнаружил, что такие ошибки возникают на множестве шрифтов с закорючками.

Есть кто-нибудь, у кого imagettfbbox выдает что-то отличное от -1 для первого X-а?
 

Dimanjy

Новичок
Подозреваю, что задача простыми средствами PHP не решается.
Нужно самому обрабатывать TTF-файл. Может оно и к лучшему :)
 
Сверху