Accessibility Wiki

Metadata must not contain private-use characters

PDF/UA check XMP_TEXT_PUA · Metadata · severity Medium · PDF/UA 8.6 Text strings · 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

Document title and author are announced by screen readers when opening or switching between PDFs. PUA characters in metadata are read as gibberish.

What you will see

The title or author metadata contains Private Use Area codepoints, which have no defined meaning.

How to fix

Replace Private Use Area characters (U+E000-U+F8FF and the supplementary PUA planes) in the XMP metadata fields dc:title, dc:creator, dc:subject, dc:description, and pdf:Keywords with standard Unicode text. Retype the affected values in the document properties rather than pasting from the original source.

Step-by-step guide

  1. Read the EQChecker report details to see which fields contain Private Use Area characters - the check scans the XMP properties dc:title, dc:creator, dc:subject, dc:description and pdf:Keywords.
  2. Open File > Properties > Description in Acrobat Pro and retype the affected fields (Title, Author, Subject, Keywords) by hand using ordinary text. Do not paste from the original source - pasting text extracted from PDFs whose fonts map glyphs to PUA codepoints is how these characters usually get in.
  3. Replace symbols that only exist in icon or symbol fonts (Wingdings bullets, dingbats, custom ligature glyphs) with plain-text equivalents, e.g. a hyphen instead of a decorative bullet, the actual letters instead of a ligature glyph.
  4. Save the file so Acrobat rewrites the XMP packet with the corrected values.
  5. If PUA characters persist in properties Acrobat's Description tab does not expose, edit the raw XMP via File > Properties > Description > Additional Metadata > Advanced.

Verify: Re-run the EQChecker scan; XMP_TEXT_PUA passes when no PUA codepoints (U+E000-U+F8FF and the supplementary PUA planes) remain in the checked XMP fields. A screen reader should now announce the title and author as real words.

Note: Grounded in PDF/UA-2 8.6, which forbids the Unicode PUA in human-readable text strings; EQChecker applies the same principle to user-facing XMP metadata. This is an advanced-mode, PDF/UA-2-only check - PDF/UA-1 explicitly permitted PUA usage.

WCAG success criteria

2.4.2 Page Titled — Level A

Each page needs a descriptive that identifies its topic or purpose.</p> <p><a href="https://www.w3.org/WAI/WCAG21/Understanding/page-titled.html">Understanding 2.4.2</a></p> <h2 id="standards">Standards<a class="heading-anchor" href="#standards" aria-hidden="true">#</a></h2> <p>This check contributes to the following standards:</p> <p><span class="std-tag" data-std="pdf-ua">PDF/UA</span> <span class="std-tag" data-std="wcag-A">WCAG A</span> <span class="std-tag" data-std="EN-301-549">EN 301 549</span></p> <div class="table-wrap"><table> <thead> <tr> <th>Standard</th> <th>Criteria</th> </tr> </thead> <tbody><tr> <td>PDF/UA-2 (ISO 14289-2:2024)</td> <td>8.6 Text strings</td> </tr> <tr> <td>EN 301 549 (non-web documents)</td> <td>10.2.4.2</td> </tr> </tbody></table></div> </article> <footer class="md-footer"> <span>Generated from <code>@app/a11y-engine</code> rule metadata.</span> <a class="back-top" href="#main">Back to top ↑</a> </footer> </main> <aside class="toc" aria-label="On this page"><div class="toc-title">On this page</div><a class="toc-link toc-h2" href="#why-it-matters" data-toc="why-it-matters">Why it matters</a><a class="toc-link toc-h2" href="#what-you-will-see" data-toc="what-you-will-see">What you will see</a><a class="toc-link toc-h2" href="#how-to-fix" data-toc="how-to-fix">How to fix</a><a class="toc-link toc-h2" href="#step-by-step-guide" data-toc="step-by-step-guide">Step-by-step guide</a><a class="toc-link toc-h2" href="#wcag-success-criteria" data-toc="wcag-success-criteria">WCAG success criteria</a><a class="toc-link toc-h3" href="#2-4-2-page-titled-level-a" data-toc="2-4-2-page-titled-level-a">2.4.2 Page Titled — Level A</a><a class="toc-link toc-h2" href="#standards" data-toc="standards">Standards</a></aside> </div> <script src="/wiki/a11y-rules/assets/wiki.9c7b1306b8.js" defer></script> </body></html>