Avoid Private Use Area characters for real text
PDF/UA check
PUA_CHARACTER_USAGE· Fonts & text encoding · severity Medium · PDF/UA 8.4.2 Unicode mapping · 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
PUA codepoints (U+E000 to U+F8FF, U+F0000+) have no standard meaning. Screen readers read them as 'unknown' or skip them. Use real Unicode whenever possible.
What you will see
Glyphs are mapped into the Unicode Private Use Area even though standard codepoints exist for them.
How to fix
Remap the flagged glyphs in the ToUnicode CMap to standard Unicode codepoints instead of Private Use Area values. Where no standard codepoint exists, keep the PUA mapping but add an ActualText or Alt entry on the enclosing content or structure element.
Step-by-step guide
- Locate the glyphs mapped into the Unicode Private Use Area (U+E000 to U+F8FF, and planes 15-16 from U+F0000) using the scan's reported fonts, or by copying the text into a codepoint inspector.
- For each PUA-mapped glyph, check whether a standard Unicode codepoint exists - ligatures such as fi and fl, math symbols, and bullets almost always have real codepoints or decompose into ordinary letter sequences.
- Where a standard value exists, remap the glyph in the ToUnicode CMap to that value; PDF/UA-2 clause 8.4.2 permits PUA values only when no other valid Unicode value is available. This requires regenerating the ToUnicode CMap with a font-aware tool.
- Fix at the source where you can: symbol fonts such as Wingdings or Symbol in Office documents are the usual origin of PUA mappings - replace those characters with standard Unicode characters or fonts, then re-export the PDF.
- Where no standard codepoint exists, PDF/UA-2 lets the PUA mapping remain, but clause 8.4.3 then requires an ActualText or Alt entry on the character, the sequence containing it, or its structure element. EQChecker scans ToUnicode CMaps only and cannot see ActualText, so intentionally retained PUA mappings stay in the report and need manual sign-off.
- To add ActualText in Acrobat Pro, open the Accessibility tags panel (View > Show/Hide > Side panels > Accessibility tags), right-click the tag enclosing the content, choose Properties, and fill in the Actual Text field on the Tag tab.
- Make sure the ActualText or Alt value itself contains no PUA codepoints - clause 8.6 forbids PUA in human-readable text strings.
Verify: Re-run the EQChecker advanced scan: remapped fonts drop off the PUA_CHARACTER_USAGE report; any intentionally retained PUA mappings remain listed and must be confirmed to carry ActualText or Alt. A screen reader should voice the affected text meaningfully.
Note: Only remapping to standard Unicode (or re-export without PUA) clears the scan finding; the keep-PUA-with-ActualText path satisfies clauses 8.4.2 and 8.4.3 but stays visible because the scanner reads fonts, not structure. This rule targets PDF/UA-2 only - PDF/UA-1 is more permissive about PUA. Artifacting decorative dingbats helps the document but does not remove the font's ToUnicode entries from this check.
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.2 Unicode mapping |
| EN 301 549 (non-web documents) | 10.1.3.1 |