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

w3mmee with utf-8 (was: w3m-m17n support)



From: Akihiro Arisawa <ari@mbf.sphere.ne.jp> さん曰く
Subject: [emacs-w3m:01191] Re: w3m-m17n support
Message-ID: <m31yopaean.wl@ari.mbf.sphere.ne.jp>
Date: Wed, 13 Jun 2001 00:49:52 +0900

>>>>> In [emacs-w3m : No.01188] 
>>>>>	ari@mbf.sphere.ne.jp (Akihiro Arisawa) wrote:

ari> この patch をあてた w3m-m17n を使って、文字コードの変換を Emacs で行わ
ari> ず、w3m-m17n にまかせるようにしてみました。

以前から私も添付の設定を使っていろいろな w3m を いろいろな
coding system で使って遊んでいました。

## そろえるものが多々あるのですが、物好きな方はやってみてくださ
## いませ。"w3mmee" と "w3mmee-nomoe" は "Which language do you
## prefer?" で 3 か 1 かの違いです。
## また、w3m-m17n-jp-2 は今回の有沢さんの設定をいただきました。:-)

で、以下本題(ほとんど須藤さん宛てメール ^^;)なのですが、
選択肢で w3mmee-utf8 を選択して、

(setenv "W3MLANG" "ja_JP.UTF-8")
(setq w3m-output-coding-system 'utf-8)

となった状態で、emacs-w3m + w3mmee を動かすと、

w3mmee>    Do you want to use multibyte character (Kanji or Hanji) for table border, item, etc.
w3mmee>に「y」以外の答をした場合のことはほとんど想定せずにパッチは書かれています。

としているのにも関わらず、例えば w3m の manual.html をみると以下
の様に

---------------- manual.html with w3mmee-utf8 ----------------
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

文書の表示内容

HTML文書を表示しているときには,次のような表示になります.
                           ┌───────────────┬────────────┬──────────┐
                           │               │カラー表示時│白黒表示時│
                           ├───────────────┼────────────┼──────────┤
                           │リンク         │青色        │下線      │
                           ├───────────────┼────────────┼──────────┤
                           │インライン画像 │緑色        │反転表示  │
                           ├───────────────┼────────────┼──────────┤
                           │FORMの入力部分 │赤色        │反転表示  │
                           └───────────────┴────────────┴──────────┘
---------------- manual.html with w3mmee-utf8 ----------------

と罫線関係の multibyte char の char-width(?) の計算が 2倍狂って
いるような感じになります。

lib/w3mmee/w3mconfig.utf-8 で

hr_rule =
rule +,+,+,+,+,|,+,+,+,-,+,
rule_bold ,+,+,+,+,|,+,+,+,-,+,

とすると

---------------- manual.html with w3mmee-utf8 ----------------
================================================================================================

文書の表示内容

HTML文書を表示しているときには,次のような表示になります.
                           +---------------+------------+----------+
                           |               |カラー表示時|白黒表示時|
                           +---------------+------------+----------+
                           |リンク         |青色        |下線      |
                           +---------------+------------+----------+
                           |インライン画像 |緑色        |反転表示  |
                           +---------------+------------+----------+
                           |FORMの入力部分 |赤色        |反転表示  |
                           +---------------+------------+----------+
---------------- manual.html with w3mmee-utf8 ----------------

とちゃんと表示されます。なお、xterm(utf-8) ではきちんと表示でき
ているので、"-dump=half-buffer" のときのみの症状だと思いますが、
対応していただけるとありがたいです。(_ _)

-- 
白井秀行 (mailto:shirai@rdmg.mgcs.mei.co.jp)
(setq w3m-type 'w3mmee)
(setq w3m-type-hack 'w3mmee)

(defun w3m-type-hack (&optional type nomsg)
  (interactive)
  (let ((msgstr "Type=> 1: w3m, 2: w3mmee, 3: -utf8   8: w3m-m17n-jp-2 9: -jp-3, 0: -utf8")
	c)
    (unless type
      (message (format "(%s) %s" w3m-type-hack msgstr))
      (while (null c)
	(setq c (read-char-exclusive))
	(cond
	 ((eq c ?1) (setq type 'w3m))
	 ((eq c ?2) (setq type 'w3mmee))
	 ((eq c ?3) (setq type 'w3mmee-utf8))
	 ((eq c ?8) (setq type 'w3m-m17n-jp-2))
	 ((eq c ?9) (setq type 'w3m-m17n-jp-3))
	 ((eq c ?0) (setq type 'w3m-m17n-utf8))
	 (t
	  (setq c nil)
	  (message (format "Incorrect input. %s" msgstr))))))
    (cond
     ((eq type 'w3m)
      (setq w3m-type 'w3m-mnc)
      (setq w3m-command "w3m")
      (setq w3m-halfdump-command nil)
      (setq w3m-coding-system 'iso-2022-7bit)
      (setq w3m-input-coding-system 'iso-2022-7bit)
      (setq w3m-output-coding-system 'w3m-euc-japan)
      (setq w3m-command-arguments nil)
      (setq w3m-dump-head-source-command-argument "-dump_extra")
      (setq w3m-halfdump-command-arguments '("-halfdump")))
     ((eq type 'w3mmee)
      (setq w3m-type 'w3mmee)
      (setq w3m-process-environment
	    (delq nil
		  (list
		   (if (eq w3m-type 'w3mmee)
		       (cons "W3MLANG" "ja_JP.kterm"))
		   (if (eq system-type 'windows-nt)
		       (cons "CYGWIN" "binmode tty")))))
      (setq w3m-command "w3mmee")
      (setq w3m-halfdump-command nil)
      (setq w3m-coding-system 'iso-2022-7bit)
      (setq w3m-input-coding-system 'binary)
      (setq w3m-output-coding-system 'ctext)
      (setq w3m-command-arguments '("-o" "concurrent=0" "-F"))
      (setq w3m-dump-head-source-command-argument "-dump=extra,head,source")
      (setq w3m-halfdump-command-arguments 
	    (list "-dump=half-buffer"
		  '(if charset "-I") 'charset
		  "-o" "concurrent=0")))
     ((eq type 'w3mmee-utf8)
      (cond
       ((w3m-find-coding-system 'utf-8)
	(setq w3m-type 'w3mmee)
	(setq w3m-process-environment
	      (delq nil
		    (list
		     (if (eq w3m-type 'w3mmee)
			 (cons "W3MLANG" "ja_JP.UTF-8"))
		     (if (eq system-type 'windows-nt)
			 (cons "CYGWIN" "binmode tty")))))
	(setq w3m-command "w3mmee")
	(setq w3m-halfdump-command nil)
	(setq w3m-coding-system 'iso-2022-7bit)
	(setq w3m-input-coding-system 'binary)
	(setq w3m-output-coding-system 'utf-8)
	(setq w3m-command-arguments '("-o" "concurrent=0" "-F"))
	(setq w3m-dump-head-source-command-argument "-dump=extra,head,source")
	(setq w3m-halfdump-command-arguments
	      (list "-dump=half-buffer"
		    '(if charset "-I") 'charset
		    "-o" "concurrent=0")))
       (t (error "Incorrect setting."))))
     ((eq type 'w3m-m17n-jp-2)
      (cond
       ((w3m-find-coding-system 'iso-2022-7bit-ss2)
	(setq w3m-type 'w3mmee)
	(setq w3m-command-arguments '("-o" "concurrent=0" "-F"))
	(setq w3m-command "w3mmee-nomoe")
	(setq w3m-halfdump-command "w3m-m17n")
	(setq w3m-input-coding-system 'binary)
	(setq w3m-dump-head-source-command-argument "-dump=extra,head,source")
	(setq w3m-output-coding-system 'iso-2022-7bit-ss2)
	(setq w3m-halfdump-command-arguments
	      (list "-halfdump"
		    "-o" "pre_conv=1"
		    "-o" "strict_iso2022=0"
		    "-o" "ext_halfdump=1"
		    '(if charset "-I") 'charset
		    "-O" "ISO-2022-JP-2")))
       (t (error "Incorrect setting."))))
     ((eq type 'w3m-m17n-jp-3)
      (cond
       ((w3m-find-coding-system 'euc-jisx0213)
	(setq w3m-type 'w3mmee)
	(setq w3m-command-arguments '("-o" "concurrent=0" "-F"))
	(setq w3m-command "w3mmee-nomoe")
	(setq w3m-halfdump-command "w3m-m17n")
	(setq w3m-input-coding-system 'binary)
	(setq w3m-dump-head-source-command-argument "-dump=extra,head,source")
	(setq w3m-output-coding-system 'euc-jisx0213)
	(setq w3m-halfdump-command-arguments
	      '("-halfdump"
		"-o" "pre_conv=1"
		"-o" "ext_halfdump=1"
		(if charset "-I") charset "-O" "euc-jp")))
       (t (error "Incorrect setting."))))
     ((eq type 'w3m-m17n-utf8)
      (cond
       ((w3m-find-coding-system 'utf-8)
	(setq w3m-type 'w3mmee)
	(setq w3m-command-arguments '("-o" "concurrent=0" "-F"))
	(setq w3m-command "w3mmee-nomoe")
	(setq w3m-halfdump-command "w3m-m17n")
	(setq w3m-coding-system 'iso-2022-7bit)
	(setq w3m-input-coding-system 'binary)
	(setq w3m-dump-head-source-command-argument "-dump=extra,head,source")
	(setq w3m-output-coding-system 'utf-8)
	(setq w3m-halfdump-command-arguments
	      (list "-halfdump"
		    "-o" "pre_conv=0" "-o" "ext_halfdump=1"
		    '(if charset "-I") 'charset "-O" "utf-8")))
       (t (error "Incorrect setting."))))
     (t
      (error "Incorrect setting.")))
    (setq w3m-type-hack type)
    (and (eq major-mode 'w3m-mode) (w3m-goto-url w3m-current-url))
    (or nomsg (message "Now, w3m-type-hack: %s." type))))