Matterhorn 02-001 · PDF/UA-1 UA1:7.1-3
Custom tag that does not map to a standard type
A custom tag name is present in the role map but the chain of mappings never arrives at a structure type defined in ISO 32000-1, 14.8.4. Mapping may be indirect — a custom type may map to another custom type — but it must eventually terminate.
The condition, as the protocol states it. “One or more non-standard tag's mapping does not terminate with a standard type.”
Matterhorn Protocol 1.1, checkpoint 02, index 02-001, section UA1:7.1-3. Software can decide this one on its own.
What a screen reader actually does
The reader has no idea what the tag means and treats it as a generic container, losing the semantics.
What the role map is for
ISO 32000-1 defines a fixed vocabulary of structure types: P, H1–H6, L, LI, Table, TR, TH, TD, Figure, Link and about thirty more. That is what assistive technology understands.
Producers do not tag with that vocabulary. They tag with the author’s paragraph styles, because that is what they have. So the standard provides a translation table on the structure tree root:
6 0 obj
<< /Type /StructTreeRoot
/K [ 7 0 R ]
/RoleMap << /BodyText /P
/Heading1 /H1
/Heading2 /H2
/PullQuote /BlockQuote >>
>>
endobj
Condition 02-001 is a custom type whose chain never reaches a standard type — either because there is no entry for it, or because the entry points at something that is itself undefined.
What the reader does with an unmapped tag
It treats it as a generic container. The content is still read, so this is not an invisibility failure like 01-005 — but every semantic the tag was carrying is gone.
A Heading2 that does not map to /H2 is not a heading. It does not appear in the heading list, H does not stop on it, and the document’s outline is missing a level. A TableCell that does not map to /TD is not a cell, so the table has no grid. A Figure that does not map is not announced as a graphic.
The document looks tagged, reports as tagged, and behaves like an untagged one for navigation purposes.
The three shapes of the failure
No entry at all. The tag is used in the tree and absent from the role map. Common with hand-assembled PDFs and with library-generated ones.
A chain that dead-ends. PullQuote → Quotation → nothing. Each step looked reasonable to whoever added it.
A circular chain. A → B → A. Resolution never terminates; that is 02-003, reported separately because the repair differs.
And the inverse failure, 02-004: a standard type appearing as a key in the role map. /P mapped to /Span redefines the vocabulary the whole document depends on, and it is forbidden.
How to check it free
Acrobat: Tags panel → Options → Edit Role Map. It lists the document’s custom tags and their targets. Anything with an empty or non-standard target is this condition.
veraPDF: reports it under clause 7.1 with the offending type name.
The quick smell test: open the Tags panel and read the type names. If you see Normal, BodyText, TableParagraph or similar, the document is role-mapped — then check that the map is complete.
How to fix it free, in Acrobat Pro
- Tags panel → Options → Edit Role Map.
- Custom tags appear under the document’s own section.
- Select an unmapped tag → Change Item.
- Choose the standard type it should mean.
- Repeat.
The judgement is in step 4, and it is worth taking seriously: mapping PullQuote to Figure because both are “off to the side” produces a document that announces a quotation as a graphic. Map to what the content is: BlockQuote for a quotation, Caption for a caption, P for prose.
Upstream: in Word, the mapping is derived from the style, and the reliable fix is to use Word’s built-in styles rather than custom ones. In InDesign, set it explicitly per style under Paragraph Styles → Style Options → Export Tagging → PDF, which is where a template should have it configured once.
Where Taggart differs
Taggart resolves each chain and reports the terminus, which tells you whether you are looking at a missing entry or a broken one:
The custom structure type /PullQuote maps to /Quotation, which is not a standard structure type defined in ISO 32000-1, 14.8.4. chain: [“PullQuote”, “Quotation”], terminus: “Quotation”
and, for types used in the tree with no entry at all:
The structure type /BodyText is used 148 time(s) but is neither a standard type nor present in the role map.
The occurrence count is the useful part — it tells you whether an unmapped tag affects one stray element or the entire document body.
The repair is mechanical and ships in “Fix All Safe”. Taggart maps recognised producer names — Normal, BodyText, Standard and their relatives to /P, Heading1..HeadingN to the matching Hn, TableText to /TD — and falls back to /P for anything it does not recognise, on the grounds that a paragraph is the honest default for unknown prose and the change appears in the diff for you to correct. It also breaks cycles and removes entries that remap standard types.
How Taggart handles it
Taggart detects this condition automatically. It is reported as a blocker, with the page, the structure path and the object id of every occurrence.
The fix is Repair the role map. It is mechanical, so “Fix All Safe” applies it in bulk with a diff and a single undo.
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
Why do Word exports produce custom tags at all?
Because Word tags by paragraph style, and your styles have your names. A style called Body Text exports as a tag called Body Text, with a role map entry saying it means /P. That is correct behaviour — the failure is when the map entry is missing or points at another custom type that goes nowhere.
Can a custom type map to another custom type?
Yes, and the protocol allows the chain to be indirect. What it requires is that the chain terminates at a standard type. A maps to B, B maps to P is fine. A maps to B, B maps to C, C is undefined is condition 02-001.
What about H7 and beyond?
ISO 32000-1 only defines H1 through H6. PDF/UA adds the Hn nomenclature for deeper levels, but those are not standard structure types, so they must be role-mapped — and conforming processors are expected to ignore the mapping and respect the heading level.
Is a missing role map entry different from a broken one?
In effect, no — both leave the reader with a tag it cannot interpret. Taggart reports them separately because the fixes differ: a missing entry needs one added, a broken chain needs the terminus corrected.
Where this sits in the standards
| Standard | Reference |
|---|---|
| Matterhorn Protocol 1.1 | Checkpoint 02 (Role Mapping), index 02-001 |
| PDF/UA-1 (ISO 14289-1) | Clause 7.1-3 |
| WCAG 2.1 | 1.3.1 Info and Relationships — Level A |
| EN 301 549 / Section 508 / ADA Title II | All 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. |
Related conditions
- 02-003 A circular mapping exists The role map contains a cycle: A maps to B, B maps back to A. Resolution never terminates.
- 02-004 One or more standard types are remapped A standard structure type appears as a key in the role map — for example /P mapped to /Span. Standard types must never be remapped; doing so redefines the vocabulary the whole file depends on.
- 01-006 Structure type is not semantically appropriate The tag does not match the nature of the content: a heading tagged as a paragraph, a data table tagged as a layout container, a caption tagged as body text. This is the judgment call that no validator can make for you.
- 14-004 Numbered heading tags do not use Arabic numerals Custom heading tags like "Heading-One" or "HI" must role-map to H1–H6 or to Hn using Arabic numerals.
Other conditions in checkpoint 02
Checkpoint 02 covers role mapping. These are its other failure conditions; the ones without a link are in the rule set but do not have a written page yet.
- 02-002 Role mapping is semantically inappropriate The role map terminates at a standard type, but the wrong one — a custom "Sidebar" mapped to Table, or "PullQuote" mapped to Figure.
- 02-003 A circular mapping exists The role map contains a cycle: A maps to B, B maps back to A. Resolution never terminates.
- 02-004 One or more standard types are remapped A standard structure type appears as a key in the role map — for example /P mapped to /Span. Standard types must never be remapped; doing so redefines the vocabulary the whole file depends on.
Check your own file. Taggart’s validator is free and unlimited — every machine-checkable Matterhorn condition, no watermark, no expiry, and no account needed up to 60 pages.
Verified against a real document on . Last updated .