# NotoEmoji-Regular の埋め込みサブセットが複数表示される件の調査報告

# 1. 要点(結論)

UIGraphicsPDFRenderer/Quartz PDFContext で生成した PDF の文書プロパティに、NotoEmoji-Regular の「埋め込みサブセット」が複数表示されても、それだけで PDF の異常・フォント埋め込み失敗とは判断できません

PDF では、同じベースフォントから複数の独立したサブセットフォントを作成し、それぞれを別のフォントリソースとして保持できます。PDF 関連製品の公式ドキュメントや Adobe 系コミュニティでも、同一フォントの複数サブセットが実際に存在することを前提として説明されています。

ただし、今回確認できた公開資料の範囲では、Apple が次の内容を明記した公式文書は見つかりませんでした。

UIGraphicsPDFRenderer または Quartz PDFContext は、一定数のグリフごと、またはページごとに、同じ TrueType フォントを複数のサブセットへ分割する。

同一の NotoEmoji-Regular が複数の埋め込みサブセットとして表示される構造は、PDF で許容され、一般的に発生するフォントリソース構成です。表示・印刷・PDF 検証に問題がなければ、サブセットが複数存在すること自体は不具合を意味しません。


# 2. 対象 PDF で確認された状態

対象 PDF:

all_emoji_noto_only_list_20260621155521.pdf

pdffonts で確認すると、次のように異なるサブセット接頭辞を持つ NotoEmoji-Regular が複数埋め込まれています。

AAAAAE+NotoEmoji-Regular
AAAAAF+NotoEmoji-Regular
...

各フォントは次の状態です。

type: TrueType
embedded: yes
subset: yes
ToUnicode: yes

つまり、同じファミリー名が誤って重複表示されているのではなく、異なるサブセット名を持つ複数の独立した PDF フォントリソースとして格納されています。


# 3. 「複数サブセットが存在しても問題ではない」と説明できる根拠

# 3.1 Adobe Community:同じフォントファミリーでも複数の埋め込みサブセットになるのは既知の挙動

Adobe Community の回答では、PDF の編集やフォント置換時に Acrobat が複数の埋め込みフォントサブセットを作成し、同じフォントファミリーでも文書プロパティ上は別項目として表示されることについて、次のように説明されています。

  • 「known and expected behavior」
  • 同じフォントファミリーでも複数の埋め込みサブセットが作成される
  • エンコーディングが異なる場合もある
  • 文書プロパティの Fonts 一覧では別項目として表示される

この資料は Quartz 固有の説明ではありませんが、同一フォントの複数サブセットが PDF で正常に存在し得ることを示す直接的な資料です。

URL:

https://community.adobe.com/questions-9/problem-with-fonts-listed-in-properties-resulting-in-bloated-pdf-1620749

確認箇所:

This is a known and expected behavior when editing fonts in PDFs.
When text is edited or fonts are replaced, Acrobat often creates
multiple embedded font subsets, sometimes with different encodings.
Even if it’s the same font family, these appear as separate entries
in Menu > Properties > Fonts.

# 3.2 pdfRest 公式ドキュメント:同じフォントが複数のサブセットとして格納される場合がある

pdfRest の公式ドキュメントは、PDF 最適化機能 consolidate-duplicate-fonts の説明で、PDF に同一フォントの複数コピーが含まれる場合について明記しています。

記載内容:

  • PDF は同じフォントを複数コピーとして含む場合がある
  • その形態には「複数のサブセット」が含まれる
  • 必要に応じて、それらを単一フォントへ統合できる

これは、複数サブセットが「壊れた PDF にしか存在しない異常構造」ではなく、PDF 最適化製品が通常の入力として想定している構造であることを示します。

URL:

https://docs.pdfrest.com/pdfrest-api-toolkit-cloud/custom-compression-profiles/

該当項目:

consolidate-duplicate-fonts

該当説明:

Sometimes PDF documents are created with multiple copies of the same font,
either as multiple subsets or multiple, fully embedded copies of a font file.
When multiple copies of the same font appear, they may be merged into a single font.

# 3.3 PDF Association:PDF ではページのリソース辞書からフォントリソースを参照する

PDF Association の資料では、PDF ページが内部名を使ってフォントリソースを参照する構造が説明されています。

例:

/F25 12 Tf
/Resources << /Font << /F25 12 0 R >> >>

PDF の各ページはリソース辞書を持つことができ、フォントは PDF オブジェクトとして管理されます。そのため、同じベースフォント由来であっても、別のフォントオブジェクト・別のサブセットとして登録する構造が可能です。

URL:

https://pdfa.org/wp-content/uploads/2018/05/1530_Seggern.pdf

資料名:

Text and fonts in PDF — What has PDF 2.0 (not) changed for font encoding?

# 3.4 PDF Association:シンプルフォントと複合フォントのグリフ数

同資料では、フォントタイプによって扱えるグリフ数が異なることも説明されています。

Simple fonts:
1 byte character codes can address max. 256 glyphs

Composite fonts:
1 or 2 byte character codes can address max. 65535 glyphs

これは「すべての PDF サブセットが必ず 256 グリフごとに分割される」という意味ではありません。

重要なのは次の点です。

  • PDF のシンプルフォントは、1つのエンコーディングで最大 256 グリフ
  • Type 0/CID の複合フォントは、より多くのグリフを扱える
  • PDF 生成エンジンは、フォント形式・エンコーディング・描画方法に応じて複数フォントリソースを生成できる

対象 PDF の pdffonts 結果では TrueType / WinAnsi と表示されているため、複数の TrueType サブセットへ分割されている構成と整合します。

URL:

https://pdfa.org/wp-content/uploads/2018/05/1530_Seggern.pdf

# 3.5 PDFDancer:サブセットは閲覧用途では正常

PDFDancer の技術解説では、PDF の多くが完全なフォントではなく、文書内で使用したグリフのみを含むサブセットを埋め込むと説明されています。

さらに、閲覧に関しては次のように説明されています。

For viewing, this is fine.
The PDF only draws glyphs that exist in the subset,
so it always looks correct.

つまり、サブセットフォントは閲覧用 PDF として正常な設計です。制約が問題になるのは、主に後から文言を編集して、サブセットに含まれていないグリフを追加しようとする場合です。

URL:

https://www.pdfdancer.com/blog/pdf-font-hell/

# 3.6 Apple Support Community:macOS PDF で大量の重複・サブセットフォントが生じた事例

Apple Support Community には、Preview で保存した PDF に同じフォントが多数埋め込まれた事例があります。

URL:

https://discussions.apple.com/thread/2485166

この事例は極端な大量重複であり、正常性を直接保証する資料ではありません。ただし、macOS の PDF 生成経路で同じフォント由来の複数フォントリソースが作成される事例が存在することを確認できます。

# 3.7 Mac OS X Preview と「multiple font subsets」

Mac OS X Preview が複数フォントサブセットを使うことを述べた記事があります。

URL:

https://www.godsmonsters.com/Notes/lulu-nisus-and-gods-and-monsters/

記事では次の趣旨が説明されています。

  • Adobe PDF 標準には multiple font subsets の仕組みがある
  • Mac OS X Preview は PostScript から PDF への変換や PDF 保存でそれを使う
  • 一部の印刷サービス側が対応していない場合があった

これは Apple 公式資料ではありませんが、Quartz/Preview 系 PDF で複数サブセットが生成されるという実例資料として利用できます。


# 4. サブセットフォント名の意味

PDF のサブセットフォントは、通常、フォント名の前に英字の接頭辞と + が付与されます。

例:

AAAAAE+NotoEmoji-Regular
AAAAAF+NotoEmoji-Regular

NotoEmoji-Regular がベースフォント名です。

AAAAAE+AAAAAF+ の部分は、それぞれのサブセットを区別するためのタグです。同じベースフォント名であっても接頭辞が異なれば、PDF 内では別のサブセットフォントとして扱われます。

参考 URL:

https://www.pdfdancer.com/blog/pdf-font-hell/

# 5. 問題の有無を判断する基準

複数サブセットが存在すること自体ではなく、次の観点で PDF を検証します。

# 5.1 問題なしと判断できる状態

  • Acrobat Reader で全ページが正常に表示される
  • 対象絵文字が欠落していない
  • 文字化けや別グリフへの置換がない
  • 印刷プレビューおよび実印刷で正常に出力される
  • pdffonts で対象フォントの embyes
  • pdffonts で対象フォントの subyes
  • 必要に応じて uniyes
  • Acrobat Preflight、veraPDF などで重大エラーが出ない
  • ファイルサイズが業務要件内に収まっている

# 5.2 問題として扱う状態

  • 絵文字が豆腐文字・四角・別記号になる
  • 一部ページだけフォントが欠落する
  • 印刷すると文字化けする
  • サブセットが異常に大量生成され、ファイルサイズが著しく増大する
  • PDF/A、PDF/X など必要な規格の検証に失敗する
  • PDF を後編集した際、サブセットにない文字を入力できない
  • 印刷会社や外部システムが複数サブセットを処理できない

# 6. Acrobat Reader の文書プロパティの見方

Acrobat Reader の「文書のプロパティ」→「フォント」に次のように表示される場合:

NotoEmoji-Regular
種類: TrueType
エンコーディング: ANSI
実際のフォント: NotoEmoji-Regular
実際のフォントの種類: TrueType
埋め込みサブセット

同じ表示が複数あっても、内部の完全な PDF フォント名は次のように異なる可能性があります。

AAAAAE+NotoEmoji-Regular
AAAAAF+NotoEmoji-Regular
AAAAAG+NotoEmoji-Regular

Acrobat の画面ではサブセット接頭辞が省略・簡略表示されることがあります。そのため、画面上で同じ名前が並んで見えても、内部では異なるフォントオブジェクトです。

確認には次のコマンドを使用できます。

pdffonts all_emoji_noto_only_list_20260621155521.pdf

macOS で pdffonts がない場合は Poppler を導入します。

brew install poppler

# 7. Quartz PDFContext に関する説明の注意点

次の説明は、公開資料で直接確認できた範囲を超えるため、断定しない方が安全です。

# 断定を避ける表現

Quartz は、必ずページ単位で NotoEmoji-Regular のサブセットを生成する。
Quartz は、必ず 256 グリフごとにサブセットを分割する。

今回確認した PDF では、複数の TrueType / WinAnsi サブセットが生成されています。しかし、Quartz の内部アルゴリズムが次のどれに基づいて分割したかは、公開 API 文書だけでは特定できません。

  • ページ単位
  • 描画セッション単位
  • テキストラン単位
  • エンコーディングの上限
  • グリフセットの上限
  • Core Text のフォントフォールバック単位
  • Quartz 内部のフォントキャッシュ単位

# 推奨表現

UIGraphicsPDFRenderer/Quartz PDFContext が生成した PDF では、
同じ NotoEmoji-Regular が異なるサブセットフォントリソースとして
複数埋め込まれる場合があります。

PDF では同一ベースフォントの複数サブセットを保持でき、
Adobe 系資料や PDF 最適化製品もこの構造を通常の PDF 構成として扱っています。

したがって、表示・印刷・埋め込み検証に問題がなければ、
文書プロパティに複数の NotoEmoji-Regular 埋め込みサブセットが
表示されること自体は不具合ではありません。

# 9. 資料 URL 一覧

# Adobe

https://community.adobe.com/questions-9/problem-with-fonts-listed-in-properties-resulting-in-bloated-pdf-1620749

# PDF Association

https://pdfa.org/wp-content/uploads/2018/05/1530_Seggern.pdf

# pdfRest 公式ドキュメント

https://docs.pdfrest.com/pdfrest-api-toolkit-cloud/custom-compression-profiles/

# PDFDancer 技術解説

https://www.pdfdancer.com/blog/pdf-font-hell/

# Apple Support Community

https://discussions.apple.com/thread/2485166

# Mac OS X Preview と multiple font subsets の事例

https://www.godsmonsters.com/Notes/lulu-nisus-and-gods-and-monsters/

# Google Groups:同じフォントが複数回埋め込まれる事例

https://groups.google.com/g/comp.text.pdf/c/JaKxpFMmHv4

# PDF-XChange Forum:複数サブセットと統合の検証例

https://forum.pdf-xchange.com/viewtopic.php?t=28760

# 日本語の PDF 埋め込みフォント技術資料

https://azelpg.gitlab.io/azsky2/note/prog/pdf/18_embed.html