TigerのリッチテキストとLeopardのリッチテキスト

  • 前々回、前回の補足。Mac OS X 10.5 Leopardでは、リッチテキストの文字セットが変更され、これが文字化けの原因のひとつとなっているようだ。と思うのだが、わたしはリッチテキストの仕様については何も知らないので、今回のエントリの内容には怪しい部分があるかもしれない。
  • Tiger上でテキストエディットやJedit Xを用いて作成したリッチテキスト書類では、文字セットは「MacJapanese + Unicode」になる。一方Leopardでは、リッチテキスト書類の文字セットは「CP932 + Unicode」になる。



  • 上図はSJIS to Unicodeマッピングを示しているが、逆にUnicode to CP932、Unicode to MacJapaneseだと下図のようになる。要するに、MacJapaneseの場合、「Win側」の文字については単純に「マッピングなし」になるが、CP932の場合、「Mac側」の文字も「Win側」と同じと見なされて2対1マッピングとなる。というのがCP932的に正しいのかどうかは知らないが、少なくとも「Mac OS XにおけるCP932の実装」では、そうなっている。


  • そのようなわけで、Tigerの(「MacJapanese + Unicode」の)リッチテキスト書類では、たとえばU+301C WAVE DASHはMacJapaneseの0x8160に変換され、U+FF5E FULLWIDTH TILDEはそのままUnicodeの符号位置で、異なる文字として保存される。これに対してLeopardの(「CP932 + Unicode」の)リッチテキスト書類では、U+301C WAVE DASHもU+FF5E FULLWIDTH TILDEもCP932の0x8160に変換され、違いがなくなってしまう。ちなみにJedit Xでは設定によってFULLWIDTH TILDEは自動的にWAVE DASHに変換されるが、下図に用いた書類の作成時には、もちろんこのオプションはオフにしてある。