2008/08/28
使ったテキストは以下の通りというか、思い切ってここに生で貼ってしまったりするてすと。
もっとも、Webブラウザ上では全てを表現できませんが。
もっとも、Webブラウザ上では全てを表現できませんが。
Å u+212b
Å u+0041/030a
Å u+00c5
ϓ u+03d3
ϓ u+03d2/0301
Ύ u+03a5/0301
Ύ u+038e
ϔ u+03d4
ϔ u+03d2/0308
入力はWindows XP+MS-IME2003(文字パレット)+メモ帳でやってます。メモ帳最強。
で、以下が「テキストエディット」 「mi」でそれぞれで開いた結果と、「テキストエディット」→「mi」にコピー&ペーストした結果です。
「mi」のほうは、ファイル開いた時点でNGな箇所が。
コピペはコピペで、また違う結果に。
もうあれです。
「OS X上の正規化表現文字は、扱いに気をつけよう」
ということでよさげな気がします、はい。
メリットなどについても、中の人しかわからん気がしてきました。
というか検索して出てくるblogでの話題は「なんでこんな仕様なんだ」みたいなのしかないので、少なくとも日本の開発系の人には、少数派であるOS Xの仕様はメリットではないような。
すべて「まー、OS Xは『UTF-8-MAC』だし」というひと言で片づけた方が早そうです。
もっとも、世の中的には超少数派なので、結局扱いには困ってしまうわけですが。LinuxですらUTF-8+NFCみたいですし。

コメント
拝見しております。
> ソフト自体の仕様、という点ではプラットフォームを問わない話のはずなので
http://tama-san.com/2006.html
2006/11/19 の記事で、Mac版とWin版の違いを扱ったことがあります(説明が下手で分かりづらいですけど…)。とくに Mac 版では、明確に Mac OS 固有の機能を利用した仕様が存在します(それが良いかどうかはともかく)。
「プラットフォームを問わない話」というのは、InDesign の機能なら確かにそうですね。これは完全に同一である必要があります。でも、OSと関わる箇所では、OSにあわせて仕様を変えるのがマルチプラットフォームのソフトウェア開発では当然かと思います。
ペースト時に Unicode正規化をするのは、結合文字列だらけの OSX 環境の中で、結合文字列を正常に表示できない InDesign がせざるをえなかった苦肉の策でしょう。苦肉であるのは、CS1/CS2/CS3 で正規化の仕様が次々に変わっていった試行錯誤がそれを物語っています。
そもそも「クリップボード文字列の Unicode 正規化をする API」というのは、まったく聞いたことがありません。私が知らないだけかもしれませんが、ペーストというのは、クリップボードの中身をソフトウェアが自分で取りに行くものですから、正規化したかったら取得した文字列を自分で処理すればいいだけなので、そのような API があるとはちょっと考えにくいです。
2008/08/30 02:29 by ものかの URL 編集
コメントありがとうございます。
まずInDesignのほうですが、先日、http://dslabo.blog4.fc2.com/blog-entry-1277.html のほうでも検証してますが、そちらはご覧いただいてますでしょうか。
ソフト自体の仕様、という点ではプラットフォームを問わない話のはずなので、挙動が異なる点がソフト独自の仕様とは言えないのではないかとも考えます(プラットフォーム毎に仕様が違う、と言われるとそれまでですが)。
「mi」についてと、表現についてはご指摘ありがとうございます。
前者については、β版で本来の仕様かどうかが明確ではない(2.1.6で試したら互換漢字もファイルから表示できなかったために2.1.8b4を利用しました)ため、それ以上の言及は避けています。
後者については肝に銘じておきます。
2008/08/30 00:26 by あさうす URL 編集
それを確信したのは、シフトJISエディタ(Jedit4)から MacJapanese の外字(Osaka外字)をペーストしてみた時です。
この外字の中には、Unicode で結合文字列としてしか表現できない文字があります。OSX のマッピングでは、MacJapanese → Unicode系のエンコーディング変換で結合文字列になります。
しかし、InDesign ではその文字が CID 文字に変換されます。OSX では現在このようなマッピングはありえませんから、やはりこれは独自処理をしていると考えるのが妥当かと思います。
2008/08/29 06:04 by ものかの URL 編集
mi 2.1.8b4 は「結合文字列を1文字に表示できない」んです。そのため、ペーストされた文字列を「mi が NFC に正規化してから表示している」と考えて、間違いないと思います。
つまり、OSX の仕様ではなく、mi の仕様ということです。
それから、互換漢字などを「正規化表現文字」と呼ぶのは、適切ではないと思います。Unicode正規化で別の文字に変わってしまう文字は、むしろ「非正規化表現文字」と呼ぶべきではないでしょうか?
2008/08/29 04:58 by ものかの URL 編集