[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: w3m-filter and w3mmee/w3m-m17n



うわあ,遅かったか….返事を書いている間に [emacs-w3m:05525] されちゃっ
たんですね.検討が大変だ.

>> On Thu, 17 Jul 2003 18:54:26 +0900 (JST)
>> 「白井」== shirai@rdmg.mgcs.mei.co.jp (Hideyuki SHIRAI (白井秀行)) said as follows:

白井> tis620 にこだわっています

また,おもろいもんにこだわってはりますね.

白井> そこで、質問

白井> (3) (2) に関連して、w3m-content-type-alist の function な filter 
白井> ってなにをするんですか? 現在の w3m-filter() を廃止するのかしら?

いいえ,2つはまったく異なる抽象化層です.w3m-filter() は,URI に基づい
て決まるようなコンテンツ書き換えルールをサポートする層であり,それに対
して,w3m-prepare-content() は content type によって決まるようなコンテ
ンツ書き換えルールをサポートする層です.

;; w3m-content-type-alist で指定された filter は,実際には 
;; w3m-prepare-content() で解釈実行されています.

w3m-prepare-content() の応用例としては,[emacs-w3m:05327] でも述べてい
ますが,以下のような例を考えています.

    a) text/*
       視覚障害者向けの書き換えなど
    b) Excel / Word / PowerPoint ファイル
       -> xlhtml, wvHtml, ppthtml など
    c) PostScript / PDF ファイル
       -> ps2text, pdf2text など?
    d) tar/lzh などの書庫ファイル
       -> 変換するか,tar-mode などを起動するか.
    e) 画像
       Emacs20/Mule の場合 = convert による bitmap 形式への変換
       Emacs21/XEmacs の場合 = convert による表示可能形式への変換
       画像の大きさの調節

これらの書き換えは,URI に基づいて決まるわけではありませんから,URI に
基づいて駆動されている w3m-filter() とはあまり相性が良くないのです.も
ちろん,広告削除などの目的には w3m-filter() の枠組みは以前と変わらず有
効ですから,そのまま残すつもりです.

白井> (1) w3m-safe-decode-buffer() が w3m-create-page() 内部と、そこか
白井> ら呼ばれる w3m-create-text-page() とで 2回実行されているのだけど、
白井> なにか意味はありますか? w3m-create-page() の方だけでよいですか?

勿論,意味はあります.なぜならば,w3m-filter() で書き換えを行うために
は,特に text/* なコンテンツを対象として書き換えを行う場合には,事前に
コンテンツの文字コードが決定されている必要があります.言い換えれば,
w3m-filter() による書き換えは,octet 列を対象とする書き換えではなく,
文字列を対象とする書き換えと見なすのが適当だろうと言うことです.

更に,w3m-filter() は,URI に基づいて決定される書き換えルールを適用す
る抽象化層という位置づけですから,場合によっては application/* なコン
テンツを text/* なコンテンツで置き換えたりするような応用も考えられます.
したがって,w3m-filter() を呼び出した後でも,念のために 
w3m-safe-decode-buffer() を呼び出す必要があると考えています.

白井> (2) w3m-create-page() で w3m-safe-decode-buffer() する前に、
白井> w3m-prepare-content() を呼んでいるけど、この順番を逆にしちゃ
白井> だめ?

これは,[emacs-w3m:05518] で言われている通り,type を決定するためには
順番を逆にはできません.

というわけで,これらの抽象化は w3m-filter() を正式版に統合するために不
可欠のものと考えていますので,

白井> w3mmee 使っていて buffer が x-moe-internal になっていたらどうす
白井> るの?

この場合は,w3m-filter() や w3m-prepare-content() を止めるように何らか
の対策を施す必要があるでしょうね.

-- 
土屋 雅稔 ( TSUCHIYA Masatoshi )