PHP GD - различное смещение текста Mac против Linux - PullRequest
1 голос
/ 16 ноября 2010

Я пытаюсь сделать текст выровненным по центру поля, используя imagettftext () и стандартный шрифт Arial Bold.

Я разрабатываю код на Mac, и текст выравнивается по центру поля так, как я и ожидал. Но затем я развертываю свой код на соответствующем сервере Linux, и кажется, что источник, из которого выводится текст, отличается и кернинг выключен.

Я подтвердил, что на обеих машинах установлена ​​последняя и самая лучшая версия php и php gd.

См. Примеры изображений ниже:

Это то, что происходит на Mac alt text

Это то, что происходит в Linux alt text

В моем вопросе кто-то уже сталкивался с этим и знал об исправлении или обходном пути для этой проблемы без необходимости прибегать к простому смещению текста на пару пикселей на сервере Linux. Или я что-то упускаю, когда дело доходит до рендеринга текста с помощью вышеуказанной функции?

РЕДАКТИРОВАТЬ: я использую imagettfbbox (), чтобы получить размер текста, который я рендеринг, чтобы центрировать его должным образом (я также пробовал фиктивный рендеринг с использованием imagettftext (), чтобы получить ограничивающий прямоугольник, проблема, кажется происхождение imagettftext () отрисовывает тоже странно)

РЕДАКТИРОВАТЬ 2: Может быть, разница между реализациями в freetype? хотя я надеюсь, что они используют одну и ту же кодовую базу

Ответы [ 2 ]

0 голосов
/ 30 ноября 2010

Я никогда не решал эту проблему с кернингом, который все не так на сервере Linux. Поэтому я пошел и реализовал свое собственное решение кернинга, рисуя каждый символ отдельно с информацией о положении для требуемого расстояния между символами.

Если кто-нибудь когда-нибудь найдет правильное решение, которое будет фантастическим

0 голосов
/ 16 ноября 2010

Попробуйте использовать imagettfbbox:

http://www.php.net/manual/en/function.imagettfbbox.php

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

...