2008/04/30(水)[php] imagettftext

imagettftextはUTF-8で文字列を渡す必要があります.そのため,mb_convert_encoding($str, 'UTF-8')などであらかじめエンコードしておく必要があります.

$str = 'ほげほげ';
$str = mb_convert_encoding($str, 'UTF-8');
imagettftext($image, 10.5, 0, 0, 0, $color['black'], $font, $str);

が,[JIS-mapped Japanese Font Support]がサポートされている時は,内部で勝手にエンコードを変換してくれるため,エンコードしておく必要はありません.というより,'UTF-8'でエンコード済みの文字列を渡すと化けます.なので,文字列が'UTF-8'の場合,意図的に'SJIS'に変換してから渡す必要があります.

$str = 'ほげほげ';
$str = mb_convert_encoding($str, 'SJIS');
imagettftext($image, 10.5, 0, 0, 0, $color['black'], $font, $str);

この[JIS-mapped Japanese Font Support]ですが,gd_info関数で組み込まれているが調べることができます.

$info = gd_info();
if($info['JIS-mapped Japanese Font Support']){
  // 組み込まれている
}

以下,検索用キーワード
[imagefttext] [imageffttext] [GD] [PHP] [UTF-8] [SJIS] [JIS-mapped Japanese Font Support] [gd_info] [文字化け]