Reference
Every Matterhorn Protocol failure condition
The Matterhorn Protocol is how PDF/UA-1 conformance is actually tested:31 checkpoints, 136 failure conditions, of which 87 can be decided by software and 47 require human judgement. This is the whole list, with what each one means in practice.
Why most of these are not links yet. A page goes up when somebody has followed its fix instructions on a real document and confirmed they work — not when the rule exists in a data file. Publishing 145 template-filled pages would be the exact thing Google warns programmatic SEO turns into. The rest are being written in batches.
Checkpoint 01: Real content tagged
PDF/UA-1 clause 7.1 · 7 failure conditions · 7 written
- 01-001 Warning Artifact tagged as real contentDecoration — a rule line, a page-border image, a watermark, a background flourish — has been given a real content tag, so assistive technology announces it as if it were part of the document.
- 01-002 Warning Real content marked as artifactContent that carries meaning has been marked as an artifact, which removes it from the structure tree entirely. This is the most damaging single mistake in PDF remediation because the content becomes invisible rather than merely mis-labelled.
- 01-003 Blocker Content marked as Artifact is present inside tagged contentA BMC/BDC artifact sequence has been opened while a marked-content sequence for real content is still open. Artifacts and real content may not be nested inside one another.
- 01-004 Blocker Tagged content is present inside content marked as ArtifactA marked-content sequence for real content has been opened inside an open artifact sequence. The artifact swallows the real content.
- 01-005 Blocker Content is neither marked as Artifact nor tagged as real contentEvery text-showing, image-painting and path-painting operator on a page must sit either inside a marked-content sequence that maps to the structure tree, or inside an artifact sequence. Content that is in neither is orphaned.
- 01-006 Human decision Structure type is not semantically appropriateThe 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.
- 01-007 Blocker Suspects entry has a value of trueThe MarkInfo dictionary carries /Suspects true, which is the producing application's own declaration that its tagging may be unreliable. PDF/UA-1 requires the value to be false.
Checkpoint 02: Role Mapping
PDF/UA-1 clause 7.1 · 4 failure conditions · 4 written
- 02-001 Blocker Non-standard tag mapping does not terminate with a standard typeA 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.
- 02-002 Human decision Role mapping is semantically inappropriateThe role map terminates at a standard type, but the wrong one — a custom "Sidebar" mapped to Table, or "PullQuote" mapped to Figure.
- 02-003 Blocker A circular mapping existsThe role map contains a cycle: A maps to B, B maps back to A. Resolution never terminates.
- 02-004 Blocker One or more standard types are remappedA 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.
Checkpoint 03: Flickering
PDF/UA-1 clause 7.1 · 3 failure conditions · 3 written
- 03-001 Human decision One or more Actions lead to flickeringPage or annotation actions produce flashing that can trigger photosensitive seizures.
- 03-002 Human decision Multimedia objects contain flickering contentEmbedded video or animation flashes more than three times per second.
- 03-003 Human decision JavaScript actions lead to flickeringDocument-level or field-level JavaScript animates content at a rate that can trigger seizures.
Checkpoint 04: Color and Contrast
PDF/UA-1 clause 7.1 · 1 failure condition · 1 written
Checkpoint 05: Sound
PDF/UA-1 clause 7.1 · 3 failure conditions · 3 written
- 05-001 Human decision Media annotation present, but audio content not available in another formEmbedded media carries information in audio with no transcript or equivalent text in the document.
- 05-002 Human decision Audio annotation present, but content not available in another formA Sound annotation carries information with no transcript.
- 05-003 Human decision JavaScript uses beep but provides no other notificationForm validation signals an error only with app.beep().
Checkpoint 06: Metadata
PDF/UA-1 clause 7.1 · 4 failure conditions · 4 written
- 06-001 Blocker Document does not contain an XMP metadata streamThe catalog has no /Metadata entry pointing at an XMP packet. PDF/UA-1 requires one — it is where the conformance claim and the document title live.
- 06-002 Blocker XMP metadata does not include the PDF/UA identifierThe PDF/UA identification schema (pdfuaid:part) is absent, so the file does not actually claim PDF/UA-1 conformance even if it meets every other requirement. Taggart does not write the identifier as a batch fix: it is a claim of conformance, and it is written only through the conformance-claim step, which refuses unless re-validation of the output finds no blockers.
- 06-003 Blocker XMP metadata stream does not contain dc:titleThe Dublin Core title property is missing from the XMP packet.
- 06-004 Warning dc:title does not clearly identify the documentA title is present but useless: the filename, "Microsoft Word - Document1", "untitled", or the template name.
Checkpoint 07: Dictionary
PDF/UA-1 clause 7.1 · 2 failure conditions · 2 written
- 07-001 Blocker ViewerPreferences does not contain DisplayDocTitleWithout /DisplayDocTitle the viewer is free to show the filename in the window title instead of the document title.
- 07-002 Blocker DisplayDocTitle is falseThe entry is present and explicitly instructs the viewer to show the filename rather than the title.
Checkpoint 08: OCR Validation
PDF/UA-1 clause 7.1 · 2 failure conditions · 2 written
- 08-001 Human decision OCR-generated text contains significant errorsThe invisible text layer produced by OCR does not match the visible glyphs. Confusions like rn→m, l→1, and dropped Hebrew niqqud are typical.
- 08-002 Human decision OCR-generated text is not taggedOCR added a text layer but no structure tree, so the document is searchable but not navigable.
Checkpoint 09: Appropriate Tags
PDF/UA-1 clause 7.2 · 8 failure conditions · 8 written
- 09-001 Warning Tags are not in logical reading orderThe order of elements in the structure tree does not match the order a human would read the page. This is the single most common substantive defect in tagged PDFs and the one Acrobat's own tooling handles worst.
- 09-002 Human decision Structure elements are nested in a semantically inappropriate mannerNesting that is syntactically legal but semantically nonsense — a Table inside an H2, a paragraph containing a section.
- 09-003 Human decision Structure type is not semantically appropriate after role mappingOnce role mapping has been resolved, the effective type still does not describe the content.
- 09-004 Blocker A table-related structure element does not conform to ISO 32000-1, Table 337The table grammar is broken: a TD outside a TR, a TR outside Table/THead/TBody/TFoot, a Table with no rows, or rows that span different numbers of columns.
- 09-005 Blocker A list-related structure element does not conform to ISO 32000-1, Table 336The list grammar is broken: an LI outside an L, an Lbl or LBody outside an LI, a list item with no LBody.
- 09-006 Blocker A TOC-related structure element does not conform to ISO 32000-1, Table 333TOCI appears outside a TOC, or a TOC contains children other than TOC and TOCI.
- 09-007 Blocker A Ruby-related structure element does not conform to ISO 32000-1, Table 338RB, RT or RP appears outside a Ruby element, or Ruby has an illegal child sequence.
- 09-008 Blocker A Warichu-related structure element does not conform to ISO 32000-1, Table 338WT or WP appears outside a Warichu element, or Warichu has an illegal child sequence.
Checkpoint 10: Character Mappings
PDF/UA-1 clause 7.2 · 1 failure condition · 1 written
Checkpoint 11: Declared Natural Language
PDF/UA-1 clause 7.2 · 7 failure conditions · 7 written
- 11-001 Blocker Natural language for text in page content cannot be determinedNo /Lang is in effect for some text: neither on the catalog, nor on an enclosing structure element, nor on a marked-content sequence.
- 11-002 Blocker Natural language for Alt, ActualText and E cannot be determinedAlternative text, actual text and expansion text are announced by the reader and therefore need a determinable language just as page content does.
- 11-003 Blocker Natural language in the Outline entries cannot be determinedBookmark titles have no determinable language.
- 11-004 Blocker Natural language in the Contents entry for annotations cannot be determinedAnnotation Contents strings — link descriptions, comments — have no determinable language.
- 11-005 Blocker Natural language in the TU entry for form fields cannot be determinedForm field tooltips are the accessible name of the field and need a determinable language.
- 11-006 Blocker Natural language for document metadata cannot be determinedThe XMP dc:title (and other metadata) has no xml:lang and the catalog has no /Lang.
- 11-007 Warning Natural language is not appropriateA language is declared but it is the wrong one — a Hebrew document declared en-US, or an English abstract inside a Hebrew paper inheriting he-IL.
Checkpoint 12: Stretchable Characters
PDF/UA-1 clause 7.2 · 1 failure condition · 1 written
Checkpoint 13: Graphics
PDF/UA-1 clause 7.3 · 8 failure conditions · 8 written
- 13-001 Warning Graphics objects are not tagged with a Figure tagAn image or vector drawing that carries meaning is not inside a Figure element. Either it is untagged, or it has been swept into a paragraph.
- 13-002 Human decision A link with a meaningful background lacks alternative text for bothAn image link — a button, a logo that navigates — needs alternative text that conveys both what the graphic shows and where the link goes.
- 13-003 Warning A caption is not tagged with a Caption tag"Figure 3: Quarterly revenue" is tagged as a paragraph rather than as a Caption associated with its figure or table.
- 13-004 Blocker Figure tag alternative or replacement text missingA Figure element has neither /Alt nor /ActualText. Every Figure must have one or the other; if the image is decorative it should be an artifact instead of a Figure.
- 13-005 Human decision ActualText used for a Figure for which alternative text is more appropriateActualText replaces the content for text-extraction purposes; Alt describes it. A photograph needs Alt. A drop cap or a glyph-as-image needs ActualText.
- 13-006 Human decision A graphic with meaning only as part of a group is tagged on its ownA chart built from dozens of separate vector paths has been tagged as dozens of Figures instead of one. Each fragment is meaningless alone.
- 13-007 Human decision A more accessible representation is not usedA data table rendered as a picture, or body text set as an image, when real text and real table structure were available.
- 13-008 Human decision ActualText not present when a Figure is intended to be consumed primarily as textA drop cap, a logo that is a word, an image of a signature block — content that is text — needs ActualText so it flows into the text stream.
Checkpoint 14: Headings
PDF/UA-1 clause 7.4 · 7 failure conditions · 7 written
- 14-001 Warning Headings are not taggedText that is visually a heading — larger, bolder, isolated — is tagged as a paragraph. The document has no navigable outline.
- 14-002 Blocker First heading tag is not H1The document uses numbered headings (H1–H6) but the first one encountered in the structure tree is not an H1.
- 14-003 Blocker Numbered heading levels in descending sequence are skippedThe heading hierarchy jumps a level going down — H1 straight to H3. Going back up any number of levels is fine; going down must be one level at a time.
- 14-004 Human decision Numbered heading tags do not use Arabic numeralsCustom heading tags like "Heading-One" or "HI" must role-map to H1–H6 or to Hn using Arabic numerals.
- 14-005 Human decision Content representing a 7th level (or higher) heading does not use an H7 (or higher) tagDocuments deeper than six levels must use Hn tags (H7, H8 …), role-mapped because ISO 32000-1 defines only H1–H6.
- 14-006 Blocker A node contains more than one H tagIn the strong-structure model, an unnumbered H derives its level from nesting depth, so a single structural node may contain at most one H.
- 14-007 Blocker Document uses both H and H# tagsA document must commit to one heading model: strong structure (H, levelled by nesting) or weak structure (H1–H6). Mixing them makes the level of any given heading ambiguous.
Checkpoint 15: Tables
PDF/UA-1 clause 7.5 · 5 failure conditions · 5 written
- 15-001 Warning A row has a header cell, but that header cell is not tagged as a headerThe leftmost (or, in RTL, rightmost) cell of each row labels the row but is tagged TD instead of TH.
- 15-002 Warning A column has a header cell, but that header cell is not tagged as a headerThe top row labels the columns but is tagged as ordinary data cells.
- 15-003 Blocker A TH cell does not contain a Scope attributeHeader cells must declare whether they head a row, a column, or both, unless the table instead uses explicit /Headers ID references on every data cell.
- 15-004 Warning Content is tagged as a table for information not organized in rows and columnsA table used purely to position content on the page — a two-column layout, a form arrangement — has been tagged as a real table.
- 15-005 Human decision A given cell's header cannot be unambiguously determinedIn a complex table — merged cells, stacked header rows, split spans — Scope alone cannot express the associations, so explicit /Headers references are required.
Checkpoint 16: Lists
PDF/UA-1 clause 7.6 · 3 failure conditions · 3 written
- 16-001 Warning Ordered list has no ListNumbering attributeAn L element whose items are numbered lacks the /ListNumbering attribute that tells the reader the numbering scheme.
- 16-002 Warning ListNumbering value is not one of the permitted valuesListNumbering is present but carries a value outside the permitted set — often /None or /Disc on a genuinely ordered list.
- 16-003 Warning Content is a list but is not tagged as a listBulleted or numbered content is a run of paragraphs, with the bullet characters sitting in the text as literal glyphs.
Checkpoint 17: Mathematical Expressions
PDF/UA-1 clause 7.7 · 3 failure conditions · 3 written
- 17-001 Warning Content is a mathematical expression but is not tagged with a Formula tagAn equation is tagged as a paragraph or a figure rather than a Formula.
- 17-002 Blocker Formula tag is missing an Alt attributeA Formula element has no /Alt giving the expression in words.
- 17-003 Blocker Unicode mapping requirements are not met for a formulaMathematical glyphs — often from a symbol font with no ToUnicode — cannot be mapped to Unicode.
Checkpoint 18: Page Headers and Footers
PDF/UA-1 clause 7.8 · 2 failure conditions · 2 written
- 18-001 Warning Headers and footers are not marked as pagination artifactsRunning heads, footers and page numbers are tagged as real content, so they repeat in the reading order on every page.
- 18-002 Warning Header or footer artifacts are not classified as Header or Footer subtypesThe content is an artifact but carries no /Subtype /Header or /Subtype /Footer, so a processor cannot offer to read running content on demand.
Checkpoint 19: Notes and References
PDF/UA-1 clause 7.9 · 4 failure conditions · 4 written
- 19-001 Warning Footnotes or endnotes are not tagged as NoteFootnote text at the bottom of the page is tagged as an ordinary paragraph.
- 19-002 Warning References are not tagged as ReferenceThe in-text citation marker is not tagged as a Reference pointing at the note.
- 19-003 Blocker ID entry of the Note tag is not presentEvery Note element must carry an /ID so references can point at it.
- 19-004 Blocker ID entry of the Note tag is non-uniqueTwo or more Note elements share an /ID, usually because a template was copied per page.
Checkpoint 20: Optional Content
PDF/UA-1 clause 7.10 · 3 failure conditions · 3 written
- 20-001 Blocker 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-002 Blocker Name missing or empty in the default Optional Content Configuration DictionaryThe default optional-content configuration has no name.
- 20-003 Blocker 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.
Checkpoint 21: Embedded Files
PDF/UA-1 clause 7.11 · 1 failure condition · 1 written
Checkpoint 22: Article Threads
PDF/UA-1 clause 7.12 · 1 failure condition · 1 written
Checkpoint 23: Digital Signatures
PDF/UA-1 clause 7.13 · 1 failure condition · 1 written
Checkpoint 24: Non-Interactive Forms
PDF/UA-1 clause 7.14 · 1 failure condition · 1 written
Checkpoint 25: XFA
PDF/UA-1 clause 7.15 · 1 failure condition · 1 written
Checkpoint 26: Security
PDF/UA-1 clause 7.16 · 2 failure conditions · 2 written
- 26-001 Blocker The file is encrypted but does not contain a P entry in its encryption dictionaryWithout a /P permissions entry there is no declaration that content may be extracted for accessibility.
- 26-002 Blocker The 10th bit position of the P entry is falseBit 10 of the permissions flags is the "extract for accessibility" permission. Clearing it tells assistive technology it may not read the file.
Checkpoint 27: Navigation
PDF/UA-1 clause 7.17 · 1 failure condition · 1 written
Checkpoint 28: Annotations
PDF/UA-1 clause 7.18 · 18 failure conditions · 18 written
- 28-001 Warning An annotation is not in correct reading orderThe annotation's position in the structure tree does not match where it appears on the page.
- 28-002 Blocker An annotation is not a direct child of an Annot structure elementNon-widget, non-link annotations must sit inside an Annot structure element so they have a place in the reading order.
- 28-003 Human decision An annotation is used for visual formatting but is not tagged according to its semantic functionA Square or Line annotation used to draw a box round a callout is decoration and should be artifacted, or tagged for what it actually means.
- 28-004 Blocker An annotation has neither a Contents entry nor an alternative descriptionEvery non-widget annotation needs an accessible description, either in its own /Contents or in the /Alt of the structure element that encloses it.
- 28-005 Blocker A form field has neither a TU entry nor an alternative descriptionThe /TU tooltip is the accessible name of a PDF form field. Without it the field has no name at all — the visible label printed next to it is not connected to the control.
- 28-006 Blocker An annotation with subtype undefined in ISO 32000 does not meet 7.18.1A custom annotation subtype still has to be placed in the structure tree and described.
- 28-007 Blocker An annotation of subtype TrapNet existsTrapNet annotations are prepress artefacts and are forbidden in PDF/UA-1.
- 28-008 Blocker A page containing an annotation does not contain a Tabs entryAny page carrying annotations must declare a tab order. PDF/UA-1 requires /Tabs /S — tab order follows the structure tree.
- 28-009 Blocker A page containing an annotation has a Tabs entry with a value other than S/Tabs is present but set to /R (row order) or /C (column order) rather than /S (structure order).
- 28-010 Blocker A widget annotation is not nested within a Form tagEvery form control must sit inside a Form structure element.
- 28-011 Blocker A link annotation is not nested within a Link tagA link annotation must be a child of a Link structure element containing the link's text, joined by an object reference (/OBJR).
- 28-012 Blocker A link annotation does not include an alternate description in its Contents entryLink annotations need /Contents describing where the link goes.
- 28-013 Human decision An IsMap entry is true but the functionality is not provided in some other wayA server-side image map requires pointing at a pixel, which is not possible without a mouse.
- 28-014 Blocker CT entry is missing from the media clip data dictionaryThe media clip's content type (/CT) is required so a processor knows what it is being asked to play.
- 28-015 Blocker Alt entry is missing from the media clip data dictionaryMedia clips require an /Alt array giving a text description.
- 28-016 Blocker File attachment annotations do not conform to 7.11The file specification referenced by a FileAttachment annotation must carry both /F and /UF.
- 28-017 Blocker A PrinterMark annotation is included in the logical structureCrop marks and registration targets are production artefacts and must not appear in the structure tree.
- 28-018 Blocker The appearance stream of a PrinterMark annotation is not marked as ArtifactThe content inside a PrinterMark's appearance stream must itself be artifacted.
Checkpoint 29: Actions
PDF/UA-1 clause 7.19 · 1 failure condition · 1 written
Checkpoint 30: XObjects
PDF/UA-1 clause 7.20 · 2 failure conditions · 2 written
- 30-001 Blocker A reference XObject is presentReference XObjects import content from an external file, which may not be available. PDF/UA-1 forbids them.
- 30-002 Blocker Form XObject contains MCIDs and is referenced more than onceAn MCID is only unique within one content stream. Re-using an XObject that contains MCIDs makes the structure-to-content mapping ambiguous.
Checkpoint 31: Fonts
PDF/UA-1 clause 7.21 · 30 failure conditions · 30 written
- 31-001 Blocker CIDSystemInfo Registry values are not identicalThe CMap and the descendant CID font must agree on the character collection registry.
- 31-002 Blocker CIDSystemInfo Ordering values are not identicalThe CMap and the descendant CID font must agree on the character collection ordering.
- 31-003 Blocker CIDSystemInfo Supplement of the CID font is lower than that of the CMapThe font's character collection supplement must be at least as new as the CMap's, or the CMap may reference CIDs the font does not define.
- 31-004 Blocker A Type 2 CID font contains neither a stream nor the name Identity as CIDToGIDMapCIDToGIDMap must be either the name /Identity or a stream mapping CIDs to glyph indices.
- 31-005 Blocker A Type 2 CID font does not contain a CIDToGIDMap entryThe entry is absent entirely.
- 31-006 Blocker A CMap is neither listed in ISO 32000-1 Table 118 nor embeddedA predefined CMap must be one of the standard names; anything else must be embedded in the file.
- 31-007 Blocker The WMode entry in a CMap dictionary is not identical to the WMode value in the CMap streamWriting mode (horizontal or vertical) must be declared consistently in the dictionary and the stream.
- 31-008 Blocker A CMap references another CMap which is not listed in ISO 32000-1 Table 118A UseCMap chain must terminate at a predefined CMap.
- 31-009 Blocker For a font used by text intended to be rendered the font program is not embeddedPDF/UA-1 requires every font used for visible text to be embedded, so the document renders and extracts identically everywhere. A glyph counts as rendered if the text render mode is not 3.
- 31-010 Human decision A font program is embedded that is not legally embeddable for unlimited, universal renderingThe font's embedding permission bits forbid the kind of embedding used. Machines can read the flags but the flags may not reflect the actual licence.
- 31-011 Blocker The embedded font program does not contain glyphs for all referenced glyphsThe subset embedded in the file is missing glyphs the content stream asks for — very common when a document is edited after subsetting.
- 31-012 Blocker A glyph present in an embedded Type 1 font program is not listed in CharSetCharSet must accurately list the glyphs in the embedded subset.
- 31-013 Blocker A glyph listed in CharSet is not present in the Type 1 font programCharSet promises glyphs the font does not contain.
- 31-014 Blocker A glyph present in an embedded CID font program is not listed in CIDSetCIDSet must accurately list the CIDs in the embedded subset.
- 31-015 Blocker A glyph listed in CIDSet is not present in the CID font programCIDSet promises CIDs the font does not contain.
- 31-016 Blocker Glyph widths in the font dictionary and the font program differThe /Widths array must agree with the embedded font program.
- 31-017 Blocker A non-symbolic TrueType font has no non-symbolic cmapA font declared non-symbolic must actually carry a (3,1) or (1,0) cmap subtable.
- 31-018 Blocker A glyph cannot be looked up by any non-symbolic cmap entrySome rendered glyph is unreachable through the declared cmap tables.
- 31-019 Blocker The font dictionary for a non-symbolic TrueType font does not contain an Encoding entryNon-symbolic TrueType fonts must declare an /Encoding.
- 31-020 Blocker The Encoding dictionary for a non-symbolic TrueType font does not contain BaseEncodingIf /Encoding is a dictionary it must name a /BaseEncoding.
- 31-021 Blocker BaseEncoding is neither MacRomanEncoding nor WinAnsiEncodingOnly MacRomanEncoding and WinAnsiEncoding are permitted for non-symbolic TrueType fonts.
- 31-022 Blocker Differences contains glyph names not listed in the Adobe Glyph ListGlyph names in /Differences must be resolvable through the Adobe Glyph List so a processor can derive Unicode.
- 31-023 Blocker Differences present but the font has no (3,1) Microsoft Unicode cmapThe Differences array is resolved through the (3,1) cmap; without it the mapping is undefined.
- 31-024 Blocker The Encoding entry is present in the font dictionary for a symbolic TrueType fontSymbolic TrueType fonts must not carry an /Encoding; the font's own cmap governs.
- 31-025 Blocker The embedded font program for a symbolic TrueType font contains no cmapA symbolic TrueType font must contain at least one cmap subtable.
- 31-026 Blocker A symbolic TrueType font has multiple cmaps but none is a (3,0) Microsoft Symbol cmapWith multiple cmaps present, a (3,0) symbol cmap is required to disambiguate.
- 31-027 Blocker A font dictionary does not contain the ToUnicode entry and no exemption appliesA ToUnicode CMap is required unless the font uses MacRoman/MacExpert/WinAnsi encoding, or is a Type 1/Type 3 whose glyph names are all in the Adobe Glyph List or the Symbol set, or is a Type 0 whose descendant uses a standard Adobe character collection, or is a non-symbolic TrueType.
- 31-028 Blocker Unicode values in the ToUnicode CMap are zeroU+0000 is not a valid mapping target; it usually means the producer could not determine the character and wrote a placeholder.
- 31-029 Blocker Unicode values in the ToUnicode CMap are U+FEFF or U+FFFEByte-order marks are not characters and must not appear as mapping targets.
- 31-030 Blocker Characters used in text showing operators reference the .notdef glyphThe content stream paints glyph index 0, which is by definition "no glyph" — typically a hollow box or nothing at all.
Right-to-left text and reading order (Taggart extension)
PDF/UA-1 clause n/a · 6 failure conditions · 6 written
- TG-RTL-001 Blocker Right-to-left text is stored in visual orderOlder Israeli government, legal and DTP systems lay out Hebrew by reversing the character order and then rendering left-to-right. The page looks correct, but the stored text is backwards. Extracting it gives you the sentence mirrored, and the bidi algorithm then reverses it a second time.
- TG-RTL-002 Blocker A right-to-left run has no language declarationThe document declares en-US at the catalog and never overrides it, so Hebrew paragraphs inherit English.
- TG-RTL-003 Warning A mixed-direction run is not correctly orderedHebrew sentences containing English product names, dates, percentages or citation numbers are the hardest bidi case. Producers frequently reverse the RTL and leave the LTR runs alone, or reverse everything.
- TG-RTL-004 Blocker Reading order is not right-to-left awareAuto-tagging tools order blocks left-to-right, top-to-bottom. In a Hebrew two-column layout the correct order is right column first.
- TG-RTL-005 Warning Right-to-left punctuation or numerals are misplacedA full stop that renders at the left edge of a Hebrew line must be stored at the end of the logical string, not the beginning. Brackets must be stored as the logical opening/closing character, not the visually mirrored one.
- TG-RTL-006 Human decision Right-to-left storage order could not be determinedTwo signals decide whether a right-to-left line is stored in visual or logical order: the direction successive text-showing operations move across the page, and whether letters that only ever end a word are sitting at the ends of words. Some lines give neither — a line painted as one operation has no direction to read, and a short line may carry no position-locked letters. Those lines are listed here rather than counted as passing. A document whose remaining lines were all repaired but which still holds undecided ones has not been shown to be correct; it has been shown not to be provably wrong, which is a different claim.
Checkpoint TG-STRUCT: Structure-tree hygiene (Taggart extension)
PDF/UA-1 clause n/a · 1 failure condition · 1 written
Checkpoint TG-SCAN: Scanned documents
PDF/UA-1 clause · 1 failure condition · 1 written
New checks, as they are written
A short note when a batch of /checks/ pages goes up, when the rule set changes, or when something ships. No more than monthly, and nothing else — no drip sequence, no webinar invitations.
One click to unsubscribe, in every message. We do not sell or share the list.
Checkpoint identifiers and failure-condition text are quoted from the PDF Association's Matterhorn Protocol 1.1 for interoperability. The plain-language explanations, severity model, screen-reader impact and remediation guidance are Taggart's own work. Taggart is not affiliated with the PDF Association.