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

  • Автор темы Автор темы Dimanjy
  • Дата начала Дата начала

Dimanjy

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

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

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

font2png.png


Например, буква 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

Вопрос:
Как мне правильно определить отступы от базовой точки символа шрифта, чтобы символы не перекрывались и не уезжали за пределы изображения?
Возможен ли такой вариант, что это ошибка в самом шрифте?

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

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

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

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

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

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