Macintosh のフォントフォーマット

Mac ではフォントをリソースに格納します。リソースの格納にはリソースフォークを使用します (これに該当するデータ表現は Unix にはありません) が、現在 (Mac OS X) では、データフォークに格納することもあります。

Apple (および Adobe) は Mac のフォーマットに関するいくつかの文書を提供しています:

私はデータフォークリソースファイルの説明がどこにあるか知りません。私は自分で実験して調べましたが、ほとんどリソースフォークリソースファイルと同じで、違いはフォントの最初の 16 バイトを繰り返すのではなくて 16 バイト分のゼロを繰り返すことだけのようです。今のところ、データフォークリソースファイル内の sfnt (および FOND) リソース以外のものが含まれているのを見たことがありません (しばしば .dfont ファイルと呼ばれます)。

FontForge は、CJK 符号化方式のための古い‘fbit’フォントフォーマットをサポートしていません (今は Mac でもサポートしていないので、これが問題となることはないでしょう)。

‘sfnt’リソースにマルチバイトエンコーディング (CJK または Unicode) のフォントが含まれている場合、‘FOND’にはすべての文字に対応する項目が含まれていないことになります。‘sfnt’には (常に?) マルチバイトエンコーディングのほかに MacRoman エンコーディングが含まれ、‘FOND’にはフォントのそのサブセットに関する情報のみが含まれます。(これは私が実験により見つけたのもので、これに関する文書はまだ見たことがありません)。

現在のところマルチバイトエンコーディングのビットマップフォントは‘bloc’および‘bdat’テーブルの sfnt (TrueType) リソースに格納されています。このような場合には、リソースファイルにはダミーの‘NFNT’リソースが、それぞれにたいして 1 つずつ含まれています。 各リソースの長さは 26 バイトで (これは、FontRec 構造体が含まれているがデータテーブルは含まれていないことを示します) rowWords が 0 であるというフラグが立っています。 (これは私が実験により見つけたのもので、これに関する文書はまだ見たことがありません)。

‘sfnt’リソースがビットマップのみを含んでいる (かつ、グリフアウトラインを含まない) 場合、それは‘sbit’と呼ばれる場合がたまにあります。

Mac OS X におけるリソースフォーク

ファイル“foo”のリソースフォークの Unix ファイル名は“foo/rsrc”です。(これは人に聞いた話で実際にそうであるようです。私はこれに関する文書をまだ見たことがありません)