想要在各种语言/脚本中呈现复杂字体(带有变音符号,加入的字形,从右到左的文本),输出是图像(而不是网页),理想情况下需要使用PHP。 PHP,Imagick和GD常用的图形库不支持复杂的字体,我相信因为它们附带的Freetype版本不支持它。在PHP中呈现复杂的字体/脚本?
我已经研究过可能支持的自定义建筑PHP,但它看起来非常复杂和凌乱。
有关更简单解决方案的任何想法?
感谢
想要在各种语言/脚本中呈现复杂字体(带有变音符号,加入的字形,从右到左的文本),输出是图像(而不是网页),理想情况下需要使用PHP。 PHP,Imagick和GD常用的图形库不支持复杂的字体,我相信因为它们附带的Freetype版本不支持它。在PHP中呈现复杂的字体/脚本?
我已经研究过可能支持的自定义建筑PHP,但它看起来非常复杂和凌乱。
有关更简单解决方案的任何想法?
感谢
这个问题我也遇到过很多,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' />";
让你找到的任何困难,我知道代码
我不能发表评论,但如果它是Unicode(据我所知,我认为这是)你可以使用字符映射表,并从PHP代码回声它。您可能需要插入一个<meta>
以使页面成为Unicode的某种变体(对于Unicode,我不太了解)。