Accessibility Wiki

Custom CMaps must be embedded

PDF/UA check FONT_CMAP_EMBEDDED · Fonts & text encoding · severity High · PDF/UA 8.4.5.4 CMaps · advanced check

↩ Back to the rules index · WCAG cross-reference

Advanced check. This is a file-internals rule. It is hidden from the standard report view and generally indicates a problem with the tool that produced the PDF rather than something an author did.

Why it matters

Non-embedded custom CMaps depend on external resources that may not be available, causing text extraction failure.

What you will see

A font relies on a non-standard CMap that is not embedded in the file.

How to fix

Embed each non-predefined CMap as a stream object referenced from the font's Encoding entry. Alternatively, switch the font to a predefined CMap such as Identity-H or Identity-V, which does not need embedding.

Step-by-step guide

  1. Identify Type 0 fonts whose Encoding names a CMap that is not predefined. Predefined CMaps are those in ISO 32000-2 Table 116: Identity-H, Identity-V, and the standard Adobe CJK CMaps (e.g. UniJIS-UCS2-H, UniGB-UCS2-H). Anything else must be embedded.
  2. Path 1 - embed the CMap: store the CMap program as a stream object with Type /CMap plus CMapName, CIDSystemInfo, and WMode entries, and make the font's Encoding entry an indirect reference to that stream instead of a bare name.
  3. Ensure the embedded CMap references no other CMap via usecmap except the predefined ones in ISO 32000-2 Table 116, as clause 8.4.5.4 requires - EQChecker also flags transitive UseCMap references to non-predefined names.
  4. Path 2 - switch to a predefined CMap: change the font's Encoding to Identity-H or Identity-V, which never needs embedding. This requires the content-stream character codes to be rewritten to match, which Acrobat cannot do - in practice this path means re-exporting from the source application.
  5. Prefer fixing at the source: re-export from the authoring application with a current exporter, which either uses predefined CMaps or embeds custom ones automatically.
  6. Acrobat Pro has no UI for embedding CMaps. A file failing this check was generated incorrectly by its producing application - the font's Encoding names a CMap the file never embeds - and the only reliable fix is regenerating it from source with a compliant export pipeline.

Verify: Re-run the EQChecker advanced scan and confirm FONT_CMAP_EMBEDDED reports zero errors. CJK or custom-encoded text should still extract correctly.

Note: The rule passes on either path: the CMap is predefined (Table 116) or it is embedded in the file. Custom CMaps typically appear in older CJK workflows; modern exporters almost always use Identity encodings, so re-export usually clears this rule.

WCAG success criteria

No WCAG success criterion maps cleanly to this check — it is a PDF/UA structural requirement. The PDF/UA clause above is the normative reference.

Standards

This check contributes to the following standards:

PDF/UA

Standard Criteria
PDF/UA-2 (ISO 14289-2:2024) 8.4.5.4 CMaps