ToUnicode maps must not use reserved codepoints
PDF/UA check
FONT_UNICODE_INVALID_VALUES· Fonts & text encoding · severity High · PDF/UA 8.4.5.8 Unicode character maps · advanced check
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
U+0000, U+FEFF, and U+FFFE are invalid as character content. Mapping glyphs to these values means screen readers either skip the text or read garbage.
What you will see
A font maps glyphs to U+0000, U+FEFF or U+FFFE — values that are not valid as text content.
How to fix
Edit the ToUnicode CMap and replace every mapping to U+0000, U+FEFF, or U+FFFE with the character's real Unicode value. Regenerating the ToUnicode CMap from the font's glyph names or source text produces valid values.
Step-by-step guide
- Locate the offending mappings: decode the flagged font's ToUnicode CMap stream and find every bfchar or bfrange entry whose destination is U+0000, U+FEFF, or U+FFFE - the values PDF/UA-2 clause 8.4.5.8 prohibits. EQChecker additionally fails the noncharacter U+FFFF and the replacement character U+FFFD, which mark unresolved mappings.
- Determine the real character behind each affected code by rendering the page and reading the glyph, or by inspecting glyph names in the embedded font program.
- Rewrite those bfchar/bfrange entries with the correct Unicode values; when many entries are wrong, regenerate the entire ToUnicode CMap from the font's glyph names or from the source text.
- Be aware the scan also flags two related failure modes under this rule: simple-font codes outside the base encoding whose ToUnicode destination is a placeholder or control value, and Type 0 subset fonts whose embedded program has a stripped cmap and meaningless glyphNNNNN names (Adobe checker parity). Those fonts need re-embedding from the original font file, not just a CMap edit.
- If an affected glyph is purely decorative and has no text meaning, mark that content as an artifact rather than inventing a Unicode value for it.
- Prefer regenerating the PDF from the authoring application with a current exporter, which writes valid ToUnicode CMaps automatically.
- Acrobat Pro cannot edit ToUnicode CMaps through any menu; if re-export is impossible, the font's Unicode mappings were written incorrectly by the producing application and the only reliable fix is regenerating the file from its source with a compliant export pipeline.
Verify: Re-run the EQChecker advanced scan and confirm FONT_UNICODE_INVALID_VALUES reports zero errors. Copy the affected text into an editor and confirm no null characters, byte-order marks, or replacement characters appear.
Note: Clause 8.4.5.8 requires every ToUnicode value to be greater than zero and not equal to U+FEFF or U+FFFE. EQChecker goes further: it also fails U+FFFF and U+FFFD as placeholder values, and mirrors the Adobe checker in failing subset fonts whose glyphs cannot be identified from the font program itself. Give glyphs their real Unicode values, not placeholders.
WCAG success criteria
1.3.1 Info and Relationships — Level A
Structure and relationships conveyed visually (headings, lists, tables, labels, groups) must also be available programmatically.
Standards
This check contributes to the following standards:
PDF/UA WCAG A EN 301 549
| Standard | Criteria |
|---|---|
| PDF/UA-2 (ISO 14289-2:2024) | 8.4.5.8 Unicode character maps |
| EN 301 549 (non-web documents) | 10.1.3.1 |