6.

TTC / OTC(.ttc / .otc)|複数フォントを 1 ファイルにまとめる CJK 必須技術

編集
この記事の要点
  • TTC(TrueType Collection)/ OTC(OpenType Collection)は、複数のフォントを 1 ファイルにまとめる コンテナ形式。1996 年に Apple が CJK フォント用に導入
  • 拡張子は .ttc(TrueType ベース)/ .otc(OpenType / CFF ベース)。内部に複数の SFNT を持つ
  • 最大の利点は 共有グリフテーブル。たとえばヒラギノ明朝のレギュラーとボールドが同じ仮名・記号グリフを使う場合、テーブルを 1 つにまとめて参照させ、ディスク容量を大幅削減
  • macOS の標準フォント(ヒラギノ角ゴ・ヒラギノ明朝)、Windows の Yu Gothic、Adobe / Google の Source Han Sans / Noto Sans CJK が代表例
  • CJK(中国語・日本語・韓国語)フォントは漢字グリフが数万単位で重複しがちなため、TTC / OTC の恩恵が特に大きい
  • Web フォントとしては直接使えない。fonttoolsfonttools ttx -y Nttc2ttf で個別 TTF を取り出してから WOFF2 化
  • macOS の Hiragino Sans GB.ttcHeiti SC.ttc など、システムフォルダで実物を確認可能

概要

TTC(TrueType Collection)と OTC(OpenType Collection)は、複数のフォントをひとつのファイルにまとめるためのコンテナ形式です。1996 年に Apple が、特に中国語・日本語・韓国語(CJK)フォントの保存効率を高める目的で TrueType Collection 仕様を導入しました。拡張子は TrueType ベースなら .ttc、OpenType(CFF アウトライン含む)ベースなら .otc です。内部には複数の SFNT(フォントテーブル群)が格納され、ヘッダにある「TTC ヘッダ」が各フォントへのオフセットを示します。OS から見ると、ひとつの TTC ファイルから複数のフォントファミリ・ウェイトが供給される形になります。

TTC / OTC の最大の技術的価値は テーブル共有 です。たとえば「ヒラギノ角ゴ Pro W3」と「ヒラギノ角ゴ Pro W6」は字幅やデザインが違うため、字形(glyf / CFF)テーブルは別物にせざるを得ません。しかし cmap(文字コード→グリフ ID マッピング)や name(フォント名)といったテーブルは共通にできます。TTC ではこれら共通テーブルを 1 度だけ格納し、両方のフォントが参照する形にすることで、ディスク容量を数 MB〜数十 MB 単位で削減できます。特に CJK フォントは漢字グリフだけで 2 万〜2 万 5000 字以上 あるため、ウェイト別に独立 TTF を持つと容量が爆発しますが、TTC にすれば現実的なサイズに収まります。

代表例は macOS のシステムフォントです。/System/Library/Fonts/ を覗くと、Hiragino Sans GB.ttc(簡体字中国語)、Hiragino Sans.ttc(日本語)、Heiti SC.ttcSongti.ttc など、TTC が大量に並んでいるのが確認できます。Windows 10 / 11 の Yu Gothic(游ゴシック)も YuGothM.ttc / YuGothR.ttc という TTC で提供されています。サードパーティでは Adobe と Google が共同開発した Source Han Sans(源ノ角ゴシック)/ Noto Sans CJK が OTC 配布の代表例で、日中韓ベトナム 4 地域の字形をひとつの OTC ファイルに収めています。

一方、TTC / OTC は Web フォントとしては直接使えません@font-face は単一フォントを想定しており、TTC を直接 URL に書いてもブラウザは扱えないか、最初のフォントだけ読み込みます。Web で使う場合は fonttoolsttc2ttf で個別の TTF / OTF を取り出し、それぞれを WOFF2 に変換するのが定石です。

内部構造

セクション役割
TTC ヘッダマジック ttcf、バージョン、フォント数、各フォントへのオフセット表
個別 SFNT 11 つ目のフォントのテーブルディレクトリ
個別 SFNT 22 つ目のフォントのテーブルディレクトリ
...必要なだけフォントを格納可能
共有テーブル領域複数フォントが同じオフセットを指して参照する共通テーブル

テーブルディレクトリの中の各エントリには「テーブル本体のオフセット」が書かれており、複数のフォントから同じオフセットを指すことができます。これが共有の実装です。

主な用途

  • OS 標準 CJK フォントの配布:macOS のヒラギノ、Windows の Yu Gothic、Android の Noto Sans CJK。
  • 大規模フォントファミリの統合:Source Han Sans 7 ウェイト × 4 地域 = 28 種類を 1 ファイル(OTC)に。
  • ディスク容量の節約:仮名・記号・ラテン部分を共通テーブル化することで、ファミリ全体が単独 TTF の合計より大幅に小さくなる。
  • 商用アプリのフォント埋め込み:DTP ソフトや電子書籍ビューアが、フォントを 1 ファイルに束ねて配布する場合に使う。

関連形式との比較

項目TTC / OTCTTF / OTF(単独)OpenType Variable Font
ファイル数複数フォントを 1 つに1 ファイル = 1 フォント1 ファイルに連続ウェイト
共有メカニズムテーブル参照共有軸補間
Web 直接利用×○(実用は WOFF2 経由)○(WOFF2 + variations)
主な配布例ヒラギノ / Source HanNoto Sans Latin 等Roboto Flex, Inter
分解fonttools で個別取り出し不要不要

編集ツール

  • fonttools(Python):fonttools ttx -y N input.ttc で N 番目のフォントを TTX 化して取り出せる。pyftmerge で TTC 生成も可能。
  • ttc2ttf(OSS):TTC から個別 TTF を抽出する単機能 CLI。
  • otf2otc / otc2otf(AFDKO 同梱):Adobe 公式の OTC 作成・分解ツール。Source Han Sans の配布作業でも使われている。
  • FontForge:「Generate Mac Family」「Generate TTC」メニューで GUI 操作可。

注意点・落とし穴

  • Web では使えない@font-facesrc に TTC を書いてもブラウザは正しく扱えない。必ず分解してから WOFF2 化する。
  • ライセンスのスコープ:TTC に含まれる各フォントごとに EULA がある場合がある。たとえばヒラギノは Apple の OS 同梱としては許諾されているが、抜き出して別配布するのは禁止。
  • サブセット化が複雑:TTC の中の 1 フォントだけサブセット化したい場合、共有テーブルが破壊されないよう注意が必要。pyftsubset は単独 TTF 向けに設計されているので、まず分解する。
  • 古いソフトの非対応:レガシーな DTP / 印刷システムが TTC を正しく解釈できず、最初のフォントしか見えないことがある。事前テスト必須。
  • ファイル指定の曖昧さ:CSS や Word では「TTC のどの番号のフォントか」を厳密に指定できないことがあり、OS が選んだ最初のフォントが使われてしまう。

関連リンク

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. TTF(.ttf)
  2. OTF(.otf)
  3. WOFF(.woff)
  4. WOFF2(.woff2)
  5. EOT(.eot)
  6. TTC / OTC(.ttc / .otc)
  7. PFB / PFM / Type 1(.pfb / .pfm)
  8. AFM / BDF / PCF(.afm / .bdf / .pcf)

最近更新/作成されたページ