Seiji Zenitani
zenit****@tkg*****
2005年 11月 20日 (日) 06:32:02 JST
おはようございます。銭谷です。 On 2005/11/20, at 1:27, irodo****@irodo***** wrote: > 本庄です。 > > utf-8m ですが、UFS ボリューム上ではうまく動作し > ないことがわかりました > ので、動作するようエンコード側(?)の処理を > 追加してみました。 > patch を添付します。elisp は見よう見まねで書いて > いるのでかなりいい加減 > です。より良い実装があったら修正してください。 > pre-write-conversion を使った逆変換は utf-8m 作成時 (mac-utf のさらに前) に 当然考えたんですけど、いくつかの理由で 途中でやめてしまいました。 1. テキストファイルをこのエンコーディングで保存す ると が→か+” に分解されるなど、バッファ内の表示 が崩れてしまう。 これは本庄さんのバージョンでも発現します。 2. C-xC-f でファイルを開くとき、ミニバッファ中で スペースキーでファイル名を補完しようとすると、 エラーを起こす。 本庄さんの修正バージョンではエラーは出ませんが、 アクセント記号を含むフォルダ(例:étoir)で 補完文字列にゴミが入ってしまいます。 このうち、1. は、ファイル名としての利用に 問題がなければ気にしなくて良いかもしれません。 2. は、境界処理の工夫などで なんとか対処できないものでしょうか? > 以下は emacs とファイルシステムとの関係を簡単に > まとめたものです。興味 > のない方は飛ばしてください。 > > > ********************************************************************** > HFS+ の環境ではファイルシステム側で NFC/NFD の差 > を吸収してくれるようで > すが、UFS ではそのような変換が行われないため、 > 現状の utf-8m では以下の > ような状況が起きていると考えられます。 > UFS で起こっている状況は NFS やその他のファイル > システムでも起こる可能 > 性があります。 > > 開く > 1. ファイル名を読む (NFD) > 2. utf-8m が UTF-8 NFC に変換する (NFD -> NFC) > 3. ファイルを要求する > HFS+ の場合 > 4. システムがファイル名を変換する (NFC -> NFD) > 5. ファイルが開く > UFS の場合 > 4. ファイルがみつからないためエラー > > 保存する > 1. ファイル名を作成する (NFC) > 2. ファイルを保存する > HFS+ の場合 > 3. システムがファイル名を変換する (NFC -> NFD) > 4. ファイルが保存される (NFD) > UFS の場合 > 3. ファイルが保存される (NFC) > ********************************************************************** > 「保存」の振る舞いは上記のとおりです。 「開く」ときの振る舞いは僕もよくわかっていませ んが、 上記の説明で ・UFS ボリューム上で utf-8(m)-NFC のファイルを作成す ると 今度は「開く」ことができる。 ・UFS 上では、同じディレクトリ内に NFC と NFD のファイルを作ってしまう といった現象も説明できると思います。 -- 銭谷誠司 zenit****@tkg*****