Default
Google

w3mでヘブライ語のweb閲覧

browsersを整理していたら、fribidiを使用した面白そうな文献を見つけましたので、試してみました。

概要

iso-logicalのヘブライ語で書かれたhtml文書を、fribidiを使用したmlterm上で双方向アルゴリズムに従ったレンダリングするw3m-m17nの紹介です。

w3m-m17nは、w3mを多言語化したものです。

表示例

図はutf8ですが、iso-8859-8-iでも表示できます。二行にわたる場合のテストは、まだしていませんが、気になるところです。

図の韓国語が表示できていないのは、僕の設定のせいだと思います。

コンパイル

gcc

Reading specs from /usr/lib/gcc-lib/i586-pc-linux/2.95.3/specs
gcc version 2.95.3 20010315 (release)

fribidi

fribidi-0.10.1.tar.bz2

特に問題なし。

mlterm

mlterm-2.4.0.tar.gzが既に出ているので、そっちを使用すれば、書き換えず無くって良いでしょう。

mlterm-2.3.1.tar.gz

./configureを実行すると、--enable-imlibと--enable-anti-aliasの後のmakeでerrorがでました。

./configure --enable-imlib --enable-anti-alias --enable-fribidiでmakeすると、fribidiが有効にならないみたい。

そのときは、fribidiを呼び出しているml_bidi.cに適当にcommentを入れるなど、影響のない編集をして(単にsaveするだけでもいいかも)、再compileすると、いい感じ。

ただ、このままだと、ヘブライ語・英語混在の文章が、意図どおりに表示されないので、以下のように手を加えます。とはいえ、少なくとも3/21にCVS リポジトリから取得した、mltermの最新ソースでは、FRIBIDI_TYPE_ONになっているので、意図どおりに表示されるはずです。

diff src/ml_bidi.c src_mod/ml_bidi.c
101c101
<       fri_type = FRIBIDI_TYPE_LTR ;
---
>       fri_type = FRIBIDI_TYPE_ON ;

w3m-m17n

w3m-0.3-m17n-20020311.tar.gz

configure時にutf8を選んで、makeしました。

試用

その1

上にも書きましたが、少なくとも2002/03/21にCVS リポジトリから取得した、mltermのソースでは、FRIBIDI_TYPE_ONになっているので、意図どおりに表示されるはずですので、以下の文章の範囲には注意が必要です。

まず、utf-8で書かれたヘブライ語・英語混在のhtml文書表示例を示します。右上から時計回りにMozilla5、Konqueror、w3m-m17n(FRIBIDI_TYPE_ON)、w3m-m17n(FRIBIDI_TYPE_LTR)です。

mlterm -E utf8のように、utf8を有効にしてます。

FRIBIDI_TYPE_ONでは、意図どおりに表示されています。このときは、defaultでbidiは有効になります。

次に、上記からタグを除いたテキスト表示例を示します。右がbidiを無効にしたmlterm、左下がFRIBIDI_TYPE_ON、左上がFRIBIDI_TYPE_LTRです。右はfribidiを通していて、それ以外はcatで表示しています。画面にa.txtとありあますが、biditext.txtと一緒です。

単純にfribidiを通した場合とfribidiでrtlに埋め込んだ場合は、左下(FRIBIDI_TYPE_ON)と同一になります。fribidiでltrに埋め込んだ場合は左上(FRIBIDI_TYPE_ON)と同一になります。

その2

上記utf-8で書かれたヘブライ語・英語混在のhtml文書には、元となったiso-8859-8-i (iso-logical)で書かれた文書があります。それをiso-8859-8 (iso-visual)になおした文書についてです。

表示例をご覧下さい。一番左がmlterm -E utf8 -D falseで立ち上げた場合、真ん中がmlterm -E utf8で立ち上げた場合、一番左がmozillaで立ち上げた場合です。

真ん中だけ、意図どおりになっていません。既にvisualになっている文書なので、二重にbidiがかかっています。

とりあえず、w3m-m17nの外部ブラウザとして、mlterm -E uft8 -D false -e w3m-m17nを定義し、それを立ち上げることで対処しています。

mltermはbidiをfalseにして立ち上げた上、w3m-m17nでmeta要素とdir属性を解釈して、RTLかLTRかを判断してfribidiを通して頂くのが良いとは思うのですが、需要が少なさそう・・・ 自分でpatch作って貢献できたらいいんですが、実力が無くって申し訳ありません。

ホームページ



Acquiring image from ProHosting Banner Exchange