環境
Centos 8
PHP 7.4
GD 2.3.0
FreeType 2.10.2
テスト
ImageTTFText($img_base, 100, 0, 16, 134, ImageColorAllocate($img_base, 0xff, 0xff, 0xff), ‘../data/YUMIN.ttf’,”あ”);
→ “Warning: imagettftext(): any2eucjp(): invalid code in input string” エラー
ImageTTFText($img_base, 100, 0, 16, 134, ImageColorAllocate($img_base, 0xff, 0xff, 0xff), ‘../data/YUMIN.ttf’,mb_convert_encoding(“あ”, “euc-jp”, “utf-8”));
→ 画像に正しく日本語が表示される
ImageTTFText($img_base, 100, 0, 20, 130, ImageColorAllocate($img_base, 0x11, 0x11, 0x11), ‘../data/nBatang.TTF’,mb_convert_encoding(“대한민국”, “euc-jp”, “utf-8”));
→韓国語を、韓国語フォントで表示しようとしたが、画像に文字化けて表示される
ImageTTFText($img_base, 100, 0, 20, 130, ImageColorAllocate($img_base, 0x11, 0x11, 0x11), ‘../data/nBatang.TTF’,mb_convert_encoding(“대한민국”, “euc-kr”, “utf-8”));
→euc-krにしたが、やはり文字化ける
あきらめて
yum install ImageMagick
でimagemagickをインストールして、
convert -font ../data/nBatang.TTF -pointsize 30 -annotate +20+30 “대한 국” original.jpg result.jpg
で、うまく表示された。
system()やexec()から呼び出して回避することにした。
結論
GDのFreeTypeで日本語とアルファベット以外は文字化ける。
imagemagickが回避策。