Matterhorn 20-002 · PDF/UA-1 UA1:7.10-1
Default layer configuration (/D) has no name
The default optional-content configuration has no name.
The condition, as the protocol states it. “Name entry is missing or has an empty string as its value in an Optional Content Configuration Dictionary that is the value of the D entry in the OCProperties entry in the Catalog dictionary.”
Matterhorn Protocol 1.1, checkpoint 20, index 20-002, section UA1:7.10-1. Software can decide this one on its own.
What a screen reader actually does
The layers panel presents an unnamed default configuration.
The configuration every layered PDF has
A PDF with layers has an /OCProperties dictionary in its catalog, and that dictionary must contain /D: the default configuration. It is the state a viewer sets up when the file opens, and it carries more than on and off:
/D <<
/BaseState /ON % layers not listed below start on
/OFF [ 21 0 R ] % the contour lines start hidden
/Order [ [ (Base map) 19 0 R 20 0 R ] % the layer list a viewer shows,
21 0 R 22 0 R ] % with a labelled group
/RBGroups [ [ 19 0 R 20 0 R ] ] % only one of these on at a time
/Locked [ 22 0 R ] % the user cannot switch this one
>> % no /Name: condition 20-002
Alternate configurations in /Configs are optional (20-001 covers them). /D is required, so every layered file is exposed to this condition, while 20-001 can only arise in files that also carry alternates.
ISO 32000-1 lists /Name as optional for any configuration dictionary. PDF/UA-1 clause 7.10 requires it on /D and on every entry in /Configs. The condition fires when /D has no /Name, or has one that is empty.
What a reader loses
Very little on its own, to be plain about it. The default is applied automatically; nobody picks it from a list, so a file with no alternates may never show its name anywhere. A screen reader reads the content, not the configuration, and nothing about the reading of the page changes.
The name matters where there are alternates and a viewer lists them. There the default is one choice among several, and the one with no label. This is a cheap condition to fix and a minor one to leave, and leaving it still stops a conformance claim, because a validator decides it without asking anyone.
Where it comes from
Anything that creates /OCProperties writes a /D: a layered export from a design or drawing application, or a later edit that adds a layer to an existing PDF. What the producer needs in /D is the on and off state and the list order. Nothing in ISO 32000 asks it for a name, so a producer that is not targeting PDF/UA has no reason to add one.
How to check it free
qpdf. Write the readable form and open it in a text editor:
qpdf --qdf --object-streams=disable map.pdf readable.pdf
Search for /OCProperties, follow it to /D (an indirect reference such as /D 31 0 R, or a dictionary written in place), and look for /Name inside.
veraPDF, validating against PDF/UA-1, reports it under clause 7.10.
Acrobat Pro shows the layers (Menu → View → Show/Hide → Side panels → Layers) and their properties, but not the configuration that holds them, so it cannot tell you whether /D is named. Adobe’s Edit layer properties page covers what it can set: a layer’s name, intent, default state, and its visibility, print and export behaviour. None of those is this.
How to fix it free
By hand, with qpdf. Add one key inside /D in the readable file, such as /Name (Default view), then let qpdf repair the offsets the edit moved and write a normal file:
fix-qdf readable.pdf > named.pdf
qpdf named.pdf map-fixed.pdf
By flattening, if the published copy does not need layers. In Acrobat Pro: Layers panel → Options → Flatten Layers. With no layers left there is no /D to name. Adobe warns that hidden layer content is discarded permanently and that the step cannot be undone (Merge and flatten layers). In the example above that would delete the contour lines, which start hidden, unless you turn them on first.
By re-exporting, and checking the new file, since an export dialog will not tell you whether the default configuration gets a name.
What Taggart does
The check reads /OCProperties /D and reports it when /Name is missing, empty, or only spaces:
The default optional content configuration (/OCProperties /D) has a missing or empty /Name entry.
The repair is optional-content-names, marked safe, so Fix All Safe applies it. It sets the name to Layer configuration D, and in the same pass names any unnamed alternates (20-001) and removes any /AS entry (20-003). The on and off lists, the order, the radio-button groups and the locks are left exactly as they were. The fixture behind this page has a single unnamed /D and no alternates: Taggart reports 20-002 and not 20-001, and after the repair it reports neither.
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 Name optional content configurations. It is mechanical, so “Fix All Safe” applies it along with the others in one pass and lists what it changed. Your original file is never modified.
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 does a configuration nobody chooses need a name?
Because the standard asks for it without conditions, and because the default is not always alone. In a file with alternate configurations, a viewer that lists them would show the default among them, and an unnamed default would be the one entry in that list with nothing to say.
Is the default configuration the same thing as the layer list?
The layer list lives inside it, in /Order, but the names in the list come from each layer's own /Name. A file can have a perfectly labelled layer list and still fail this, because the dictionary holding that list is unnamed.
Does adding the name change what the document shows?
No. /Name is a label. Which layers are on, the order of the list, the locks and the radio-button groups are separate entries, and neither a hand edit nor Taggart's repair touches them.
Where this sits in the standards
| Standard | Reference |
|---|---|
| Matterhorn Protocol 1.1 | Checkpoint 20 (Optional Content), index 20-002 |
| PDF/UA-1 (ISO 14289-1) | Clause 7.10-1 |
| 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
- 20-001 Name missing or empty in an Optional Content Configuration Dictionary in ConfigsOptional content (layer) configurations must be nameable so a user can identify and toggle them.
- 20-003 An AS entry appears in an Optional Content Configuration DictionaryAutomatic state (usage application) entries let content appear or disappear based on zoom or print state, which can hide content from a reader unpredictably. PDF/UA-1 forbids them.
Other conditions in checkpoint 20
Checkpoint 20 covers optional content. These are its other failure conditions; the ones without a link are in the rule set but do not have a written page yet.
- 20-001 Name missing or empty in an Optional Content Configuration Dictionary in ConfigsOptional content (layer) configurations must be nameable so a user can identify and toggle them.
- 20-003 An AS entry appears in an Optional Content Configuration DictionaryAutomatic state (usage application) entries let content appear or disappear based on zoom or print state, which can hide content from a reader unpredictably. PDF/UA-1 forbids them.
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.
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 .