Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中呈现复杂字体/脚本?_Php_Fonts_Webfonts - Fatal编程技术网

在PHP中呈现复杂字体/脚本?

在PHP中呈现复杂字体/脚本?,php,fonts,webfonts,Php,Fonts,Webfonts,要以各种语言/脚本呈现复杂字体(带变音符号、连接字形、从右到左文本),输出是图像(不是网页),理想情况下需要使用PHP。PHP、Imagick和GD的常用内置图形库不支持复杂字体,我相信这是因为它们附带的Freetype版本不支持复杂字体 我已经研究过使用可能的支持定制PHP,但它看起来非常复杂和混乱 你有没有想过更简单的解决办法 谢谢我不能评论,但是如果是Unicode(我想是AFAIK),您可以使用字符映射并从PHP代码中回显它。您可能需要插入一个,以使页面成为Unicode的某种变体(抱歉

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

我已经研究过使用可能的支持定制PHP,但它看起来非常复杂和混乱

你有没有想过更简单的解决办法


谢谢

我不能评论,但是如果是Unicode(我想是AFAIK),您可以使用字符映射并从PHP代码中回显它。您可能需要插入一个
,以使页面成为Unicode的某种变体(抱歉,我对Unicode了解不多)。

我无法评论,但如果它是Unicode(我想是),您可以使用字符映射并从PHP代码中回显它。您可能需要插入一个
,以使页面成为Unicode的某种变体(抱歉,我对Unicode了解不多)。

这也是我经常遇到的问题,
imagettftext
是在图像上写入文本最常用的GD函数,但问题是它无法呈现复杂的Unicode字符,因此,只要你的语言没有复杂的字符,我们是好的

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

大多数linux发行版都预装了
pango
,因此,如果您设法在本地linux
matchine
上安装
imagick
,以下代码应该可以正常工作

/* 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字符串*/
$text=”වෙබ් මත ඕනෑම තැනක";
$im=new\Imagick();
$background=new\ImagickPixel('none');
$im->setBackgroundColor($background);
$im->setPointSize(30);
$im->setGravity(\Imagick::GRAVITY\u EAST);
$im->newPseudoImage(300200,“pango:”.$text);
$im->setImageFormat(“png”);
$image=imagecreatefromstring($im->getImageBlob());
//仅用于打印到浏览器
ob_start();
imagepng($image);
$base64=base64_编码(ob_get_clean());
$url=“数据:图像/png;base64,$base64”;
回声“;

如果您发现代码有任何困难,请告诉我。这也是我经常遇到的问题,
imagettftext
是在图像上写入文本最常用的GD函数,但问题是它无法呈现复杂的unicode字符,所以只要您的语言没有复杂字符,我们就可以使用

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

大多数linux发行版都预装了
pango
,因此,如果您设法在本地linux
matchine
上安装
imagick
,以下代码应该可以正常工作

/* 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字符串*/
$text=”වෙබ් මත ඕනෑම තැනක";
$im=new\Imagick();
$background=new\ImagickPixel('none');
$im->setBackgroundColor($background);
$im->setPointSize(30);
$im->setGravity(\Imagick::GRAVITY\u EAST);
$im->newPseudoImage(300200,“pango:”.$text);
$im->setImageFormat(“png”);
$image=imagecreatefromstring($im->getImageBlob());
//仅用于打印到浏览器
ob_start();
imagepng($image);
$base64=base64_编码(ob_get_clean());
$url=“数据:图像/png;base64,$base64”;
回声“;
如果您发现代码有任何问题,请告诉我