OSとファイル名の関係に気をつけよう
プラットフォーム間の問題
InDesignはクロスプラットフォームを謳い文句にしているアプリケーションです。実際、操作性はWindows版とMacintosh版でほとんど同じ、出来上がるデータも同じでWindows版で作ったデータをMacintosh版で開いてもデータが変わってしまうことはありません。
さらにOpenTypeフォントだけを使っていれば、フォントの違いに悩まされることもありません。プラットフォームの違いが大きな壁となってきた従来のDTPを考えると大きな進歩と言えるでしょう。これも、OSに依存しないデータ管理を進めてきたAdobeの努力のたまものと言えるのかもしれません。
ただし、OSの違いによって起きる問題が完全になくなったわけではありません。その違いを把握していないと大きなトラブルになる可能性もあるのです。中でも注意しなければならないのがファイル名の問題ではないでしょうか。
パソコンでは、データは基本的にハードディスクで保管・管理されます。データをどのように保管するか、その管理方法を決めるのがファイルシステムです。Max OS Xでは一般にHFS+、WindowsではNTFSやFATといったファイルシステムが使われています。
管理方法であるファイルシステムが変われば、ファイルの最大容量やファイル名の規則も違ってきます。Mac OS Xで使うHFS+は、最大で約16テラバイトまでのファイルを扱うことができ(理論的には16エクサバイトまで(エクサバイトは約100万テラバイト))、ファイル名は最大255字までのユニコード文字が使えます。
一方、Windows XPで使うNTFSは最大で16エクサバイトまでのファイルを扱え、ファイル名は260字(絶対パスを含む)まで、やはりユニコードが使えます。
こう比べてみると、Mac OS X(HFS+)とWindows XP(NTFS)ではほとんど大きな違いがないように思われるかもしれません。しかし、実際には重大なトラブルが起きかねない違いがあるのです。
ユニコードの正規化形式
文字コードは、文字セットとその実装方法を定めたものです。ユニコードの場合、実装方法がひとつではありません。エンコーディング(符号化)の方式だけでも、UTF-8、UTF-16などいくつもあるのです。UTF-8は8bitの文字列を複数使って文字を表す方式、UTF-16は、16bitの文字列を1個ないし2個使って表す方式です。ちなみに16bitを2個使って表すことをサロゲートペアと言います。
さらに、エンコーディング方式以外にも違いがあります。そのひとつが正規化形式です。ユニコードでは、複数の文字を組み合わせてひとつの文字を表現する結合文字という仕組みが用意されています。
たとえば、「が」という文字を表現することを考えてみましょう。ユニコードでは「が」という文字に「U+304C」という番号が割り当てられています。これはシフトJISなど他の文字コードと同じですが、そのほかに「か」(U+304B)と「゛」(U+3099)を合成することでも「が」を表現できるようになっているのです。この場合、「か」を基底文字、「゛」を結合文字と言います。
このように同じ文字を表現するのにいくつものやり方があるため、混乱しないように正規化形式という形でルール化されているわけです。ユニコードの正規化形式は4種類あります。1つに合成されている「が」は正規化形式C(NFC)、「か」+「゛」のように分解されているものを正規化形式D(NFD)と呼んでいます。
Windowsをはじめとする多くのOSでは、ファイル名にNFCが採用されており、濁音や半濁音は1つの合成済みの文字で表されます。ところがMac OS XではNFDが使われているのです。もちろん、このままではファイルのやり取りなどファイル名を他のシステムに受け渡すような場合に困るので、Mac OS XにはNFCに変換する仕組みも用意されていて、問題が起きないように配慮されています。
ところが、それでもアプリケーションによっては問題が発生するのです。たとえば、Mac OS X上でInDesignに画像を貼り込む作業を考えてみましょう。MacOS XはNFDを使うため、画像のファイル名に濁音や半濁音が使われていた場合、基底文字+濁音や半濁音という形で記述されています。InDesignはリンクとして画像を取り込む際にファイル名を記録しますが、それはこのNFDの形で記録されるわけです。
次に、InDesignファイルと画像ファイルをWindowsに持ってきて開いてみます。WindowsではNFCを使うため、ファイルを移動する際にファイル名の濁音や半濁音は自動的に1文字の形に変換されます。
ところが、InDesignの内部に保持されているファイル名はNFDのままです。そのため、このままだと、濁音や半濁音付きの文字が基底文字+結合文字の2文字として認識されてしまうのです。しかも、NFDはWindowsでサポートされていないので結合文字の部分は文字化けしてしまいます。
実際、Mac OS X上で画像を貼り込んだInDesignデータをWindowsで開くと、画像のファイル名によっては文字化けし、リンクが切れてしまうというトラブルが起きます。そうなると、あらためてリンクし直すしかありません(ファイル名だけが問題なので再リンクで正しくリンクし直せば大丈夫)。
この問題を解決するには、クロスプラットフォームで作業する場合はファイル名に濁音や半濁音を使わないというルールを守るしかないでしょう。
また、Mac OS Xはロングファイル名を使うことができますが、ロングファイル名に完全に対応しているアプリケーションばかりではありません。Mac OS Xでロングファイル名を使っていた場合、ファイル名を上書き保存した場合などでトラブルが起こる可能性もあるので、ロングファイル名はできるだけ使わないほうがいいでしょう。
現在のところ、ファイル名によってトラブルが起きる可能性は少なくありません。結局のところ、ファイル名は昔ながらの8.3形式(半角8字+拡張子3字)でASCII文字だけを使うのが一番安全だということになるようです。
(田村 2007.7.2初出)
(田村 2016.5.31更新)