Matterhorn 17-003 · PDF/UA-1 UA1:7.7-2

Maths symbols that render but cannot be read as characters

BlockerCheckpoint 17: Mathematical ExpressionsWCAG 1.3.1 (A)

Mathematical glyphs — often from a symbol font with no ToUnicode — cannot be mapped to Unicode.

The condition, as the protocol states it. “Unicode mapping requirements are not met.”

Matterhorn Protocol 1.1, checkpoint 17, index 17-003, section UA1:7.7-2. Software can decide this one on its own.

What a screen reader actually does

Operators and Greek letters are announced as replacement characters or dropped.

What the condition is

PDF/UA-1 clause 7.7 has two halves. The first puts every expression in a Formula with /Alt (17-001, 17-002). The second says the Unicode mapping requirements apply to mathematical expressions too: every character code in the formula has to resolve to a Unicode value, through a /ToUnicode CMap or one of the exemptions PDF/UA-1 lists for fonts (clause 7.21.7). Condition 17-003 is that second half failing.

It is the same requirement as 10-001 and 31-027, restated for maths because maths fonts are a common place for it to go wrong.

Why maths fonts in particular

Text fonts commonly use a standard encoding, and a standard encoding is a published table: byte 65 is A. Maths fonts often do not. TeX’s Computer Modern maths fonts each have their own layout — in cmsy10, slot 0 is the minus sign and slot 2 the multiplication sign — and they are typically embedded on that built-in encoding. Without a /ToUnicode map, nothing in the file says what slot 0 means.

$ pdffonts paper.pdf                       (columns abridged)
name                       type      emb sub uni
-------------------------- --------- --- --- ---
ABCDEF+CMR10               Type 1    yes yes yes
GHIJKL+CMMI10              Type 1    yes yes no
MNOPQR+CMSY10              Type 1    yes yes no

The body font maps; the maths fonts do not. The same happens with any symbol font set on a private encoding, and with fonts embedded as Identity-H CID fonts whose producer did not write a map.

What breaks

The page looks right. Then:

  • Copy and paste of the formula gives nothing, boxes, or the wrong letters.
  • Search for a symbol, or a Greek letter in an expression, finds nothing.
  • A reader that reads the expression’s content, rather than its /Alt, gets replacement characters or skips the operators — the screen-reader line at the top of this page.
  • Conversion of the formula to anything else — reflow, HTML, MathML — starts from characters it does not have.

With a good /Alt, a screen-reader user hearing the description may never notice. That is why this condition is easy to leave until someone tries to quote the equation.

How to check it free

Copy the formula into a plain text editor. If the operators come out wrong or missing, the mapping is broken.

pdffonts (Poppler, free). The uni column says whether each font has a /ToUnicode map. no on a font the formula uses is this condition, unless the font is exempt.

veraPDF. Rule 7.21.7-1 reports each glyph that cannot be mapped to Unicode. veraPDF’s PDF/UA-1 profile has no separate rule for the Unicode half of clause 7.7; maths glyphs are reported under that one. (veraPDF PDF/UA-1 rules)

Acrobat’s Accessibility Checker has a Character encoding rule. Adobe notes that some character-encoding problems are not repairable within Acrobat. (Adobe: Create and verify PDF accessibility)

How to fix it free

At the source — this is the real fix.

  • pdfLaTeX: \input{glyphtounicode} and \pdfgentounicode=1 in the preamble make pdfTeX write /ToUnicode maps for Type 1 fonts from their glyph names. The mmap package extends cmap with coverage of Knuth’s maths fonts.
  • LuaLaTeX or XeLaTeX with unicode-math set maths in OpenType maths fonts, which are encoded by Unicode, so a map can be written for them.
  • Office documents: native equations rather than old Equation Editor or MathType objects, which arrive as pictures — a 17-001 problem rather than this one.

See LaTeX to accessible PDF for the tagging side.

In Acrobat, there is no repair to make. Adobe’s advice for character-encoding failures is to verify the fonts are installed, use a different font in the original document, and re-create the PDF.

Where Taggart differs

Taggart reports 17-003 once per document, when the document has at least one Formula and at least one font in use with no /ToUnicode map and no PDF/UA exemption:

The document contains 1 <Formula> element(s) and 1 font(s) with no usable Unicode mapping (/MathSym), so the mathematical characters cannot be extracted.

Four things about how it decides, so the finding reads correctly:

  • It is document-wide. The fonts named are every unmapped font in use, not only the ones inside a formula. The same fonts are also reported as 10-001 and 31-027.
  • Only a missing map counts. A /ToUnicode that exists but leaves out the operators is reported as 10-001, with the missing codes listed, and not as 17-003. Maps that send codes to U+0000 or to a byte-order mark are 31-028 and 31-029.
  • The exemption test reads /Differences, not the font program. A Type 1 font on its built-in encoding — TeX’s maths fonts, or the standard Symbol font — is reported even where the glyph names inside the program might qualify it for the exemption.
  • No Formula, no 17-003. An expression tagged as a paragraph in an unmapped font is reported as 10-001 and 31-027 only.

The repair, tounicode-repair, is never applied in bulk; it is proposed and waits for approval. It writes a map only where the mapping is a lookup rather than a guess: a published encoding, glyph names from the Adobe Glyph List, or the file’s own /ActualText where each glyph sits in a span of its own saying what it is. A font with either of the first two is usually exempt and never flagged here, so for 17-003 the third is the route that matters. A maths font with an Identity-H encoding and none of those is refused:

cannot recover a Unicode mapping for: /MathSym. Re-export the source document with the fonts embedded rather than letting Taggart guess.

The same refusal applies to a Type 1 maths font on its built-in encoding. A wrong map would make the formula extract confidently as the wrong characters, which is harder to notice than characters that do not extract at all.

How Taggart handles it

Taggart checks for this condition automatically and reports it as a blocker, with where in the file it found it.

The fix is Repair ToUnicode CMaps. It changes what the document means, so Taggart proposes it and waits for your approval rather than applying it unattended.

Whatever Taggart changes, the page still looks identical. Fixes edit the PDF object model, not the content streams, and every remediation is re-rendered and compared against the original at structural similarity ≥ 0.999 before you get the file back. A tool that quietly reflows your document is worse than no tool.

Frequently asked questions

The formula has good alt text. Does this still matter?

A screen reader reading the Formula's /Alt never meets the glyphs, so the listener may be fine. Copying, searching, reflow, conversion to other formats and any reader that reads the expression's content rather than its description all get the broken characters — and PDF/UA-1 applies the mapping requirement to formulas in so many words.

Why does Taggart name a font that is not in the formula?

Because the check is document-wide: it pairs the presence of any Formula with every font in use that has no Unicode map. The font named may set the body text. It is still a failure — the same font is reported as 10-001 and 31-027 — but look at which font the formula actually uses before deciding what to repair.

Can Acrobat fix it?

Adobe's own documentation says some character-encoding problems cannot be repaired within Acrobat, and its advice is to use a different font in the original document and re-create the PDF.

Will Taggart write the missing map?

Only where the mapping is a lookup rather than a guess: a standard encoding, glyph names from the Adobe Glyph List, or the file's own ActualText for each glyph. A maths font with an Identity encoding and nothing else to go on is refused, with the reason.

Where this sits in the standards

Standards this condition maps to
StandardReference
Matterhorn Protocol 1.1Checkpoint 17 (Mathematical Expressions), index 17-003
PDF/UA-1 (ISO 14289-1)Clause 7.7-2
WCAG 2.11.3.1 Info and Relationships — Level A
EN 301 549 / Section 508 / ADA Title IIAll three point at WCAG 2.1 Level AA for non-web documents, so a Level A or AA criterion here is in scope for each of them.

Other conditions in checkpoint 17

Checkpoint 17 covers mathematical expressions. These are its other failure conditions; the ones without a link are in the rule set but do not have a written page yet.

Check your own file. Taggart’s validator is free and unlimited — 75 of the 87 Matterhorn conditions software can decide, with the other 12 listed for you to confirm; no watermark, no expiry, and no account needed up to 60 pages.

Check a PDF free

Checked with Taggart on a generated file that fails this condition on . The Acrobat steps follow Adobe’s documentation and were not walked through by hand. Last updated .