From: Tomohiro K. <tk...@ri...> - 2002-01-03 07:44:18
|
久保田です。 mlterm と w3m の組み合わせで、不具合が見付かりました。どちらに原因が あるか、よくわかりません。 w3m 0.2.1-inu-1.4a2-0915 というのを使っているのですが、 LANG=ja_JP.eucJP 以外で「o」を押してカスタマイズモードに入り、次いで 「B」などを押して抜けると、ASCII 以外の文字が化けることに気付きました。 これは、罫線文字を表示するためのコードが原因のように思われます。と いうのは、画面サイズを小さくして、罫線 (26行目) を表示しないように すれば、不具合は起こらないからです。 LANG=ja_JP.eucJP のときには、罫線は正しく表示され、かつ、カスタマイズ 画面から戻ったときの表示も正しく行われます。それ以外のときは、罫線は 表示されず、カスタマイズ画面から戻ったときの表示が化けます。 これは、mlterm のエンコーディングに関係しません。EUC-JP のときにも 起こります。が、Rxvt では w3m のロケールに関わらず罫線は正しく表示され、 非 ASCII 文字も正しく表示されます。 PS. Jyotirmoy Saikia <jm...@cs...> さんに mlterm 開発への 勧誘メールを出しました。荒木さんにも Cc: しましたが、もし興味が ありましたら、荒木さんから直接メールを出してみるのもいいかも しれません。(要望なども伝えてみては?) --- 久保田智広 Tomohiro KUBOTA <ku...@de...> http://www.debian.or.jp/~kubota/ "Introduction to I18N" http://www.debian.org/doc/manuals/intro-i18n/ |
From: <hs...@mt...> - 2002-01-03 13:05:34
|
坂本です。 > 久保田です。 > mlterm と w3m の組み合わせで、不具合が見付かりました。どちらに原因が > あるか、よくわかりません。 > w3m 0.2.1-inu-1.4a2-0915 というのを使っているのですが、 > LANG=ja_JP.eucJP 以外で「o」を押してカスタマイズモードに入り、次いで > 「B」などを押して抜けると、ASCII 以外の文字が化けることに気付きました。 > これは、罫線文字を表示するためのコードが原因のように思われます。と > いうのは、画面サイズを小さくして、罫線 (26行目) を表示しないように > すれば、不具合は起こらないからです。 w3m のコンパイルオプションを教えてくださいませんか。 # 現象から、#define LANG JA かつ #undef KANJI_SYMBOLS だと # 思いますので、それを前提に話を進めます。 w3m (などのコンソールアプリケーション)は termcap から eA, as, ae, ac を得て罫線(alternative (graphic) charset)を表示しています。 eA, as, ae には良く使われているパターンとして、 * eA = ESC ) 0, as = ^N, ae = ^O eA で G1 に alternative charset を指示しておいて、 as で GL に呼び出して使い、ae で G0 を GL に呼び戻す。 * eA = 無し, as = ESC ( 0, ae = ESC ( B as で G0 に alternative charset を指示しておいて、 GL で使い、ae で G0 への指示を ASCII に戻す。 があります。 # 手元では xterm-r6 が前者、XFree86 xterm は後者です。 化ける場合は、おそらく前者の方だと思います。 理由は、GR に呼び出されている G1 の文字集合(EUC-JP なら JIS X 0208) を eA で変えているのに、ae で戻していないからです。 ESC ) 0 を ISO 2022 の拡張として処理する端末なら、化けるべくして 化けるわけです。 # 本来の終端文字は 0x40(@)〜0x7E(~)の範囲なので、終端文字としての # 0x30(0) は ISO 2022 には従っていない。 端末の仕様と termcap のミスマッチの結果ですので、 mlterm 側では自前の termcap を用意して後者の設定に固定するのが、 本質的な解決策と思います。 ESC ) 0 での G1 への指示は GL に呼び出した時にのみ有効とする 次善策もありますが、ISO 2022 パーサに特殊処理が入るので、 嫌なのですよね > 荒木さん # 指示されている charset を初期値に戻すコントロールシーケンスが # termcap にあればいいのですが、なさそうですし。 # w3m 側では諦めています。w3m-m17n でも、あがいたけれど諦めました。 # そうそう、こういう化けた後 mlterm だと ISO 2022 を理解していないと # 自分では復帰できないので、kterm のメニュー(Ctrl+中ボタン)にある # Do Full Reset 相当の機能が以前から欲しかったのでした。 # mlconfig に加えられませんか? # ついでに、mlcofing で Apply, Cannel だけでなく、 # OK (現行の Apply), Apply (mlconfig を終了しない), Cannel # として欲しいです。 # 実は、mlconfig は configuration の結果を save できないので、 # mlcontrol なのかなと思っていたり(^^; ----------------------------------- 坂本 浩則 <hs...@mt...> http://www2u.biglobe.ne.jp/~hsaka/ |
From: Araki K. <j00...@ip...> - 2002-01-06 01:55:03
|
荒木です:-) とりあえず、ISCII の注文がくるまえに、たまっている問題の処理を... Subject: Re: [Mlterm-dev-ja] mlterm and w3m From: hs...@mt... (Hironori Sakamoto) Message-ID: <200...@mt...> Date: Thu, 3 Jan 2002 22:05:29 +0900 (JST) > eA, as, ae には良く使われているパターンとして、 > * eA = ESC ) 0, as = ^N, ae = ^O > eA で G1 に alternative charset を指示しておいて、 > as で GL に呼び出して使い、ae で G0 を GL に呼び戻す。 > * eA = 無し, as = ESC ( 0, ae = ESC ( B > as で G0 に alternative charset を指示しておいて、 > GL で使い、ae で G0 への指示を ASCII に戻す。 > があります。 > # 手元では xterm-r6 が前者、XFree86 xterm は後者です。 > 化ける場合は、おそらく前者の方だと思います。 > 理由は、GR に呼び出されている G1 の文字集合(EUC-JP なら JIS X 0208) > を eA で変えているのに、ae で戻していないからです。 > ESC ) 0 を ISO 2022 の拡張として処理する端末なら、化けるべくして > 化けるわけです。 わたし(NetBSD 1.5Y) 環境では、xterm-r6 の termcap も、 ae=\E(B as=\E(0 となっています。 > # 本来の終端文字は 0x40(@)〜0x7E(~)の範囲なので、終端文字としての > # 0x30(0) は ISO 2022 には従っていない。 http://www.ecma.ch/ecma1/STAND/ECMA-035.HTM の、ESMA-035.PDF というファイルには、 13.1 Structure of escape sequences ... Final bytes shall be any of the 79 positions of columns 03 to 07 of the code table excluding position 0 7/15; とありますし、 http://www.euc.jp/i18n/charcode.ja.html などにも、終端文字は、0x30〜0x7E とありましたので、0x30 も、ISO2022 には、 従っているのだと思っていました。 XCOMPOUND TEXT でも、 ESC / % 1 ESC / % 2 というのを使用していますし(非準拠なのかもしれませんが) > 端末の仕様と termcap のミスマッチの結果ですので、 > mlterm 側では自前の termcap を用意して後者の設定に固定するのが、 > 本質的な解決策と思います。 これは、さすがに.... > ESC ) 0 での G1 への指示は GL に呼び出した時にのみ有効とする > 次善策もありますが、ISO 2022 パーサに特殊処理が入るので、 > 嫌なのですよね > 荒木さん はい、できれば勘弁していただいたほうがありがたいです_o_ > # そうそう、こういう化けた後 mlterm だと ISO 2022 を理解していないと > # 自分では復帰できないので、kterm のメニュー(Ctrl+中ボタン)にある > # Do Full Reset 相当の機能が以前から欲しかったのでした。 > # mlconfig に加えられませんか? 了解しました。 たしかに、~/.mlterm/key の INIT_PARSER って、わかる人にしかわからない機 能でしょうね。 # FULL_RESET という名前に変えるか、なくしてしまったほうがよいかもしれま # せんね。 > # ついでに、mlcofing で Apply, Cannel だけでなく、 > # OK (現行の Apply), Apply (mlconfig を終了しない), Cannel > # として欲しいです。 これは、すぐに実装するのは、ちょっと難しいです。 mlconfig は、mlterm 本体と async で動かしていますが、現状では SIGCHILD シグナルを mlconfig からの command をうけとるタイミングに利用しております。 # そもそも、当座のしのぎという位置付けで、設定画面を別プロセスに分けた名残 # なんですが。 mlconfig を終了せずに apply するとなりますと、pty / X Window の file descriptor といっしょに mlconfig の file descriptor も select()してまちうける必要が ありますが、現状ではそこを考慮した実装にはなっておりませんので、TODO には いれておきますが、当面はこのままということで了解ください。 では -- kiken j00...@ip... |