Если вы хотите визуализировать сложные шрифты (с диакритическими знаками, соединенными глифами, справа налево) на разных языках / скриптах, выводом является изображение (не веб-страница), в идеале нужно использовать PHP. Обычно встроенные графические библиотеки для PHP, Imagick и GD не поддерживают сложные шрифты, я полагаю, потому что версия Freetype, которую они поставляют, не поддерживает ее.
Я рассмотрел пользовательскую сборку PHP с возможной поддержкой, но она выглядит ужасно сложной и грязной.
Есть мысли о более простом решении для этого?
Спасибо
С этой проблемой я тоже много сталкивался, imagettftext
это наиболее часто используемая функция GD для написания текста на изображении, но проблема в том, что он не может отображать сложные символы Юникода, поэтому, пока ваш язык не содержит сложных символов, мы хороши.
Для рендеринга сложных символов Юникода вам может понадобиться imagick
установка плюс pango
установлен на вашем сервере. Большинство хостинг-провайдеров не имеют установленного pango, поэтому вам нужно иметь выделенный сервер, готовый для вашего приложения.
большинство дистрибутивов Linux поставляется с 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' />";
Дайте мне знать, если вы обнаружите какие-либо трудности с кодом
Я не могу комментировать, но если это Unicode (AFAIK, я думаю, что это так), вы можете использовать карту символов и вывести ее из кода PHP. Вам, вероятно, нужно вставить <meta>
сделать страницу определенным вариантом Unicode (извините, я не знаю слишком много о Unicode).