Accessibility Wiki

CIDSet must list every embedded CID

PDF/UA check FONT_CIDSET_COMPLETE · Fonts & text encoding · severity Medium · PDF/UA 8.4.5.5 Embedding · 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

An incomplete CIDSet misrepresents the embedded font subset, breaking downstream validation tools.

What you will see

A CID font descriptor declares a CIDSet that does not match the CIDs actually present in the embedded subset.

How to fix

Regenerate the CIDSet stream in the CID font descriptor so a bit is set for every CID present in the embedded font subset. Re-subsetting the font with a current tool rebuilds it correctly; removing the CIDSet entry entirely also resolves the mismatch.

Step-by-step guide

  1. Identify the flagged CID fonts whose FontDescriptor contains a CIDSet stream that fails to declare all CIDs present in the embedded font subset. CIDSet is a bit table: bit n set means CID n is present.
  2. Simplest compliant fix: delete the CIDSet entry from the FontDescriptor. The entry is optional (and deprecated in PDF 2.0), and the check passes when it is absent.
  3. To keep the entry instead, regenerate the CIDSet stream so a bit is set for every CID actually present in the embedded font program - Acrobat's font subset fixup (next step) or a fresh export from the source application rebuilds it correctly.
  4. In Acrobat Pro you can try All tools > Use print production > Preflight > PDF fixups > Subset all embedded fonts, which rewrites embedded subsets and descriptor data; verify afterwards and fall back to re-exporting from the source application if the mismatch persists.
  5. Where possible, re-export the document from its authoring application with current software, which either omits CIDSet or writes it correctly.

Verify: Re-run the EQChecker advanced scan and confirm FONT_CIDSET_COMPLETE reports zero errors. Acrobat's Preflight PDF/A validation reports CIDSet mismatches - PDF/UA-2 clause 8.4.5.5 does not itself name CIDSet - so a PDF/A pass there is the closest cross-check. Rendering and text extraction are unaffected, so a visual spot check suffices.

Note: CIDSet is declarative metadata with no effect on rendering; PDF 2.0 deprecates it, so removal is the cleanest long-term fix. EQChecker checks only TrueType-based (CIDFontType2) descendants and flags underdeclaration - a CIDSet listing fewer CIDs than the font program contains; surplus bits are tolerated. Acrobat has no UI for FontDescriptor streams - if the Preflight fixup does not clear the mismatch, regenerate the file from its source.

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.5 Embedding