高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先

Technote 1159

Data Fork Font Support in Mac OS 8.5


目次

データフォークフォントの由来

Mac OS 8.5 にある機能

Mac OS 8.5 にはない機能

互換性について

まとめ

Macintosh では従来、TrueType フォントはスーツケースファイルの 'sfnt' リソースとして格納されてきました。しかし、Mac OS 8.5 のリリースでこれが変更になりました。このテクニカルノートはアップルが Mac OS 8.5 に新しく追加した、データフォークに格納する TrueType フォントおよび OpenType フォントのサポートについて説明します。考えられる互換性の問題とその対処方法についても触れます。


データフォークフォントの由来

TrueType フォント

Windows では、TrueType は「.TTF」という拡張子を持つデータフォークファイル (まだ 'sfnt' 形式のデータ構造) に保存されます。これまでは、Macintosh でこのようなフォントを使うには、ユーザはリソースベースのスーツケースにフォントをパッケージし直すユーティリティ (FontClerkTTConverter など) を使う必要がありました。しかし Mac OS 8.5 ではこれが不要になりました。

Windows は、拡張子が「.TTC (TrueType Collections)」の集合ファイルもサポートします。これは単純なディレクトリ構造に編成した複数の 'sfnt' フォント構造を含むものです。個々のフォントが互いに完全なテーブルを共有します。この種のフォントも従来 Macintosh では利用できませんでした。

OpenType フォント

OpenType は新しいフォントの命名法とパッケージ法を表しています。アドビはマイクロソフトと共同で、データフォークベースの 'sfnt' 構造を持つフォントファイルに PostScript フォントデータを格納する方法を定義しました。グリフデータそのものは CCF (Compact Font Format) と呼ばれる新形式で保存されます。こうした構造が意味するのは、これらのフォントが、該当プラットフォームで、TrueType フォントと同じように動作するということです。この種のフォントも Macintosh でも動作するよう配慮がなされています。

Macintosh でデータフォークフォントをサポートする主な目標は、新しい OpenType フォントをサポートすることと、Windows の TrueType フォントを直接サポートすることでした。


Back to top

Mac OS 8.5 にある機能

データフォークフォントファイルのサポートは Mac OS 8.5 のさまざまな層に追加されました。各層がそれぞれ補完的な役割を担っています。

The Finder

Mac OS 8.5 の Finder は、データフォークフォントファイルの発見と自動切替 (autorouting) をサポートするよう強化されました。2 種類のデータフォークファイルがサポートされています。単体フォント (.TTF と.OTF) と集合フォント (.TTC) です。“インターネット設定”ではそれぞれファイルタイプの 'sfnt' と 'ttcf' に割り当てられています。ファイルタイプの割り当ては、フォントが最初にシステムに導入されたときに行われます。ファイルがシステムフォルダにドロップされると、Finder は適切なアイコンを割り当て、フォントフォルダに自動的に移動します。

現在のところ、データフォークフォントのダブルクリックサポートはありません。おおむね単体 TrueType ファイル (スーツケースではなく) と同じ扱いになり、名前を変更したり、開いたりすることはできません。

The QuickDraw Font Manager

フォントマネージャは 'FOND' リソースを伴わないフォントを扱うことができません。'FOND' リソースはフォントのアクセスと処理の基盤となるものです。データフォークフォントには 'FOND' リソースが付属しないため、Mac OS 8.5 の QuickDraw フォントマネージャから直接利用することはできません。データフォークフォントに 'FOND' を接続する方法はありますが、適切な 'FOND' リソースの合成機能のサポートは現在のところ Mac OS にはありません。

'FOND' の接続には、もうひとつのリソース、フォントエイリアスリソース ('afnt') の作成が必要です。フォントマネージャは、描画に使用する、フォント内で利用可能なビットマップサイズやアウトラインフォントの選択で、'FOND' の FAT (Font Association Table) を使います。FAT 内の各エントリは、ビットマップサイズを表すフィールドがあり、これが 0 だとアウトラインフォント ('sfnt' リソース) を表します。リソースマネージャで、そのエントリのリソース ID を指定して適切なタイプのリソースにアクセスします。

Mac OS 8.5 では、アップルはこのサイズフィールドに -1 を指定することで、アウトラインフォントがデータフォークに格納されていることを表すよう定義しました。FAT エントリのリソース ID は新しいリソース、'afnt' の ID です。'afnt' リソースはエイリアスレコードだけを持つもので、次の構造になります。


汎用エイリアスリソース
ユーザビット列

 

プライベート
エイリアス データ

 

付加データ

単一フォント (.TTF) の 'afnt'
0x00000000

 

プライベート
エイリア スデータ

 

コレクション (.TTC) の
メンバーの 'afnt'
0x00000001

 

プライベート
エイリアス データ

 

32bitファイル
オフセット

アップルは現在、ユーザビット列の全ビットを予約しており、最下位ビットだけを定義しています。

  1. ユーザビット列の値がすべてゼロだと、単純な単体フォントを含むデータフォークを表します。エイリアスデータはエイリアスマネージャに渡して解決してもらいます。解決後は、目的のフォントはそのファイルのオフセットのゼロから始まるようになります。
  2. ユーザビット列を含むワードの最下位バイトが 1 だと、リソース内のプライベートエイリアスデータの後ろにデータフォークファイルへのオフセットが続きます。これは TrueType 集合ファイルでそのメンバーを特定するために使われます。このように 'afnt' リソースは単一のフォントを表現するものです。

フォント管理ユーティリティを使って、'FOND' リソースと対応する 'afnt' リソースをフォントマネージャに見えるようにするだけで、フォントデータをアクティブにすることができます。ファイルのデータそのものはフォントフォルダの外にあってもかまいません。'afnt' リソースに入れるエイリアスの作成では、「最小限」のエイリアスは使用しないでください。一番よいのは、前述の一時ファイル (スーツケースを作成した場合はスーツケースファイル) からの相対エイリアスです。フォントフォルダ以外の場所にデータフォークファイルを置くと、FCB の節約になります。新しいフォントシステムは必要なときだけデータフォークファイルを開くからです。ネットワークボリューム上のデータフォークファイルの参照は可能ですが、ネットワーク接続が途中で切断されるような場合などリスクもあります。CD-ROM 上のデータフォークファイルもこのような手順で参照することができます。

アップルタイプサービス

Mac OS 8.5 でアップルは、Unicode テキストのレイアウトと描画をサポートする新しい API、ATSUI (Apple Text Services for Unicode Imaging) を導入しました。データフォークフォントの直接サポートはこのソフトウェアの最下位レベルに位置します。ATSUI は 'FOND' リソースに依存しないため、フォントデータの即時利用が可能です。もちろん ATSUI は、'afnt' でアクティブになったフォントも利用できます。多くの Windows TrueType フォント、すべての OpenType フォントは Unicode 専用になっているため、ATSUI での利用に適しています。


Back to top

Mac OS 8.5 にはない機能

Mac OS 8.5 リリース時点ではまだ利用できない「機能」がいくつかあります。

  1. 上記で説明したように、'FOND' リソースの自動合成機能は OS には実装されておらず、フォントマネージャから即座にデータフォークフォントを利用することはできません。'afnt' 機構を利用してこれらのフォントをアクティブにするサードパーティのフォントユーティリティが提供されると思います。アップルは、Mac OS の将来のリリースに、ユーティリティのデベロッパが、システムに 'FOND' 合成機能があるかどうかを検出するための gestalt セレクタを追加する予定です (機能があればその処理をスキップできるようにするため)。
  2. 関連事項として、QuickDraw Text は、Macintosh エンコーディングを使って文字をグリフにマッピングできることを期待します。Windows フォントに Mac の 'cmap' テーブルがないと、フォントがアクティブになっても、マッピングは何も行われません。このため、FOND の合成のほか、Macintosh の 'cmap' 合成も必要になります。
  3. Finder にはデータフォークフォントファイルを見る機能がありません。「情報を見る」で調べても多くはわかりません。アップルは、将来 Finder を改良して、独立の TrueType フォントと同様、データフォークフォントの表示見本も見られるようにする予定です。できれば.TTC (TrueType Collection) ファイルについても同様です。

Back to top

互換性について

データフォークフォントの使用中には、'sfnt' リソースを直接取得しようとするソフトウェアは、リソースハンドルフィールドが nil になり、驚くことでしょう。ここでフィールドが nil だったときに適切に対処できないコードは問題を生じます。将来データフォークフォントファイルからアウトラインを取得するサポートも検討されています。'FOND' リソースを解析するコードは、FAT (Font Association Table) エントリに負のサイズがあることを発見して驚くでしょう。このようなソフトウェアはリソースが壊れていると判断するかもしれません。負のサイズは将来的に何らかの目的で使うことが予定されています。

Macintosh の文字マッピングの合成機能が実装されるまでは、たとえアクティブになっても、Unicode 専用フォントは QuickDraw Text でうまく利用できません。


Back to top

まとめ

このテクニカルノートにまとめたように、Mac OS 8.5 にはデータフォークフォントについて初期的なサポートが追加されました。この機能拡張を活用してもらえるよう期待します。


参考文献


Back to top


更新日: 1999 年 3 月 22 日