InDesignに標準テキストをペーストしたときの挙動と謎の整理
- InDesign CS、CS2、CS3に標準テキストをペーストしたときの振る舞いについて、簡単にまとめてみた。
- 下図の左端の列が、オリジナルのテキスト。これを標準テキスト・モードのJedit Xでコピーし、InDesign CS、CS2、CS3にペーストした結果が2列目以降。ペースト後に符号位置が変わっている場合、赤字で示した。また、字形が変わっている場合、黄色地で示した。
- 網羅的に検証したわけではないが、今回のサンプルから得られた結果を見た限りでは、CSはNFKC (Normalization Form KC)で正規化し、CS2は正規化を行わず、CS3はNFC (Normalization Form C)で正規化しているようだ。
- OpenTypeフォントはグリフ置換用のテーブルを内蔵しているが、そのテーブルは、図の1行目(aと結合グレーブ・アクセント)のような最も基本的な合成についてはカバーしておらず、この合成(グリフ置換)処理はOS任せとなっている。その結果、InDesignのようにプラットフォーム独立であることを求められるアプリケーションでは、このような合成処理を(Mac OS X版であればAATのライブラリを用いることなく)独自実装しなければならない。しかし、独自実装は容易ではない。そこで、入り口のところで正規化して、結合文字列は合成済み文字に置換してしまおう……という考え方は、わかる気がする。
- しかし、CSはなぜNFKCを使うのだろう。乱暴に言えば、NFKCというのは「意味が同じなら見た目が違っても統一する」という正規化であって、検索やソートなどの用途を想定しているものと思われる。どう考えても、組版アプリケーションで使うようなものではない。なぜ、より適切なNFCを使わないのだろう(実際にはNFCにも問題があるので、「互換漢字を例外としたNFC」が望ましいと思うが)。