[Macemacsjp-users 884] Re: clipboad-coding-system

アーカイブの一覧に戻る

Nozomu Ando nand****@mac*****
2006年 1月 7日 (土) 21:37:54 JST


Seiji Zenitani <zenit****@gmail*****> writes:
> 1)表示の問題
> -DUSE_ATSUI で解決するはず。

すみません、-DUSE_ATSUI であっても、fonset の設定次第でした。
-DUSE_ATSUI は直接関係ありません。

charset を意図通りにできれば、表示も意図通りになると思いますので、
考えなくても良いかと思います。


> 2)sjis/euc での保存の問題
> 原因は、例えば UTF-8 のギリシャ文字が
> jisx0208 ではなく、iso-8859-7 にマッピングされること。
> 日本語環境での便を考えると該当文字を JIS 文字に変換すると良い。


selection-coding-system をiso-2022-jp にする、という方法もありました。


2006-01-06 の CVS HEAD / Carbon の -q 起動後
(set-language-environment "Japanese") 実行後の振舞に関してまとめます。
クリップボードに UTF-16 のデータが存在する、という前提で、yank した時の
振舞です (コード変換に OS 由来のルーチンも使っているからこうなるのであって、
Carbon 版特有の振舞と思います):


selection-coding-system == utf-8 の場合:
バックスラッシュ (U+005c) が ascii のバックスラッシュ (0x5c) に、
円記号 (U+00A5) が latin-iso8859-1 の円記号 (0x25 (0xa5)) に変換される。
ギリシャ、キリル文字、円囲み数字は mule-unicode-0100-24ff になる。


selection-coding-system == sjis の場合:
バックスラッシュ (U+005c) が jisx0208 のバックスラッシュ (0x2140) に、
円記号 (U+00A5) が ascii のバックスラッシュ (0x5c) に変換される。
ギリシャ、キリル文字は jisx0208 となる
円囲み数字は mule-unicode-0100-24ff になる (sjis の範囲外)

ただし、クリップボードに sjis に対応付けられない文字が1文字でも存在する
と、(文字列全体を sjis に変換しようとして失敗するので、)
selection-coding-system を utf-8 にした時と同じ結果になる。


selection-coding-system == iso-2022-jp の場合:
バックスラッシュ (U+005c) が ascii のバックスラッシュ (0x5c) に、
円記号 (U+00A5) が latin-jisx0201 の円記号 (0x5c) に変換される。
ギリシャ、キリル文字は jisx0208 となる。
円囲み数字は jisx0208 になる (ただし code point は MacJapanese
のそれであり、Windows や jisx0213 のそれとは異なる)

ただし、クリップボードに iso-2022-jp に対応付けられない文字が1文字でも
存在すると、selection-coding-system を utf-8 にした時と同じ結果になる。


なお、Emacs で kill して他のアプリケーションで paste した場合の振舞です
が、特筆すべきは、jisx0208 の円囲み数字がすべて <?> (U+FFFD) になります。
unicode への変換テーブルに存在しないためです。
[Macemacsjp-users 870] のように変換テーブル書き換えれば大丈夫ですが...


ええと、個人的には、自分でビルドしたバイナリで、デフォルトの
selection-coding-system == mac-roman (ほぼ utf-8 と同じ振舞のはず)
で不便を感じていないので、とくにどうすべき、ということに関しては私は何も言
うことはありません。済みません。
---
Nozomu Ando



Macemacsjp-users メーリングリストの案内
アーカイブの一覧に戻る