[mew-dist 28987] Re: Русский пример

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
2009年 9月 4日 (金) 13:37:38 JST


白井です。mew-dist に出し損なった。。。

From: Isao YASUDA <isao at example.com> さん曰く
Subject: [mew-dist 28983] Re: Русский пример (Re: Summary でのロシア語表示)
Message-ID: <20090903.214212.255514494.isao at example.com>
Date: Thu, 03 Sep 2009 21:42:12 +0900 (JST)

>>- Summary モードに入るとき:
>>   真 .mew-summary-xxx があれば、UTF-8 で読み込む
>>   そうでなくて、旧 .mew-summary があれば ctext で読み込む
>>- Summary モードを書き出すとき:
>>   真 .mew-summary-xxx へ UTF-8 で書き込む
>>
>>- ロシア語が変な場合は、一回 s + all。
>
> CTEXT も UTF-8 もユーザーで選択できるならありがたいです。

もしやるなら、

(defvar mew-cs-summary-cache-file 'utf-8-unix)

みたいに、boundp でそれ以前それ以降を切り分けられると、各種寄生
虫作成者はうれしいです。

> あと JIS のエスケープシーケンスにくるまれた携帯メールの絵文字は
> UTF-8 にエンコードするとエラーになるので,
> そのあたり,いままでの受信 Summary の再保存で不具合が出る可能性が
> ありそうですね。

しかし、これはまずそうですね。

....

>>キリル文字の char-width って 1 ですか? 2 ですか?
>>
>>(string-width "キリル文字")
>>or
>>(char-width ?キリル文字)
>>
>>でわかります。なにもいじっていなければ、通常日本人向けの LANG か
>>ら立ち上げた Emacs23 以降だと 2 になると思われます。
>
> おっしゃるとおり,2 になりますね。
>
>>2 だとすると、UTF-8 にして見た目が半角の文字になったとしても、結
>>局は subject が予想の半分しか表示されず、かつ summary がめちゃく
>>ちゃになるような気がします。

やっぱり、安田さんの用途だったら、

(set-fontset-font
 (face-attribute 'default :fontset)
 'cyrillic-iso8859-5
 (font-spec :family "DejaVu Sans Mono"))

(set-char-table-range char-width-table '(#x00a0 . #x00a0) 1)
(set-char-table-range char-width-table '(#x00a7 . #x00a7) 1)
(set-char-table-range char-width-table '(#x00ad . #x00ad) 1)
(set-char-table-range char-width-table '(#x0401 . #x040c) 1)
(set-char-table-range char-width-table '(#x040e . #x044f) 1)
(set-char-table-range char-width-table '(#x0451 . #x045c) 1)
(set-char-table-range char-width-table '(#x045e . #x045f) 1)
(set-char-table-range char-width-table '(#x2116 . #x2116) 1)

とかして、強制的に cyrillic-iso8859-5 だったら半角?のフォントで、
char-width が 1 にしちゃった方が幸せになるような気がします。もし、
変わらなかったら、set-fontset-font に 'prepend 付ければよいかも。

# 1 にする UNICODE のレンジは、今、でっち上げたのでもしかすると
# 間違っているかもしれません。

> だんだん,Emacs-23 の CTEXT テキスト表示の際のフォント選択の問題に
> 過ぎないような気がしてきました。

うーーん、全然わかりません。

> かつての Emacs 21 & Mule-UCS の場合,
> un-define-change-charset-order
> によって JIS より mule-unicode-xxxx の優先度を高くするなどの
> 指定ができたので,このような問題をユーザーで回避できただろうと思うの
> ですが,Emacs 22 以降だとだめなのでしょうか。

自分は、Mule-UCS だと
unicode-basic-translation-charset-order-list を設定していました。
Emacs22 without Mule-UCS だと
utf-translate-cjk-set-unicode-range を使って、文字範囲を cjk じゃ
ないように設定すれば良かったんじゃないかな?

Emacs23 は思いっきり変わったのでよくわからないまま、w3m と Emacs
でいろいろと文字幅が一緒になるように、前述の方法(もっとごちゃご
ちゃだけど) で調整しています。

-- 
白井秀行 (mailto:shirai.hideyuki at example.com)


Mew-dist メーリングリストの案内