[Mew-dist 17334] Re: (un-supple-enable 'windows) in Mule-ucs (was: Re: b121)

NAKATA Masanori mnakata at example.com
2001年 5月 11日 (金) 20:38:42 JST


中田です。

>>> 発信 : shirai at example.com(Hideyuki SHIRAI (白井秀行)) 様
>>> 日時 : Fri, 11 May 2001 13:32:31 +0900

白井> 遅ればせながら、しかも P.S. になのですが、
...
白井>    o... Supplemental translations.
...
白井> という機能があります。(See Mule-ucs/lisp/README.Unicode)

情報ありがとうございます。
下の方まで読んでませんでした。(_O_)


白井> 試しに、
白井> (require 'un-supple)
白井> (un-supple-enable 'windows)
白井> として、手持ちの MS-Word を見たら、
中田> とくに "−", "〜" は、全角で日付,時刻を書いてあるケースで効果
中田> 絶大です。
白井> "−" が "?" から "−" になるのは確認出来ました。

"〜" も確認できました。Cp932 (MS932) についてはこのやりかた
が良さそうですね。

しかし、これを調べているうちに Cp932 で問題にならないはず
の "±", "μ" が化けることに気づきました。
    "±" → ^[,A1
    "μ" → ^[,Fl
のように表示されてしまいます。いろいろ試しているうちに、下記
のようなことが判明しました。
    "±" → utf-8 で保存 → utf-8 で読込 → 半角 "±"
    "μ" → utf-8 で保存 → utf-8 で読込 → 半角 "□"

そこで保存された utf-8 に問題がないか hexdump -C
(FreeBSD-4.0) してみました。環境は
    Emacs-20.7/Mule-4.0 + Mule-UCS-0.84 で、(require'un-define)
しました。lv-4.49.4 で utf-8 出力したものと一致しました。
参考までに utf-16, iso-2022-jp(-2) も示します。
    ------------------------------------------------------------
           | utf-8 保存 | utf-16 保存 | iso-2022-jp(-2) 保存
    -------+------------+-------------+-------------------------
    "±"   |    c2 b1   | fe ff 00 b1 | 1b 24 42 21 5e 1b 28 42
    "μ"   |    ce bc   | fe ff 03 bc | 1b 24 42 26 4c 1b 28 42
    半"±" |    c2 b1   | fe ff 00 b1 | 1b 2e 41 1b 4e 31
    半"μ" |    ce bc   | fe ff 03 bc | 1b 2e 46 1b 4e 6c
    ------------------------------------------------------------
Mule-UCS-0.84 の ujix0208.el では
       (?± . "0x00B1") ;; PLUS-MINUS SIGN
       (?μ . "0x03BC") ;; GREEK SMALL LETTER MU
と書かれていますので、期待に沿いそうです。

私は半角 "±" というものを知らなかったのですが、
    Unicode U+00b1 → iso-2022-jp(-2)
方向の変換実装がそのようになっているように解釈しました。

ということは、下記のどれかが邪魔になっているのでしょうか。
kterm に表示されたものを X-window 経由でペーストしたので
不正確ですが。uiso8859-[789].el の ?1 に見えるところは kterm 
で半角"±"が表示されていました。(dump するとそれぞれ別コード)。
    % cd reldata ; grep -i 00b1 *.el
    u-cns-1.el:         (?   . "0x00B1") ; PLUS-MINUS SIGN
    ubig5.el:           (?"4 . "0x00B1") ;; PLUS-MINUS SIGN
    ugb2312.el:         (?   . "0x00B1") ;; PLUS-MINUS SIGN
    uiso8859-15.el:     (?^[-b1 . "0x00B1")   ; PLUS-MINUS SIGN
    uiso8859-7.el:      (?1  . "0x00B1") ;; PLUS-MINUS SIGN
    uiso8859-8.el:      (?1  . "0x00B1") ;; PLUS-MINUS SIGN
    uiso8859-9.el:      (?1  . "0x00B1") ;; PLUS-MINUS SIGN
    ujisx0208.el:       (?± . "0x00B1") ;; PLUS-MINUS SIGN
    uksc5601.el:        (?   . "0x00B1") ; PLUS-MINUS SIGN

全般的にこういうことが発生しうるのかもしれません。
難しいもののようですね。


白井> lisp/reldata/usupple.el の unicode-assoc-for-windows で変換
白井> table が定義されています。
白井> なお、これを使ったために起る弊害などはわからないです。^^;;;
...
白井> とかなってしまうのは確認できたので、使うときはなにかと注意が必要
白井> だと思います。

変換テーブルが複数あるわけなので、根本的な解決は難しいのでしょうね。


白井> ## (un-supple-disable 'windows) があればいいな。

そうですね。誤って別のコードを disable しても大丈夫でしょうか。(^_^;)

-----  中田 成憲  -----



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