[PHP-users 20645]Re: ImageTTFTextで
Ryo Takahashi
HZI03463 @ nifty.com
2004年 3月 3日 (水) 17:39:11 JST
高橋です。
> > > > 区 点 JIS SJIS EUC UTF-8 UTF-16 字
> > > > 01 61 215D 817C A1DD E28892 2212 −
> > > > 01 81 2171 8191 A1F1 C2A2 00A2 ¢
> > > > 01 82 2172 8192 A1F2 C2A3 00A3 £
> # 2バイトですね。ひっくり返っているから。
>
> えーーと、まずは、UTF-8でやっているのでしょうか?
はい、やっています。
実際のPHPのコードは以下です。
imagettftext($im, 20, 0, 40, 40, $black,
"./kochi-mincho-subst.ttf",
mb_convert_encoding("01 61 215D 817C A1DD E28892 2212 −", "UTF-8"));
imagettftext($im, 20, 0, 40, 80, $black,
"./kochi-mincho-subst.ttf",
mb_convert_encoding("01 81 2171 8191 A1F1 C2A2 00A2 ¢", "UTF-8"));
imagettftext($im, 20, 0, 40, 120, $black,
"./kochi-mincho-subst.ttf",
mb_convert_encoding("01 82 2172 8192 A1F2 C2A3 00A3 £", "UTF-8"));
> だから、C2A3を出力させても、たぶんそのコードに対する、
> フォントが割りつけられてないから、描画されないのだと思います。
> だから、ISO-8859-1のフォントを指定したら出ると思いますよ。
>
> 全角というか、JISの£なりなんらりを描画したいのなら、
> そのようにエンコードしてやらないといけないと思います。
PHPのmb_convert_encodingは、半角の記号のUTF-8のコード
に変換されているために、描画されないということなのですね。
実際、mb_convert_encodingでUTF-8されたコードを見たらやはり
2バイトになってしまいました。
他の言語のコンバータも試しているのですが、nkf,Jcode等も
同様に変換されているために、描画できないということがわかりました。
やはり、これらは、自前でエンコードしてやらないといけないということ
なんですね・・・・
中村様のメールを参考にさせて頂き、
環境を再構築したところ、正しく表示させることができました。
ただ、今度は全角ブランクが・になって表示されてしまいましたので、
これも半角ブランク2つ等に変換してあげないとダメなのかな?などと
考えております。
ちなみに、--enable-gd-jis-convはGDコンパイルするときに付く
-DJISX0208
だけなのでしょうか?
以上、よろしくお願いいたします。
--
Ryo Takahashi hzi03463 @ nifty.com
PHP-users メーリングリストの案内