[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 メーリングリストの案内