Кроссплатформенное решение imagettftext(): Invalid font filename на Windows

У меня возникли проблемы при использовании ф-ции PHP imagettftext() в ОС Windows.

PHP упорно не хотел видеть шрифты, которые лежат в папке font каталога со скриптом(дизассемблирование и отладка подтвердили утверждение на php.net, что переменная GDFONTPATH игнорируется(повторю, что речь идет о Windows - в юниксе подобного не возникает)).

Попытка установки переменной окружения GDFONTPATH(как это советовали на php.net) не привела к успеху.

Решение пришло такое:

<?php
$dir=opendir('./font/');//directory with fonts
if($dir)
while($f=readdir($dir)){
if(preg_match('/.ttf$/',$f)){
$font=explode('.',$f);
define($font[0],realpath('./font/'.$f));
}
}
if($dir)
closedir($dir);
?>

Директория "font" содержит два файла: arial.ttf и arialbd.ttf

После выполнения этого кода будут определены константы arial и arialbd которые уже можно использовать в остальных частях скрипта:

imagettftext($img,12,0,25,28,$color,arialbd,"some text");

Предполагается, что решение является кроссплатформенным.


Автор решения M0r1arty из Вологды.



Опубликовал admin
14 Фев, Четверг 2008г.



Программирование для чайников.