2011-05-03 86 views
8

瞭解此問題之前已在 PHP update kerning problem with imagettftext() and imagefttext() functions 但已解決;GD和PHP 5.3中的字距問題

PHP5.3似乎有字距問題打印文本:

在以下實施例看的 'x'(字體:Ubuntu的M.ttf):

PHP5.2,ubuntu的(好)

enter image description here

PHP5.3.2,Ubuntu的(糟糕的是,x被養肥)

PHP5.3.2,MAMP OSX(可怕的)

enter image description here

是否有任何解決這個?

任何有5.3.6安裝的人都可以試試這個嗎?

問候, //牛逼

+2

這可能不是由於PHP版本,但是捆綁的GD的版本的FreeType庫。做一個'phpinfo()',查看版本號並在這裏發佈 – 2011-05-03 22:00:21

+0

@Pekka:這真的取決於。 PHP通常隨附自己定製的GD庫,但並非總是如此。例如,Debian不使用捆綁版本,而是使用全局libgd。 – 2011-05-04 09:17:03

+1

@Sander這應該不是關於GD,而是關於Freetype(但可能,你所說的也適用於此 - 它有時會捆綁在一起,有時不會)。無論如何,如果我沒有弄錯,'phpinfo()'應該總是有正確的數字,捆綁與否 – 2011-05-04 09:19:46

回答

1

我試圖下載的字體(Ubuntu的字體家族的0.71.2版本)後,用我家的機器複製的中間圖像。 Arch Linux,x86_64,PHP 5.3.6,GD 2.0.34(捆綁),Suhosin補丁,FreeType 2.4.4。我更喜歡e和x。

圖像生成:

<?php 
$img = imagecreatetruecolor(158, 72); 
imagesavealpha($img, true); 

$bg = imagecolorallocatealpha($img, 0, 0, 0, 127); 
$black = imagecolorallocate($img, 0, 0, 0); 
imagefill($img, 0, 0, $bg); 

$text = "testar text"; // - was attempt at no aa, like example 
imagettftext($img, 24, 0, 0, 36, -($black), 'Ubuntu-M', $text); 
$text = "med text"; 
imagefttext($img, 24, 0, 12, 72, $black, 'Ubuntu-M', $text); 

imagepng($img, 'test.png'); 
imagedestroy($img); 
?> 

輸出:

output of attempt to duplicate second image in question