[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: User specified content type / w3mmee support
- From: Hironori Sakamoto <h-saka@xxxxxxxxxxxxx>
- Date: Tue, 22 May 2001 12:43:15 +0900 (JST)
- X-ml-name: emacs-w3m
- X-mail-count: 00849
坂本(浩)です。
>> From: TSUCHIYA Masatoshi <tsuchiya@pine.kuee.kyoto-u.ac.jp>
>> 白井> P.S.
>> 白井> 最近、w3m-m17n も使うようになりました。-dump だと大丈夫なのです
>> 白井> が、-halfdump 時に x0213 が化けるのがちょっとだけ悲しいです。
>> w3m-m17n だとまた違うコード系で出力されるのでしょうか?
はい。1〜6bytes の可変長コードです。
一応、日本語環境だと EUC-JP (US-ASCII/JISX0208 のみ)の上位互換なのですが、
他の文字集合は 0x80-0x9F を先頭byte として 3〜6bytes で表しています。
例えば、ISO-2022 は (F を終端文字として)
94文字セット: 0x80 0x80|F 0xA1-0xFE
96文字セット: 0x81 0x80|F 0xA1-0xFE
94x94文字セット: 0x82 0x80|F 0xA1-0xFE 0xA1-0xFE
です。
Unicode や Big5,GBK などは少々面倒な持ち方をしています。
とりあえず、-halfdump 時にも -dump と同じ文字コード(-O で指定)で
出力するオプション(ext_halfdump)を追加した w3m-m17n-0.19 への
patch を出しておきますね。
w3m-m17n -halfdump -o ext_halfdump=1 -O euc-jp
といった感じで使ってください。
# -o pre_conv=1 も追加した方がベターかも。
-----------------------------------
坂本 浩則 <hsaka@mth.biglobe.ne.jp>
http://www2u.biglobe.ne.jp/~hsaka/
--- libwc/wtf.c.orig Thu Mar 29 01:17:15 2001
+++ libwc/wtf.c Tue May 22 12:16:46 2001
@@ -436,7 +436,6 @@
/* case 0: */
cc.ccs = WC_CCS_US_ASCII;
cc.code = (wc_uint32)' ';
- q++;
break;
}
}
--- fm.h.orig Wed May 16 21:05:18 2001
+++ fm.h Tue May 22 12:21:10 2001
@@ -729,6 +729,7 @@
global wc_ces DisplayCharset init(DISPLAY_CHARSET);
global wc_ces DocumentCharset init(DOCUMENT_CHARSET);
global wc_ces SystemCharset init(SYSTEM_CHARSET);
+global char ExtHalfdump init(FALSE);
global char FollowLocale init(TRUE);
global char UseContentCharset init(TRUE);
global char SearchConv init(TRUE);
@@ -737,12 +738,14 @@
#define conv_from_system(x) wc_conv((x), SystemCharset, InnerCharset)->ptr
#define conv_to_system(x) wc_conv_strict((x), InnerCharset, SystemCharset)->ptr
#define url_quote_conv(x,c) url_quote(wc_conv_strict((x), InnerCharset, (c))->ptr)
+#define Str_conv_to_halfdump(x) (ExtHalfdump ? wc_Str_conv((x), InnerCharset, DisplayCharset) : (x))
#else
#define Str_conv_from_system(x) (x)
#define Str_conv_to_system(x) (x)
#define conv_from_system(x) (x)
#define conv_to_system(x) (x)
#define url_quote_conv(x,c) url_quote(x)
+#define Str_conv_to_halfdump(x) (x)
#endif
global char UseAltEntity init(TRUE);
global char UseGraphicChar init(FALSE);
--- rc.c.orig Wed Apr 25 10:09:40 2001
+++ rc.c Tue May 22 12:20:45 2001
@@ -143,6 +143,7 @@
#define CMT_DOCUMENT_CHARSET "文書の標準の文字コード"
#define CMT_AUTO_DETECT "文書の読み込み時に文字コードの自動判定を行う"
#define CMT_SYSTEM_CHARSET "システムの文字コード"
+#define CMT_EXT_HALFDUMP "表示用文字コードで halfdump の出力を行う"
#define CMT_FOLLOW_LOCALE "Locale($LANG) に従ってシステムの文字コードを設定"
#define CMT_SEARCH_CONV "検索文字列を文書の文字コードに変換する"
#define CMT_USE_COMBINING "結合文字を使う"
@@ -252,6 +253,7 @@
#define CMT_DOCUMENT_CHARSET "Default document charset"
#define CMT_AUTO_DETECT "Automatic charset detect when loading"
#define CMT_SYSTEM_CHARSET "System charset"
+#define CMT_EXT_HALFDUMP "Output halfdump with display charset"
#define CMT_FOLLOW_LOCALE "System charset follows locale($LANG)"
#define CMT_SEARCH_CONV "Adjust search string for document charset"
#define CMT_USE_COMBINING "Use combining characters"
@@ -486,6 +488,7 @@
{"document_charset", P_CODE, PI_SEL_C, (void *) &DocumentCharset, CMT_DOCUMENT_CHARSET, &document_charset_str},
{"auto_detect", P_CHARINT, PI_SEL_C, (void *) &WcOption.auto_detect, CMT_AUTO_DETECT, &auto_detect_str},
{"system_charset", P_CODE, PI_SEL_C, (void *) &SystemCharset, CMT_SYSTEM_CHARSET, &system_charset_str},
+ {"ext_halfdump", P_CHARINT, PI_ONOFF, (void *) &ExtHalfdump, CMT_EXT_HALFDUMP, NULL},
{"follow_locale", P_CHARINT, PI_ONOFF, (void *) &FollowLocale, CMT_FOLLOW_LOCALE, NULL},
{"use_combining", P_CHARINT, PI_ONOFF, (void *) &WcOption.use_combining, CMT_USE_COMBINING, NULL},
#ifdef USE_UNICODE
--- file.c.orig Wed May 16 21:06:51 2001
+++ file.c Tue May 22 12:07:43 2001
@@ -1853,12 +1853,12 @@
if (buf) {
pushTextLine(buf, lbuf);
if (w3m_backend) {
- Strcat(backend_halfdump_str, lbuf->line);
+ Strcat(backend_halfdump_str, Str_conv_to_halfdump(lbuf->line));
Strcat_char(backend_halfdump_str, '\n');
}
}
else {
- Strfputs(lbuf->line, f);
+ Strfputs(Str_conv_to_halfdump(lbuf->line), f);
fputc('\n', f);
}
if (obuf->flag & RB_SPECIAL || obuf->flag & RB_NFLUSHED)
@@ -1874,9 +1874,9 @@
if (buf) { \
appendTextLine(buf,(str),0); \
if (w3m_backend) \
- Strcat(backend_halfdump_str, (str)); \
+ Strcat(backend_halfdump_str, Str_conv_to_halfdump(str)); \
} else \
- Strfputs((str),f)
+ Strfputs(Str_conv_to_halfdump(str),f)
while (*p) {
q = p;