2016-11-15 20 views
0

想要在各种语言/脚本中呈现复杂字体(带有变音符号,加入的字形,从右到左的文本),输出是图像(而不是网页),理想情况下需要使用PHP。 PHP,Imagick和GD常用的图形库不支持复杂的字体,我相信因为它们附带的Freetype版本不支持它。在PHP中呈现复杂的字体/脚本?

我已经研究过可能支持的自定义建筑PHP,但它看起来非常复杂和凌乱。

有关更简单解决方案的任何想法?

感谢

回答

1

这个问题我也遇到过很多,imagettftext是最常用的GD函数在图像上写文本,但问题在于它不能渲染复杂的unicode字符,所以只要你的语言没有有复杂的角色,我们很好。

要呈现复杂的Unicode字符,您可能需要安装imagick安装加上pango安装在您的服务器上。大多数托管服务提供商没有安装pango,这意味着您需要为您的应用程序准备专用服务器。

大多数Linux发行版都带有pango预装,所以如果你设法在当地的Linux安装imagickmatchine下面的代码应该没有任何问题工作

/* 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(据我所知,我认为这是)你可以使用字符映射表,并从PHP代码回声它。您可能需要插入一个<meta>以使页面成为Unicode的某种变体(对于Unicode,我不太了解)。