Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

爆速ブラウザ Dillo 3 の日本語化

2,236 views
Skip to first unread message

Keiji KOSAKA

unread,
Aug 3, 2013, 4:48:05 AM8/3/13
to
http://film.rlss.okayama-u.ac.jp/~kgk/dillo-jp/index.html

00readme.txt より
------------------------------------------------------------------------
爆速ブラウザ Dillo 3 の日本語化 2013/07/29
by KGK (k...@film.rlss.okayama-u.ac.jp)

[以下は、Debian Wheezy 上の Dillo 3.0.2 で検証した結果である。]

非常に軽快な動作をするウェブ・ブラウザ Dillo の日本語化を試みた。

その結果、設定の工夫と自前の http proxy で、大部分のページは文字化けし
ないようになった。

検索などの用途には、充分実用的に使えるだろう。

詳しい説明は doc/ 以下のファイルを、実際に使ったファイルは他のディレク
トリのファイルと見てほしい。

# end of text
========================================================================
--
KGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGK
KGK (life name: Keiji KOSAKA), Dept. of Phys., Okayama Univ.
k...@film.rlss.okayama-u.ac.jp http://film.rlss.okayama-u.ac.jp/~kgk/
KGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGK

Keiji KOSAKA

unread,
Aug 3, 2013, 4:49:54 AM8/3/13
to
http://film.rlss.okayama-u.ac.jp/~kgk/dillo-jp/index.html

doc/01analyze.txt より
------------------------------------------------------------------------
爆速ブラウザ Dillo 3 の日本語表示における問題点 2013/07/29

[以下は、Debian Wheezy 上の Dillo 3.0.2 で検証した結果である。]

Debian Wheezy では、Dillo 3.0.2 がリポジトリからインストールできるよう
になった。Dillo は超高速なウェブブラウザである。日本語に関しては、UTF
対応で希望が見えてきたものの、さまざまな難点がある。とはいえ、その軽快
さは捨てがたい。限定された用途では使える程度にならないものか?

ここでは、まず、日本語表示を中心とした問題点を列挙する。

・キー操作が標準的でない。(FirfoxやChromiumと違う)
・デフォルトの検索エンジンが見慣れないものになっている。
・googleの検索結果のページに行くときに、ワンクッションある。
・フォント指定してないと、日本語が表示できない。
・googleの検索結果が文字化けする。
・HTTPヘッダでCharsetの指定がないと化けることがある。
・Charset=x-sjisが解釈できない。(http-equivでの指定も含めて)
・cssの影響で文字化けすることがある。(cssを強化した3.0.3ではどうだろう?)

googleの動作は、かなり謎である。検索結果のURLに'ie=Shift_JIS'が指定さ
れ、文字化けする。(ieは input encoding らしい)
ユーザ・エージェントを有名なブラウザにするとUTFで返してくれるのだが、
レイアウトが崩れすぎて使いものにならない。
強引に'oe=UTF-8'を追加すると化けないが、いちいち手動で指定するのは現実
的でない。
# 解決策は後述。

フォント指定した状態で文字化けするページには、例えば、

http://ibushikin.blogspot.jp/2008/05/ruby_12.html
http://glossary.tank.jp/t07FF.html
http://dillo-win.sourceforge.jp/index.html
http://save.sys.t.u-tokyo.ac.jp/~yusa/fonts/ricty.html
http://homepage3.nifty.com/owl_h0h0/unix/job/UNIX/network/port_no.html

などがある。Windows用のdilloのページが化けるのは皮肉である。

次に解決策を示す。

Keiji KOSAKA

unread,
Aug 3, 2013, 4:51:18 AM8/3/13
to
http://film.rlss.okayama-u.ac.jp/~kgk/dillo-jp/index.html

doc/02solution.txt より
------------------------------------------------------------------------
爆速ブラウザ Dillo 3 の日本語化の挑戦 2013/08/03

ここでは、問題点に対する解決策を提示する。

・キー操作が標準的でない。(FirfoxやChromiumと違う)

/etc/dillo/keysrc を ~/.dillo/ にコピーして、好きなように設定すればよ
い。例えば、

<alt>left = back
<alt>right = forward

といったあたりは設定しておくとよい。

・デフォルトの検索エンジンが見慣れないものになっている。

/etc/dillo/dillorc を ~/.dillo/ にコピーして、'search_url=' が並んでい
る先頭に、

search_url="Google http://www.google.co.jp/search?ie=UTF-8&oe=UTF-8&q=%s"

などを挿入する。

・googleの検索結果のページに行くときに、ワンクッションある。

~/.dillo/dillorc で、

filter_auto_requests=allow_all

を設定する。

・フォント指定してないと、日本語が表示できない。

~/.dillo/dillorc で設定する。

font_serif="fonts-japanese-mincho"
font_sans_serif="fonts-japanese-gothic"
font_cursive="fonts-japanese-gothic"
font_fantasy="fonts-japanese-gothic"
font_monospace="fonts-japanese-gothic"

自分の好みのフォントに指定してもよい。例えば、

font_serif="TakaoExMincho"
font_sans_serif="TakaoExGothic"
font_cursive="TakaoExGothic"
font_fantasy="TakaoExGothic"
font_monospace="TakaoExGothic"

・googleの検索結果が文字化けする。
・HTTPヘッダでCharsetの指定がないと化けることがある。
・Charset=x-sjisが解釈できない。(http-equivでの指定も含めて)

3つまとめて、自前のプロキシで解決する。ここでは、ruby で書いたプロキシ
を用意する。
# ruby 1.9.3p194 で動作確認。

$ cat ~/bin/dillo_proxy.rb
#!/usr/bin/env ruby

# dillo_proxy 1.02
# proxy for dillo 3 to be japanized
# ver 1.00: 2013/07/28 by KGK (k...@film.rlss.okayama-u.ac.jp)
# ver 1.01: rescue for double execute. 2013/07/31 by KGK
# ver 1.02: add trap for SIGTERM. 2013/08/03 by KGK

# cf. http://thinkit.co.jp/article/117/3?page=0,0

require 'webrick'
require 'webrick/httpproxy'
require 'kconv'
include WEBrick

# cf. http://www2u.biglobe.ne.jp/~MAS/ruby/CAB8BBFAA5B3A1BCA5C9A4CEBFE4C2AC.html
CODE_NAME = {
Kconv::JIS => 'ISO-2022-JP',
Kconv::EUC => 'EUC-JP',
Kconv::SJIS => 'Shift_JIS',
Kconv::BINARY => '',
Kconv::UNKNOWN => '',
Kconv::ASCII => '',
Kconv::UTF8 => 'UTF-8',
Kconv::UTF16 => 'UTF-16',
}

class DilloHTTPProxyServer < HTTPProxyServer
def proxy_service(req, res)
if %r|www\.google\.co\.jp$|.match(req.host)
uri_s = res.request_uri.to_s
if %r/search/.match(uri_s) and ! %r/&oe=UTF-8/.match(uri_s)
if uri_s.gsub!(/&oe=[^&]+/, '&oe=UTF-8')
uri = URI.parse(uri_s)
else
uri = URI.parse(uri_s + '&oe=UTF-8')
end
# print ">redirect: #{uri_s} -> #{uri.to_s}\n"
self.logger.debug(">redirect: #{uri_s} -> #{uri.to_s}")
res.set_redirect(WEBrick::HTTPStatus::TemporaryRedirect, uri)
return
end
end
super
self.logger.debug(">request uri: #{res.request_uri.to_s}")
if res.header['content-type'] =~ %r!^text/html!
guess = CODE_NAME[Kconv.guess(res.body)]
if guess != '' and ! %r/#{guess}/.match(res.header["content-type"])
ct = "text/html; charset=#{guess}"
# print ">Content-Type: #{res.header["content-type"]} -> #{ct}\n"
self.logger.debug(">Content-Type: #{res.header["content-type"]} -> #{ct}")
res.header["content-type"] = ct
end
res.body.sub!(/(<META .*; Charset=)x-sjis/i, '\1Shift_JIS')
end
end
end

alog="#{ENV['HOME']}/log/dillo_proxy.log"
dlog="#{ENV['HOME']}/log/dillo_proxy_debug.log"
config = {:Port => 8080,
:Logger => WEBrick::Log::new(dlog, WEBrick::Log::DEBUG),
:AccessLog => [[File.open(alog, 'w'), WEBrick::AccessLog::CLF]]}

s = DilloHTTPProxyServer.new(config) rescue exit(0)

File.delete(alog) if File.exist?(alog)
File.delete(dlog) if File.exist?(dlog)
trap("INT"){s.shutdown}
trap("TERM"){s.shutdown}
s.start

# end of script

ここでは、ポート番号を8080にしている。よって、~/.dillo/dillorc で、

http_proxy="http://127.0.0.1:8080/"

と設定する。
また、~/log というディレクトリがあると仮定している。ついでに、

$ cat ~/bin/dillo.sh
#!/bin/sh

dillo $* 2>&1 > ~/log/dillo.log

# end of script

というのを用意しておくと、ログが ~/.xsession-errors ではなく
~/log/dillo.log に出力される。

プロキシの自動立ち上げの方法はデスクトップ環境によって違う。LXDE な
ら、~/.config/autostart/ に適当な desktop ファイルを用意する。

・cssの影響で文字化けすることがある。(cssを強化した3.0.3ではどうだろう?)

~/.dillo/dillorc で、

parse_embedded_css=NO
filter_auto_requests=allow_all

を設定する。

Keiji KOSAKA

unread,
Aug 3, 2013, 4:52:40 AM8/3/13
to
http://film.rlss.okayama-u.ac.jp/~kgk/dillo-jp/index.html

doc/03result.txt より
------------------------------------------------------------------------
爆速ブラウザ Dillo 3 の日本語化の現状 2013/07/29

Dillo の日本語化に挑戦した結果、
といったページに対しては、文字化けしなくなった。多少レイアウトが崩れる
ものの、さくっと検索する程度の用途には実用に耐えるように思える。

実は、

$ dillo http://www.google.co.jp/

のようにURL指定して立ち上げたときに、入力エリアにカーソルが行かないと
いう問題点が残っている。よって、普通に立ち上げたあとに Ctrl-s で検索す
るのがよいだろう。ショートカットキーを使って立ち上げるようにしておくと、
さらに快適である。
0 new messages