2006年1月9日の日記の2番目の記事へのコメント
■ザウルスでまだEmacs
いつまでやってんだかって感じですね・・・.
Emacsはlibncursesとちゃんとリンクしてなかったというか,--enable-widec付けててlibncurseswという名前になってたのにEmacs側がちゃんと検出してなかったのが問題でした.作りなおす途中で今度はlibncurseswの方で「__register_frame_infoが見付からない」とかどうとかいってtemacsが動かなくなったんですが,こっちはlibncursesw.so作るときに-Wl,-lcがついてたのが問題でした.これ外して作りなおしてとりあえずOK.ターミナルで上げて動かしても落ちなくはなりましたよ.
しかしあいかわらずXで上げたときに日本語がずれて全く使いものにならず(;´Д`).他のターミナルで上げたらどうなのかということでglib入れてgtk入れてmlterm入れてみてmltermの中で動かしてみた所やっぱりずれました.というかmltermのプロンプトに普通に日本語の文字列コピペしても同じ現象が起こります.つまり,Xの日本語回りの処理がおかしいってか?
ちなみにどんな風におかしくなるかっつーと,普通に文字列コピペするとこんな感じになりまして,カーソルでなぞってやるとこんな風に正しい姿になりますが.が,ウィンドウ重ねたりして再描画させるとまた元の状態に戻っちゃう(というかより悪化しちゃう)ぞという感じ.雰囲気的には1文字ずつ処理すると大丈夫だけど2文字まとめて処理した場合に2文字目がおかしくなるって感じです.実際日本語1文字ずつ連続して中クリックでペーストする分には再描画するまで化けません.わかる人なら瞬殺チックな気がしますがどこに原因があるんでしょかねー・・・.
[コメントを書く]
2006年1月9日の日記の2番目の記事へのコメント
・XChar2b配列にstrcpyとかで2byte文字列を流し込むと間を開けずに表示できる
・引数のXChar2b配列のメンバのbyte1とbyte2に個別に値を入れると1文字間隔になる
→ XChar2b構造体は,実際はunsigned char の byte1 と byte2 + 2byteのパディングになっている
→ 一方,Xサーバ側ではパディングが無い物としてデータを処理するので表示がおかしくなる?
という展開かこれは.
ここにずばり答えががが.2年半も前の話題だったのですね.