少し前に、テキストを取得して画像として返すスクリプトを作成し、問題なく動作しました。しかし、奇妙なバグがいつから発生し始めたのかはわかりません。左側に (フォント オタクには申し訳ありませんが) 「グリフ」がある文字は右側に押し出されて文字が開始されますが、メインの文字のためだけにスペースが残されます。
(ソース: esbasura.com )
期待される結果は次のとおりです:
(ソース: esbasura.com )
「悪い」ものは、明らかに、ここにある私のスクリプトによって生成されました。 %20dog.&fnt=1&size=23&bg=lightgrey そして、良いものは dafont によって生成されました: http://img.dafont.com/preview.php?text=The%20quick%20brown%20fox%20jumps%20over%20the% 20lazy%20dog.&ttf=bleeding_cowboys0&ext=1&size=23&psize=m&y=46
私はスクリプトで何も凝っていません。関連する部分は次のとおりです。
imagefilledrectangle($im, 0, 0, $width, $height, $$bg);
imagettftext($im, $size, 0, (-1*$textsize[6]), (-1*$textsize[7]), $$color, $font, $text);
// imagefttext($im, $size, 0, (-1*$textsize[6]), (-1*$textsize[7]), $$color, $font, $text); same results using imagefttext
imagecolortransparent($im, $$bg);
header("Cache-Control: public"); // HTTP/1.1
header("Content-type: image/png");
imagepng($im);
imagedestroy($im);
}
私が言ったように、以前は完璧に機能していたので、ちょっと驚いています。私のホストが私のマシンを変更したのかもしれません。
(ここに私の phpinfo があります: http://www.work4bandwidth.com/info.php ) 関連ビット:
gd
GD Support enabled
GD Version bundled (2.0.34 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.2.1
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled
編集:また、画像サイズの計算は、フォントの正しいレンダリングを考慮して行われているようです。次を使用して計算しています:
$textsize = imagettfbbox($size, 0, $font, $text);
$width = ($textsize[2] - $textsize[0]);
$height = ($textsize[3] - $textsize[5]);