想要在各种语言/脚本中渲染复杂字体(带变音符号,连接字形,从右到左文本),输出是图像(不是网页),理想情况下需要使用PHP。 PHP,Imagick和GD的常用图形库不支持复杂字体,我相信因为它们附带的Freetype版本并不支持它。
我已经开始研究自定义构建PHP并获得可能的支持,但它看起来非常复杂和混乱。
对此更简单的解决方案的想法?
由于
答案 0 :(得分:1)
这也是我遇到的一个问题,imagettftext
是最常用的GD函数在图像上写文字,但问题是它无法渲染复杂的unicode字符,所以只要你的语言没有复杂的字符,我们很好。
要渲染复杂的unicode字符,您可能需要在服务器上安装imagick
安装加pango
。大多数托管服务提供商没有安装pango,这意味着您需要为您的应用程序准备好专用服务器。
大多数Linux发行版都预先安装了pango
,所以如果你设法在本地linux imagick
上安装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' />";
如果您发现代码有任何困难,请告诉我
答案 1 :(得分:0)
我无法发表评论,但如果它是Unicode(我认为是AFAIK),您可以使用字符映射并从PHP代码中回显它。您可能需要插入<meta>
以使页面成为Unicode的某种变体(抱歉,我对Unicode不太了解)。