2006年8月4日の日記の1番目の記事へのコメント
■vs xdvi
64bit環境でxdvi(xdvik-22.40y1-j1.21)ビルドしたんですが,日本語がまったく出ず「・」になっちまいます.デバッグ出力とかさせると,きちんと設定ファイル読みにいってるのに何でだー.ググって出てくるケースはどれも無関係.ちゃんとvfontmapあるしフォントも置いてあるし.開けてるかどうかだってstraceで確認くらいしてるし・・・.何となくFreetype2が怪しそうだったので,バージョンを色々落としてやってみたんですが,状況はちっとも変わらず.うーん,超ハマリの予感.
あれこれ試している内に,実は32bit環境で新たにビルドし直した場合も,日本語が「・」になってしまうという衝撃の事実が発覚.過去にビルドしたときとまったく同じ手順でやっているのにこの差は何?同じFreetype2のライブラリにリンクしてるのに,出る場合と出ない場合があるってことは,Freetype2は関係ないのか.
ソースを見ながらデバッガを動かして追いかけてみた所,2byte文字をunsigned charな変数に突っこんで処理しようとして,上位byteが消えてコード変換に失敗している模様.何じゃこりゃ・・・(下記のNeedWidePrototypesは0).
#if NeedWidePrototypes typedef unsigned int wide_ubyte; typedef int wide_bool; #define WIDENINT (int) #else typedef ubyte wide_ubyte; typedef Boolean wide_bool; #define WIDENINT #endif
NeedWidePrototypesはどこで設定されてるのかと調べてみると,ありました.X11/Xfuncproto.hですか.なるほど.そして,これ関係で改めてググってみたら,ptetex3のChangeLogがでてきましたよ・・・.
3/27 追記: FC5 の <X11/Xfuncproto.> で NARROWPROTO が強制的に
define されるのが問題で、NeedWidePrototypes が 0 になってしまう。
他のディストロでは NeedWidePrototypes は 1 になっている。
うおー orz.ていうか,XOrg7.0なのが悪いのですか?64bit環境も7.0だしなぁ.そもそもNeedWidePrototypesが0だったら「typedef ubyte wide_ubyte;」なんてアリなのか?大体なんでXのヘッダ見て判定してんのかさっぱりわからん.というわけで,CPPFLAGSに「-DNeedWidePrototypes=1」を加えて作り直したら日本語出るようになりました.あーもう・・・.
2006年8月4日の日記の1番目の記事へのコメント
[コメントを書く]