[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 メーリングリストの案内