素のw3m (以下w3mと表記し、 実行ファイルの名前も同じものと仮定します) では
多符号化方式対応の亜種 (以下w3mmeeと表記し、 実行ファイルの名前も同じものと仮定します) の場合は、 符号化方式の自動判別の範囲、 使用端末で使える符号化方式、 符号化方式の変換方法、 各言語に対応したメッセージ、 etc. を指定するために少し(?)複雑な手順を踏むことになります。
まず環境変数「W3MLANG」 (設定されていなければ「LANG」) の値を読み、 アルファベットをすべて小文字に変換後、 それが
言語コード+"_"(アンダースコア)+国コード+"."(ピリオド)+符号化方式コードという形をしているものとみなして、 それぞれのコードに分解します。 例えば値が「ja_JP.UTF-8」だとすると
上で得られた文字列から
さらに
オプション名+"="(等号)+説明文という形をしたもののみで、 他の行は無視されます。 また等号の前後・行頭・行末の空白文字は取り除かれます。
さらに
各ユーザ用のオプション設定ファイル、 形式は$LIB_DIR/w3mconfig*達と同じ、
各ユーザ用のオプション設定パネルの説明文設定ファイル、 形式は$LIB_DIR/w3mmessages*達と同じ、
この節の内容はw3mmeeがgettextを使うようにビルドされている場合のみ有効です。
gettext()の戻り値が非US-ASCII文字を含む場合、 そのような文字の符号化方式は内部用のものに変換する必要があります。 gettext()は現localeのcodeset名に基いて出力の符号化方式を決めますが、 w3mmeeはMIMEのcharset名を使っています。 不幸にしてある符号化方式のlocaleシステムにおけるcodeset名とMIMEのcharset名は同じとは限らないので、 w3mmeeはそれらの対応表を必要とします。
w3mmeeには既にそのような対応表が組み込まれていますが、 組み込みのものでは不十分なこともあり得ます。 そのような場合以下の2つのファイル
MIMEのcharset名+"="(等号)+言語指定[+","(コンマ)+…]という形をしていなければなりません。 "="や","の前後には空白があっても構いません。 言語指定は
言語コード+"_"+国コード+"."+codeset名という形の文字列で、 言語コード、 "_"+国コード、 または"."+codeset名、 のうち1個または2個が省略されていても構いません。
以下は多符号化方式対応拡張により増えたオプションのうち、 文字の符号化に関するものの一覧です。
言語を指定します。 今のところは、 符号化方式の自動判別の範囲を限定するためだけに使われています。
例えば
mylang cjkと指定すると、 charset指定のない文書の符号化方式を
自動判別に失敗した場合に想定する符号化方式を指定します。
端末の符号化方式を指定します。 端末への出力時以外に、 formへの入力の符号化方式もこのオプションの値で指定されるものと一致するものとして扱われます。
このオプションは使用しないことを推奨します。 かわりに tty_initial_input_charset と tty_initial_output_charset を使って下さい。
tty_charsetで指定する符号化方式がISO 2022の部分集合の場合、 端末からの入力ストリームの中間バッファの初期状態をこのオプションで指定する符号化方式のものに変更できます。
tty_charsetで指定する符号化方式がISO 2022の部分集合の場合、 端末への出力ストリームの中間バッファの初期状態をこのオプションで指定する符号化方式のものに変更できます。
html文書のフォームへの入力の符号化方式・文字セットを入力時にどのように変換するかを指定します。
多符号化方式対応拡張 に使われる サポートライブラリ についての詳しい知識があり、 かつ特殊な使い方をするのでない限り、 指定しないほうが無難です。
端末への出力時の符号化方式・文字セットの変換のしかたを指定します。
多符号化方式対応拡張 に使われる サポートライブラリ についての詳しい知識があり、 かつ特殊な使い方をするのでない限り、 指定しないほうが無難です。
端末がそのままでは表示できず、 代替文字列も指定されていない文字に適用される変換を指定します。
多符号化方式対応拡張 に使われる サポートライブラリ についての詳しい知識があり、 かつ特殊な使い方をするのでない限り、 指定しないほうが無難です。
charset指定の無い文書の符号化方式を指定します。 このオプションが指定されると、 自動判別は行われません。
ネットワークやローカルファイルからの入力時の符号化方式の変換の仕方を指定します。
多符号化方式対応拡張 に使われる サポートライブラリ についての詳しい知識があり、 かつ特殊な使い方をするのでない限り、 指定しないほうが無難です。
charset指定も無く、 自動判別にも失敗した場合に想定する符号化方式を指定します。
html文書に入力フォームがある場合に、 アクションに対する引数はその文書の符号化方式に変換後に渡されるので、 その場合はこのオプションの設定の影響を受けます。 今のところ、 これ以外の用途はありません。
ネットワークやローカルファイルへの出力時の符号化方式の変換の仕方を指定します。
多符号化方式対応拡張 に使われる サポートライブラリ についての詳しい知識があり、 かつ特殊な使い方をするのでない限り、 指定しないほうが無難です。
ブックマーク登録スクリプトへの引数等、 他のプロセスに渡す文字列の符号化方式を指定します。
「文字列」は以下のような2通りの形式の指定のどちらかを空白で区切って並べたものです:
<sep1>+正規表現+<sep2>+<charset>または
<charset>空白で区切られたトークンの最初の文字が非alphanumericならば最初の形式として扱われ、 それ以外の場合は2番目の形式としてみなされます。 最初の形式において、 もし<sep1>が「(」、「{」、「[」、「<」、または「^」ならば、 <sep2>はそれぞれれ「)」、「}」、「]」、「>」、または「$」でなければなりません。 <sep1>と<sep2>は、 「^」と「$」の対の場合のみ正規表現の一部として扱われます。 第2の形式は
「^.*$」+<charset>の省略形です。
プロセス名が与えられると、 正規表現との照合が順に試され、 最初に照合に成功した表現に対応する<charset>が採用されます。
端末が受け付けない文字を指定します。 代替文字列が指定されていないか、 「NLLL」(カギカッコは除く、すべて大文字)という文字列の場合、 その文字そのものが出力されます。 代替文字列が「REJECT」(カギカッコは除く、すべて大文字)以外の文字列の場合、 その文字列が出力されます。 これ以外の場合、 tty_character_replacement で代替文字列のデフォルトが指定されていればその文字列が出力されます。 これも指定されていない場合は「?」(クエスチョンマーク)が出力されます。
このオプションは複数設定可です。 文字範囲に包含関係がある場合、 範囲の狭いほうが採用されます。 包含関係が無くかつ重複する場合、 重複部分だけ後で指定したもので上書きされます。
端末が受け付けない文字の代替文字列のデフォルトを指定します。
マウスを使わないバッファ (configureでマウスサポートを外したバイナリの場合も含む) での表示中のドキュメントを表わすメッセージ用のフォーマット文字列を指定します。
マウスを使うバッファでの表示中のドキュメントを表わすメッセージ用のフォーマット文字列を指定します。
長いURLの途中を省略して表示する場合の、 省略した部分の代替文字列を指定します。
<ul>の各項目の先頭に現われる文字列群を、 ","(コンマ)で区切って指定します。
<ul>のtype属性をdiscにした場合の、 各項目の先頭に現われる文字列を指定します。
<ul>のtype属性をcircleにした場合の、 各項目の先頭に現われる文字列を指定します。
<ul>のtype属性をsquareにした場合の、 各項目の先頭に現われる文字列を指定します。
小さい画像用の代替テキストを指定します。
<hr>に使われる文字を指定します。
メニューの枠に使う文字を、 左上隅から出発して、 左から右、 上から下の順に、 ","(コンマ)で区切って指定します。
テーブルの枠や境界に使う文字を指定します。 中心、 左端、 上端、 左上隅、 右端、 縦棒、 右上隅、 下端、 左下隅、 水平線、 右下隅の順に、 ","(コンマ)で区切って指定します。
テーブルの枠や境界を太くする時に使う文字を指定します。 中心、 左端、 上端、 左上隅、 右端、 縦棒、 右上隅、 下端、 左下隅、 水平線、 右下隅の順に、 ","(コンマ)で区切って指定します。
オプション設定パネルに、 「OK」ボタンを押して終了した場合に結果を$HOME/.w3mmee/configに保存するかどうか、 を指定する項目が増えています。 その項目の説明文を指定します。
非標準なcharset名の標準名を指定します。 指定の仕方は
標準名+"="(等号)+charset名のリストで、 「charset名のリスト」はcharset名を","(コンマ)で区切って並べたものです。 等号やコンマの前後に空白を入れてはいけません。 またcharset文字中のアルファベットの大文字・小文字は区別されません。
例えば「charset=SHIFT-JIS」などという指定のあるページが存在しますが、 これを「charset=Shift_JIS」と指定してあるのと同等に表示するためには、
charset_cname shift_jis=shift-jisという指定を設定ファイルのどこかに追加します。
このオプションは複数指定が可能で、 等号の左辺の重複したものがある場合は、 後の指定が前の指定を上書きします。
Unicode中の文字を端末に表示した時の幅の表の名前を指定します。 指定可能なものは以下のとおりです (アルファベットの大文字・小文字の違いは無視されます)。
文字の符号化とはまったく関係無いけれども、 パッチがオリジナルに採用されなかったり、 須藤が移植をサボっていたり、 等の理由でw3mmeeのみが認識するオプションの一覧です。
HTTPヘッダフィール"content-encoding"の値<encoding name>,
MIMEタイプ <media type>,
および<encoding name>で示される符号化方式で符号化された内容を復号するフィルタプログラムを結びつけます。
このオプションが正しく機能するようにするためには、
さらに$HOME/.mime.types
に
<media type> 拡張子のような行を付け加えて、 <media type>と適当なファイル拡張子を結びつける必要があります。
このオプションは複数指定可で、 おなじ<encoding name>を持つオプションが2つ以上指定された場合、 最後の指定が採用されます。
ファイルの言語を表わす拡張子のコンマ区切りのリストを指定します。
複数の拡張子を持つファイルのcontent typeを推測するとき、 このオプションにリストされた拡張子は判断の材料から除外されます。
正規表現の検索時に行を跨ぐ検索を行うかどうかを指定します。
文書をロードするためのプロセス数の最大値を指定します。
文書をロードするためのプロセス数のサーバ毎の最大値を指定します。
何回までリダイレクトに従うかを指定します。
HTTPリクエストヘッダに加えるヘッダを指定します。 以下のヘッダ
Host
,Pragma
,Cache-Control
,Content-Length
は常にw3mmeeが値を決め、 オプションによる指定は無視されます。 以下のヘッダ
UserArgent
,Accept
,Accept-Encoding
,Accept-Language
のオプションによる指定が無い場合、 w3mmeeが他の情報から適切な値を与えます。 以下のヘッダ
Content-Type
,Referer
は、 他に与えるべき適当な値が無いときにのみ、 オプションにより指定した値が与えられます。 以下のヘッダ
Cookie
,Cookie2
はコンパイル時の設定やコマンドライン、 あるいはオプション設定パネルで、 w3mmeeがcookieを扱わないようになっている時のみこのオプションによる値が採用され、 それ以外はオプションの指定を無視し、 w3mmeeが値を決めます。
このオプションは複数指定可で、 おなじヘッダ名に対する指定が2つ以上指定された場合、 最後の指定が採用されます。
HTTPリクエストのバージョンを指定します。 指定可能な値は"1.1"または"1.0"(ただし2重引用符を除く)です. 他の値が指定された場合警告無しに無視され、 バージョンとしては"1.1"が使われます。
文書のレンダリング結果をダンプする際のアンカーの表示の仕方を指定します。 この文字列と文書中のリンク一覧中の番号がsprintfに渡されます。 従ってこの文字列中にはsprintf用の変換指定子「%d」が丁度1個含まれていなければなりません。
文書のレンダリング結果をダンプする際のイメージの表示の仕方を指定します。 この文字列と文書中のリンク一覧中の番号がsprintfに渡されます。 従ってこの文字列中にはsprintf用の変換指定子「%d」が丁度1個含まれていなければなりません。
文書のレンダリング結果をダンプする際の、 同一文書内のラベルへのリンクに付加する行番号と桁の表示の仕方を指定します。 この文字列と行番号と桁がsprintfに渡されます。 従ってこの文字列中にはsprintf用の変換指定子「%d」が丁度2個含まれていなければなりません。
文書のレンダリング結果をダンプする際に、 その文書のURLがこの文字列であるものとして扱われます。
カーソル移動コマンドの結果カーソルが画面外に移動してしまう場合、 「数値」行または桁だけ画面がスクロールします。
優先度最大のmailcapエントリを指定します。 外部ビューワを一時的に変更するために使われることを想定したオプションです。
このタイプのオプションは複数回現れても構いません。
優先度最大のbrowsecapエントリを指定します。 外部ブラウザを一時的に変更するために使われることを想定したオプションです。
このタイプのオプションは複数回現れても構いません。
Plain text中の画面の幅に納まらない行を、 折り返して表示するかどうかを指定します。
画面の幅に納まらない行が、 切り詰めて表示されていることを示す文字を指定します。
画面の幅に納まらない行が、 折り返して表示されていることを示す文字を指定します。
実際に表示する前に画像をロードしておくかどうかを指定します。
インライン画像の縦方向のアラインメントのデフォルトを指定します。
「位置」は
D
("default"を表わします)、
T
("top"を表わします)、
M
("middle"を表わします)、
または
B
("bottom"を表わします)、
のいずれかでなければなりません。
D
は
B
とほとんど同じですが、
小さな画像に対して少々違いが出ます。
テーブル中の縦方向のアラインメントのデフォルトを指定します。
「位置」は
T
("top"を表わします)、
M
("middle"を表わします)、
または
B
("bottom"を表わします)、
のいずれかでなければなりません。
GETでもHEADでもないメソッドのHTTPリクエストが、 HTTPレスポンスコード301または302によってリダイレクトされたときの振舞いを指定します。 「振舞い」は
0
1
2
3
フレームの境界の色を指定します。
文字幅を自動設定してよいかどうかを指定します。
一行の高さを自動設定してよいかどうかを指定します。
ファイル拡張子のコンマ区切りのリストを指定します。 w3mmeeはローカルファイルのオープンに失敗した時、 ここにリストした拡張子をファイル名に追加して再度オープンを試みます。
拡張子として「*」(アステリスク)が指定されると、 その場所にファイルの符号化方式に対応する拡張子のコンマ区切のリストが展開されます (デフォルトでは「.Z,.bz2,.gz」、 accept_encodingオプションの項を見て下さい).
リモートページのキャッシュされたソースを編集可能にするかどうかを指定します。
レンダリング結果の各行の行末の空白を削除するかどうかを指定します。
w3mmeeは、 mailcapエントリの文字列展開において、 以下の追加の%-エスケープを認識します。
URLのホスト部。
URLのポート部。
URL全体。
まず「%<test>」の展開を試みます。 <test>の先頭に「%」が挿入されることに注意して下さい。 展開が実際に行われる場合 (展開結果が空文字列の場合も含みます)、 <yes>が処理されます。 展開に失敗する場合は<no>が処理されます。 <yes>が省略された場合、 省略された場所に<test>があるかのように扱います。 <no>が省略されかつ<test>の展開に失敗する場合は、 この%-エスケープ全体が空文字列で置き換えられます。
w3mmeeはURLのscheme部によって外部ブラウザを自動的に決定する仕掛を持っています。 外部ブラウザとschemeの対応は"browsecap"ファイルによって与えられます。 w3mmeeは
ファイルフォーマットも"mailcap"ファイルと同じです。 ただし各エントリの最初の要素は
<scheme>+「/」(スラッシュ)+<method>という形でなければなりません。 また<method>としてサポートされているのは今のところ「post」、「get」、または「download」です。 <method>部にワイルドカードとして「*」(アステリスク)を指定することも可能です。 <method>部が「post」になる場合、 CGIプログラムに渡されるべき引数がそのまま、 マッチした外部ブラウザの標準入力になります。
もしURLがquery stringを含んでいて、 そのquery stringが「<word>=<value>」という要素を含んでいる場合、 「%{<word>}」という形の%-エスケープは「<value>」に展開されます。 さらに「%?」という%-エスケープはquery string全体 (ただし最初の「?」は除く) に展開されます.
browsecap機能は、 バッファのソース、 バッファの表示イメージ、 form要素のtype=textなinputコントロール, またはform要素のtextareaコントロール, の編集用エディタを決めるためにも使われます。 browsecapエントリのうち、 最初の要素が、 それぞれ 「x-w3m-edit/buffer」、 「x-w3m-edit/screen」、 「x-w3m-edit/inputtext」、 または「x-w3m-edit/textarea」 のものが該当するものです。
w3mmeeのmailcapおよびbrowsecapエントリの解析ルーチンは、 「x-w3m-internal」、 「x-w3m-cgioutput」、 「x-w3m-match=正規表現」、 および「x-w3m-nc-match=正規表現」というフラグを認識します。
「x-w3m-internal」のセットされたエントリは、 上記の編集用エディタの決定のような、 内部用途だけに制限されます。 エディタ用のエントリにはこのフラグを付けることをおすすめします。
「x-w3m-cgioutput」がセットされている場合、 そのエントリから決まるプログラムはCGIプログラムとして扱われます。 すなわち、 プログラムを呼び出す前に各種の環境変数が設定され、 プログラムの出力の最初の空行の前の行達がHTTPの応答ヘッダとして解析されます。
「x-w3m-match=『正規表現』」および「x-w3m-nc-match=『正規表現』」はbrowsecapの中でのみ認識されます。 これらのフラグはお互いに排他的で、 1つのエントリに両方が指定された場合、 後のもののみが有効になります。 どちらかのフラグが指定された場合、 URL全体と『正規表現』が照合され (「x-w3m-nc-match=『正規表現』」の場合はアルファベットの大文字小文字は区別されません)、 照合が成功した場合のみ、 そのエントリが採用されます。 もし「test=…」フラグも指定されていた場合、 結果の論理積がエントリを採用するかどうかに使われます。
tty_accept_character や tty_reject_character の最初の引数としてUnicode中の文字を与える場合は、
"U+"+Unicodeの16進表記または
"U+"+範囲の始点のUnicodeの16進表記+"-"+終点のUnicodeの16進表記と表記します。 Unicode以外の文字を与える場合
"I+"+その文字の内部表現または
"I+"+範囲の始点文字の内部表現+"-"+終点文字の内部表現と表記します。
「Unicode以外の文字の内部表現」とは以下のようなものです。 まず (ISO 2022の分類に基いて) 文字セットの種類から
S
を決めます。
次に94セット・96セット・94x94セットの場合は、
ISO 2022方式の符号化でその文字セットを指示する時に使う終端バイトをF
とします。
ただし追加の中間バイト(2/1)を必要とする94セットの場合は終端バイトに0x40を加えたものをF
とします。
非ISO 2022文字セットの場合は、
サポートライブラリがその文字セットの識別用に使う
(今のところ文書化されていない)
たかだか8ビットの整数をF
とします。
最後にその文字セットに収容可能なコードポイントを順にならべて、
0から始まる番号をつけます。
その番号をC
とします。
以上のS
、F
、C
の16進表記を「+」(プラス符号)で区切って並べたものが「内部表現」です。
F
とC
は省略可能で、
始点文字として指定されたときは可能な範囲の最小値、
終点文字として指定されたときは可能な範囲の最大値、
が省略時の値として使われます。