0

尝试使用 GD 库显示字体。那里确实有图像,只是没有任何显示。

PHP:

header('Content-Type: image/png');

$font = $_GET['font'];

// Create the image
$image = imagecreatetruecolor(400, 30);

// Create some colors
$white = imagecolorallocate($image, 255, 255, 255);
$grey = imagecolorallocate($image, 128, 128, 128);
$black = imagecolorallocate($image, 0, 0, 0);
imagefilledrectangle($image, 0, 0, 399, 29, $white);

// The text to draw
$text = 'The Quick Brown Fox Jumps over the Lazy Dog';
$font = '/Aller/' . $font;


// Add the text
imagettftext($image, 20, 0, 10, 20, $black, $font, $text);

imagepng($image);

HTML:

<img src="fontgen.php?font=Aller_Rg.ttf" alt="" />

字体位于 fonts/Aller/Aller_Rg.tff

我究竟做错了什么?

4

2 回答 2

1

问题似乎是$font变量。从文档中:

根据 PHP 使用的 GD 库的版本,当 fontfile 不以前导 / 开头时,.ttf 将附加到文件名,并且库将尝试沿着库定义的字体路径搜索该文件名。

当使用低于 2.0.18 的 GD 库版本时,使用空格字符而不是分号作为不同字体文件的“路径分隔符”。无意使用此功能将导致警告消息:警告:无法找到/打开字体。对于这些受影响的版本,唯一的解决方案是将字体移动到不包含空格的路径。

在许多情况下,字体与使用它的脚本位于同一目录中,以下技巧将缓解任何包含问题。

<?php
// Set the enviroment variable for GD
putenv('GDFONTPATH=' . realpath('.'));

// Name the font to be used (note the lack of the .ttf extension)
$font = 'SomeFont';
?>

您还说字体位于fonts/Aller/目录中。然而,在您的脚本中,没有对fonts目录的引用。

于 2013-06-08T04:05:19.497 回答
0

除了这部分,代码都是正确的

$font = '/Aller/' . $font;

它尝试绝对路径 '/Aller/Aller_Rg.tff' 而不是 'Aller/Aller_Rg.tff'

将其更改为$font = 'Aller/' . $font;应该可以。

你也应该检查错误日志,它应该提到Invalid font filename

如有疑问,请删除header('Content-Type: image/png');以进行调试。

于 2013-06-08T04:04:07.007 回答