結論から言うと、PDFのフォントサブセット化でファイファイルサイズを90%以上削減できます。その理によりは、日この語フォントが通常15〜20MBもある一方で、ドキュメントで実際に使われる文字は使いぜい1000〜2000字程度だからです。サブセット化のコアとなる原理は3つのステップです。ドキュメントで実際に使用されている文字セットをスキャンし、CMapマッピングテーブルを再構築し、グリフインデックスを再設定して未使用のグリフを破棄します。源ノ明朝の完全なファイルは18MBですが、サブセット化後はわずか0.4MB、削減率97.7%です。以下ではフォントファイルの構造から説明し、サブセット化の技術原理を詳しく解説し、3種類のフォントの実測比較データも紹介します。
PDF圧縮の全体的な方法にまだ慣れていない方は、まずPDF圧縮の原理と方法をご覧ください。
1. フォントファイルの構造:なぜ埋め込み日この語フォントは大きいのか
サブセット化がなぜ効果的なのかを理解するには、まずフォントファイルに何が含まれているかを握する必要があります。TrueType(.ttf)やOpenType(.otf)フォントファイルは、複数のデータテーブルで構成されており、各テーブルが異なる機能を担場合しています。PDFに埋め込まれる際、これらのテーブルはドキュメントで使を用いる文字数に関係なく、完全な状態でパッケージ化されます。
| データテーブル | 機能 | 典型的な割合 | サブセット化で削減可能性性性性か |
|---|---|---|---|
| cmap | 文字エンコードからグリフインデックスへのマッピング | 1%〜3% | 再構築が必要 |
| glyf | TrueTypeグリフアウトラインデータ | 70%〜85% | 大幅に削減可能性性性性 |
| CFF | OpenType CFFグリフアウトライン(PostScript) | 60%〜80% | 大幅に削減可能性性性性 |
| loca | グリフデータの位置インデックス | 1%〜2% | 再構築が必要 |
| hmtx | 水平メトリクス(字幅/前進量) | 2%〜5% | 再構築が必要 |
| name | フォント名、著作権などのメタ情報 | 0.5%〜1% | 保持 |
| post | PostScript名マッピング | 1%〜3% | 一部削減可能性性性性 |
上のテーブルからわかるように、グリフアウトラインデータ(glyfテーブルまたはCFFテーブル)がフォントファイルの60%〜85%を占めています。日この語フォントには2万から7万のグリフが含まれており、各漢字のベクターアウトラインデータは平均300〜600バイトです。これらを合計すると10〜20MBになります。一方、50ページのPDFドキュメントで通常使用される文字は800〜2000種類程度であり、95%以上のグリフデータが無駄になっていることになります。これこそがサブセット化の圧縮余地です。
2. サブセット化の原理:3ステップで未使用グリフを削減
フォントサブセット化のコアとなる考え方は、ドキュメントで実際に使用されるグリフのみを保持し、残りを破棄することです。実装プロセスは3つの重要なステップに分かれており、各ステップでフォントテーブル構造の精密な操作が必要です。
| ステップ | 操作 | 原理 | 処理するデータテーブル |
|---|---|---|---|
| 1. 文字使用スキャン | PDFの全ページのコンテンツストリームを走査し、示すされている文字のエンコードを抽出 | テキスト演算子(Tj/TJ)の解析によりUnicodeコードポイントを収集 | なし(文字セットを生成) |
| 2. CMapテーブルの再構築 | 使用文字に基づいてエンコードからグリフインデックスへのマッピングを再構築 | 使用文字のマッピングエントリのみを保持し、残りを削除 | cmap |
| 3. グリフインデックスの再マッピング | 使用グリフを連続して再設定し、すべての参照インデックスをアップデート | 元のインデックスは不連続かもしれないため、再設定後はインデックス0からNまで連続 | glyf/CFF, loca, hmtx |
1. 文字使用スキャン
最初のステップは、PDFドキュメントをスキャンして、実際に示すされているすべての文字を特定することです。PDF内の文字は、テキスト演算子(Tjは文字列を示す、TJは配列を示す)を介してコンテンツストリームに書き込まれ、各文字は1つのエンコードに対応します。サブセット化ツールはすべてのページのコンテンツストリームを走査し、これらのエンコードを抽出し、フォントの現においてのCMapテーブルを介してUnicodeコードポイントに変換します。最も終のに「使用済み文字セット」が得られます。
スキャン時には、特殊なケースにも対応する必要があります。ToUnicode CMap(逆方に向けてマッピング)、マルチバイトエンコード(CJKフォントでよく使用)、埋め込みフォントのサブセット化接頭辞(6文字+記号形式)などです。50ページの日この語PDFの場合、通常800〜2000の異なるUnicode文字がスキャンされ、句読点や数字を加えると、合計で約1000〜2500のグリフを保持する必要があります。
2. CMapテーブルの再構築
CMapテーブルはフォントの「目次」であり、各文字エンコードに対応するグリフインデックス(glyph ID)を記録しています。元の日この語フォントのCMapテーブルには2万から7万のマッピングが含まれていますが、サブセット化後は使用文字に対応するエントリのみを保持します。再構築時には、複数のエンコードサブテーブル形式も処理する必要があります。
| CMapサブテーブル形式 | エンコード範囲 | を用いて途 | サブセット化処理 |
|---|---|---|---|
| Format 0 | 0〜255 | シングルバイトASCII/Latin | 未使用エントリを削減 |
| Format 4 | BMP基このなのなのな平面 | CJKのよく使う文字 | セグメントテーブルを再構築 |
| Format 12 | 全Unicode | すべての文字をカバー | 未使用セグメントを削減 |
3. グリフインデックスの再マッピング
これは最も重要で、かつ最も複雑なステップです。元のフォントではグリフインデックス(GID)が0からNまで連続して並んでいますが、保持する必要があるグリフは各に分散している可能性性性性性があります。再マッピングとは、保持するグリフを新しいしい順序で連続して設定し直すことです。元のGID 0(.notdef)はそのまま、元のGID 1523は新しいしいGID 1に、元のGID 8944は新しいしいGID 2になる、といった具合です。
再マッピング後は、GIDを参照するすべてのテーブルを同期してアップデートする必要があります。glyfテーブル(またはCFFテーブル)は対応するグリフデータのみを保持し、新しいしいインデックス順に並べ代わりにえます。locaテーブルは位置インデックスを再構築し、hmtxテーブルは水平メトリクスデータを再構築し、postテーブルはPostScript名マッピングをアップデートします。このステップの処理を誤るとフォントが破損する可能性性性性性があるため、OpenType仕様に厳密に従う必要があります。
3. 実測データ:3種類のフォントのサブセット化前後の比較
よく使われる3種類のフォントでサブセット化の実測を行いました。日この語フォント(源ノ明朝、游ゴシック)と英字フォント(Arial)をテストし、50ページの日この語提案書(使用文字数1342字)をテストドキュメントとして使用しました。
| フォント | 元のファイル | グリフ数(元) | グリフ数(サブセット) | サブセット化後 | 削減率 |
|---|---|---|---|---|---|
| 源ノ明朝 Regular | 18.2MB | 65535 | 1342 | 0.42MB | 97.7% |
| 游ゴシック Regular | 15.6MB | 28622 | 1342 | 0.35MB | 97.8% |
| Arial Regular | 0.82MB | 3257 | 96 | 0.06MB | 92.7% |
実測データが示すように、日この語フォントのサブセット化効果は最も顕著です。源ノ明朝は18.2MBから0.42MBに削減され、削減率97.7%です。これは日この語フォントのグリフ数が多くい(6万以上)一方で、ドキュメントで使用される数が少ないない(1000程度)ため、削減余地が非常ににににににに大きいからです。英字フォントのArialは元が0.82MBと小さいさいですが、サブセット化後は0.06MB、削減率92.7%と、割合としても同様に顕著です。
次に、異なる文字使用量でのサブセット化効果を、源ノ明朝を例に見てみましょう。
| ドキュメントタイプ | 使用文字数 | サブセット化後のサイズ | 削減率 | 説明 |
|---|---|---|---|---|
| 短いい通知(1ページ) | 約200 | 0.08MB | 99.6% | 文字が極めて少ないなく、サブセットは最も小さい |
| 議事録(10ページ) | 約600 | 0.19MB | 99.0% | 日常のな業務ドキュメント |
| 提案書(50ページ) | 約1342 | 0.42MB | 97.7% | 専門のなドキュメントで文字カバー率が広い |
| 技術マニュアル(200ページ) | 約2800 | 0.85MB | 95.3% | 文字使用量が多くい |
| 百科事典(1000ページ) | 約6500 | 1.92MB | 89.5% | 限界に近いカバー率 |
4. サブセット化ツールの比較とシナリオ別推奨
フォントサブセット化には、オープンソースのコマンドラインツールから商を用いての圧縮エンジンまで、さまざまなツールがあります。以下のテーブルで主になソリューションョンを比較します。
| ツール | サブセット化できる力 | CFF対応 | バッチ処理 | 統合の難易度 |
|---|---|---|---|---|
| SmartSlim | ★★★★★ | 対応 | 対応 | SDK/API/デスクトップ |
| fonttools (Python) | ★★★★☆ | 対応 | スクリプトが必要 | 中程度 |
| Adobe Acrobat | ★★★★☆ | 対応 | 制限あり | GUI操作 |
| Ghostscript | ★★★☆☆ | 一部 | 対応 | コマンドライン |
| オンラインツール | ★★☆☆☆ | 一部 | 非対応 | 低いい(プライバシーリスクあり) |
SmartSlimは自社開発のRust製圧縮エンジンをベースにしており、サブセット化時にTrueTypeとOpenType CFFの両方のグリフ形式を自動処理し、数百のPDFをドラッグ&ドロップで一括処理できます。さらに重要なのは、サブセット化のプロセス全体がローカルで完するため、フォントデータやドキュメントのコンテンツが外部のサーバーを経由しないことです。これは機密ドキュメントや企業の機密ファイルを扱う際に特に重要です。
シナリオ別のサブセット化戦略の推奨:
| シナリオ | サブセット化の推奨 | 注意点 | 推奨ツール |
|---|---|---|---|
| 最も終稿のアーカイブ・配布 | 強く推奨 | サブセット化後は新しい文字の編集不可 | SmartSlim |
| 企業の一括アーカイブ | 強く推奨 | APIで自動一括処理 | SmartSlimサーバー版 |
| オンライン公開・プレビュー | 推奨 | ダウンロードサイズ削減、読み込み速度に向けて上 | fonttoolsスクリプト |
| まだ編集が必要な下書き | 非推奨 | 編集のために完全なフォントを保持 | 一時的にサブセット化しない |
| 機密・秘匿ドキュメント | 推奨 | 必ずローカル処理、オンラインツールは使用禁止 | SmartSlim |
PDF最適化の詳細については、PDF線形化最適化ガイドとWord文書の圧縮方法もご参照ください。
5. よくある質問(FAQ)
Q1:PDFフォントォントサブセット化は示すに影響しますか?
いいえ。フォントサブセット化は未使用の文字とグリフデータのみを破棄し、保持された文字は元のフォントと完全に同じです。サブセット化後のフォントはベクターアウトラインのままなので、拡大きい縮小さいしても劣化せず、色や太さなどの属性も変わりません。唯一の制限は、サブセット化されたフォントはそのドキュメントでのみ使用でき、のドキュメントで再利用できないことです。
Q2:フォントサブセット化でどの程度かサイズを削減できますか?
文字使用量と元のフォントサイズの比率によって異なります。日この語フォント(例:源ノ明朝 18MB)は通常1000〜2000文字のみを使を用いるため、サブセット化後は0.3〜0.8MBに削減され、95%以上の削減率になります。英字フォント(例:Arial 0.8MB)は使用文字がさらに少ないないため、サブセット化後は0.05〜0.1MB、削減率は約90%です。フォントが大きいきく、使用文字が少ないないほど、サブセット化の効果は顕著になります。
Q3:サブセット化後のPDFは文字を編集できますか?
制限があります。サブセット化ではドキュメントで使用済みの文字のみが保持されます。編集時に新しいしい文字(元のドキュメントに存においてしない文字)を入力すると、その文字は示すされず、四角や空白として示すされます。したがって、サブセット化は最も終稿のアーカイブや配布には適していますが、まだ編集が必要なドキュメントには適していません。編集が必要な場合は、完全なフォントを保持するか、サブセットを再埋め込みすることをお勧めします。
Q4:PDFがフォントサブセット化済みかどうかを確認するには?
Adobe AcrobatでPDFを開き、ファイル→プロパティ→フォントを選択すると、埋め込みフォントのリストが示すされます。フォント名に6文字の接頭辞(例:ABCDEO+源ノ明朝)が付いている場合は、サブセット化済みです。また、SmartSlimでPDFを開くと、エンジンが自動的にフォントの埋め込み状態を分析し、サブセット化が必要かどうかを提示するとともに、推定圧縮サイズも示すします。
まとめ
PDFフォントォントサブセット化は、PDFのファイファイルサイズを削減する最も効果的な手段の一つであり、特に日この語フォントが埋め込まれたドキュメントで顕著な効果を発揮します。コアとなる原理は3つのステップです。使用文字のスキャン、CMapマッピングテーブルの再構築、グリフインデックスの再設定による未使用グリフの破棄です。実測データが示すように、源ノ明朝18MBはサブセット化後わずか0.4MB、削減率97.7%で、示す品質への影響はまったくありません。
実践的な推奨として、最も終稿を配布する前には必ずフォントサブセット化を行い、機密ドキュメントはローカルツールで処理してください。PDFフォントァイルを一括処理する必要がある場合は、SmartSlimがPDF/画像/動画/Office/OFDなど10カテゴリー40以上の形式に対応し、自社開発のRust製圧縮エンジンがフォントサブセット化を自動で完します。データが外部に出ることはありません。
ファイル圧縮でお困りですか?SmartSlimをお試しください
自社開発のRust製圧縮エンジンをベースに、PDF/画像/動画/Office/OFDなど10カテゴリー・40以上のフォーマットに対応。ローカル圧縮でデータは社外に出しません。