尝试使用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
中我做错了什么?
答案 0 :(得分:0)
除了这部分
之外,代码都是正确的$font = '/Aller/' . $font;
它尝试绝对路径'/Aller/Aller_Rg.tff'而不是'Aller / Aller_Rg.tff'
将其更改为$font = 'Aller/' . $font;
应该有效。
另外,您应该检查错误日志,它应该提到Invalid font filename
如有疑问,请删除header('Content-Type: image/png');
进行调试。
答案 1 :(得分:0)
问题似乎是$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
目录的引用。