2016-11-15 2 views
0

Ищете сложные шрифты (с диакритикой, объединенными глифами, справа налево) на разных языках/сценариях, вывод - это изображение (а не веб-страница), в идеале нужно использовать PHP. Обычно встроенные графические библиотеки для PHP, Imagick и GD не поддерживают сложные шрифты, я считаю, потому что версия Freetype, с которой они идут, не поддерживает ее.Рендеринг сложных шрифтов/скриптов в PHP?

Я изучил пользовательское здание PHP с возможной поддержкой, но он выглядит ужасно сложным и беспорядочным.

Любые мысли о более легком решении для этого?

Благодаря

ответ

1

Это проблема, с которой я столкнулся слишком много: imagettftext - самая используемая функция GD для записи текста на изображение, но проблема заключается в том, что она не может отображать сложные символы юникода, так что, пока ваш язык не у нас есть сложные персонажи, мы хороши.

Для отображения сложных символов Юникода вам может понадобиться установка imagick плюс pango, установленный на вашем сервере. У большинства хостинг-провайдеров нет установленного pango, поэтому вы должны иметь выделенный сервер для вашего приложения.

большинство дистрибутивов поставляется с pango предварительно установлены таким образом, если вам удалось установить imagick на локальном Linux matchine следующий код должен работать без каких-либо проблем

/* complex unicode string */ 
$text = "වෙබ් මත ඕනෑම තැනක"; 

$im = new \Imagick(); 
$background = new \ImagickPixel('none'); 
$im->setBackgroundColor($background); 
$im->setPointSize(30); 
$im->setGravity(\Imagick::GRAVITY_EAST); 
$im->newPseudoImage(300, 200, "pango:" . $text); 
$im->setImageFormat("png"); 
$image = imagecreatefromstring($im->getImageBlob()); 

//just for print out to the browser 
ob_start(); 
imagepng($image); 
$base64 = base64_encode(ob_get_clean()); 
$url = "data:image/png;base64,$base64"; 
echo "<img src='$url' />"; 

Позвольте мне знать, если вы обнаружите какие-либо трудности с код

0

Я не могу комментировать, но если это Unicode (AFAIK я думаю, что это), вы можете использовать карту символов и эхо его из кода PHP. Вам, вероятно, потребуется вставить <meta>, чтобы сделать страницу определенным вариантом Unicode (извините, я не слишком много знаю о Unicode).

Смежные вопросы