Skip to content

08 — Digital-to-Print Fidelity (`PRINT-FIDELITY`)

Status: NORMATIVE. Section owner: pipeline/audit engineering. Related: Issue #2852. Sibling sections referenced by rule ID: 01 Typography (PRINT-TYPO), 02 Color/contrast (PRINT-COLOR), 03 Layout (PRINT-LAYOUT), 04 Forms (PRINT-FORM), 05 Substrate (PRINT-SUBSTRATE), 06 Alternate formats (PRINT-ALT), 09 Validation (PRINT-VALID).

Thesis. Accessibility semantics live in a layer that does not print. A tagged PDF carries a parallel structural document — the tag tree, roles, alt text, scope, field metadata, MathML — that assistive technology consumes and that ink never renders. Print flattens the document to its visual layer only. This section maps, affordance by affordance, what is lost at the paper boundary and what visual construct MUST take its place so the printed artifact still communicates. When these two objectives collide, PRINT-FIDELITY-003 governs; where a link’s destination is at stake, PRINT-FIDELITY-004; complex-image descriptions, PRINT-FIDELITY-005; equations, PRINT-FIDELITY-006.

Most rules in this section are our-implementation rules: engineering constraints we impose on our own pipelines. They do not carry external regulatory force. Where a rule inherits intent from WCAG or PDF/UA it is cited, but the SC text is not restated.


Level: SHOULD Applies to: all documents Source: our-implementation rule (analytical); intent traces to WCAG 2.1 and ISO 14289-1 (PDF/UA-1) Source strength: industry practice Machine-checkable: partial Validation: Each affordance’s presence in the source is machine-detectable (tag tree via pikepdf/veraPDF; widget metadata via the AcroForm dictionary). Whether the visual compensation was actually applied is partial-to-manual: some compensations are detectable (a visible caption sibling to a /Figure, a printed URL near a /Link), others require human confirmation (that the caption is equivalent, not merely present).

The pipeline SHOULD treat the following table as the canonical map of what happens to each digital accessibility affordance when the document is printed, and SHOULD emit the required visual compensation whenever the affordance is present in the source and the output may be printed. “Survives” means the affordance is inherently visual and reaches paper intact; “Degraded” means partial information survives; “Lost” means nothing of it reaches paper without an added visual construct.

Digital affordancePrint fateWhat is lost / whyRequired visual compensation on paperRelated rule
Tag structure (tag tree / role map)LostThe entire structural layer is non-printing; AT reads it, ink does not.Visual structure must independently carry meaning: heading typography, whitespace grouping, list markers, table rules. The layout must be self-describing without tags.PRINT-LAYOUT-002, PRINT-LAYOUT-003
Reading order (structure-tree /K element sequence, keyed per page via /StructParents)DegradedOn paper reading order is inferred from visual placement, not the tag stream; multi-column and floated layouts can be traversed wrongly.Single logical column where feasible; unambiguous column rules/whitespace; never rely on tag order to disambiguate.PRINT-LAYOUT-001, PRINT-FORM-018
Alt text (/Alt on /Figure)LostAlt text is a non-printing string on the structure element.Visible caption or in-line description adjacent to the image conveying the same information.PRINT-LAYOUT-008, PRINT-FIDELITY-005
Long description (/ActualText, longdesc, associated file)LostExtended description of charts/complex images is metadata only.Printed long-form text near the figure, or a clearly referenced appendix entry.PRINT-FIDELITY-005
Table header scope (/TH with /Scope, Headers/IDs)LostHeader–data association is a structural relationship, invisible on paper.Visually unmistakable headers: bold/shaded header row and stub column, header-row repetition across page breaks, ruling that makes association obvious.PRINT-LAYOUT-005, PRINT-LAYOUT-006
Form field name (/T)LostThe field’s programmatic name never prints; only its geometry does.A visible printed label positioned before the fill space.PRINT-FORM-012, PRINT-FORM-008
Form field description / tooltip (/TU)Lost/TU is spoken by AT; it has no visual rendering.Static printed instruction text before the field (format hints, examples).PRINT-FORM-013, PRINT-FORM-017
Form field value constraints / validationLostValidation is interactive; paper has no runtime.Static instructional text stating the required format/range/units.PRINT-FORM-016
Link text + destination (/Link + URI action)DegradedAnchor text prints as ordinary type; the URI target is an invisible action.Surface the destination per PRINT-FIDELITY-004 (inline, footnote, or reference list) when the destination is not otherwise recoverable.PRINT-FIDELITY-004
Language attributes (/Lang, inline language spans)LostLanguage tagging drives pronunciation/hyphenation in AT only.No general visual substitute; where a passage is in another language and that matters to comprehension, indicate it in visible text (e.g., a label or note).PRINT-LANG-003
Bookmarks / navigation (document outline)LostThe outline tree is a viewer affordance.Printed table of contents with page numbers; running section headers; “Page X of Y”.PRINT-LAYOUT-009, PRINT-LAYOUT-010
List semantics (/L, /LI, /Lbl, /LBody)Lost (semantics) / Survives (markers)The list role is structural; only the visible bullets/numbers print.Visually distinct, consistent markers and indentation so the list reads as a list.PRINT-LAYOUT-004
Heading levels (/H1…/H6)Lost (level) / Survives (appearance)The numeric level is structural; only the visual weight/size prints.A consistent, monotonic typographic hierarchy (size + weight + space) that makes level obvious by sight.PRINT-LAYOUT-002, PRINT-TYPO-002
Artifact marking (/Artifact)Lost (marking) / Survives (pixels)Artifact classification (running headers, decorative rules, watermarks) is structural; the marks themselves print.Decorative/background elements must not impair legibility of real content in print (watermark density, background tint limits).PRINT-COLOR-006, PRINT-TYPO-014
MathML (associated math structure)Lost (math semantics) / Survives (rendered glyphs)The MathML/spoken-math layer is non-printing; only the typeset equation prints.The visually typeset equation must be present and legible; provide a text note or reference for anything the equation alone cannot convey to a non-visual reader of the alternate format.PRINT-FIDELITY-006

Rationale: Without this map, remediation teams assume a “tagged, PDF/UA-clean” file is automatically print-accessible. It is not: every non-visual affordance silently disappears on paper, excluding low-vision readers of the printed copy and anyone relying on the printed artifact rather than the screen file. The table is the contract that forces a visual answer for each lost affordance.

Implementation notes: This table is the source of truth for the PRINT-FIDELITY-002 profile and for the audit tooling’s print-fidelity checks. In the preserve (“flyer”) lane, affordances already exist in the source PDF, so the check is “is the visual compensation also present?” In the reflow / WeasyPrint lane and docx→AcroForm lane, we control emission and MUST generate the compensation at build time (captions from alt text, printed labels from /T//TU, printed URLs from link actions). The audit/ACR tooling can report presence of affordance + presence of a plausible compensation; equivalence remains an assistable/human check (§09). The tag-tree editor exposes the affordance layer directly and is where a human confirms compensation adequacy. The flipbook is screen-only and is exempt from print compensation, but MUST NOT be offered as the accessible alternate to a printed document.


Level: MUST Applies to: all documents Source: our-implementation rule; bundles WCAG 2.1 AA + ISO 14289-1 (PDF/UA-1) intent with the print-specific sections of this KB Source strength: our-implementation rule Machine-checkable: partial Validation: A file is print-safe-profile-conformant when it (a) passes our existing screen conformance gate (veraPDF PDF/UA-1 clean + WCAG AA checks) AND (b) satisfies the machine-checkable print rules enumerated below, each verified by its own rule’s method in §09. Partial because several bundled rules (e.g. contrast on paper, comprehension) are assistable/human-only.

Any artifact we emit that may be printed MUST conform to the print-safe profile: the intersection of screen PDF/UA + WCAG AA and the print regime, such that a single file is conformant when viewed and when printed at 100%. The profile bundles, at minimum, these rule IDs:

  • Typography floor: PRINT-TYPO-001 (body min point size), PRINT-TYPO-003 (footnote/disclaimer min), PRINT-TYPO-009 (leading ratio), PRINT-TYPO-010 (measure), PRINT-TYPO-011 (rag-right).
  • Color/contrast survival: PRINT-COLOR-002 (reflectance contrast target), PRINT-COLOR-003 (grayscale survival), PRINT-COLOR-004 (color not sole carrier).
  • Layout self-description: PRINT-LAYOUT-001 (column/reading order), PRINT-LAYOUT-002 (visual heading hierarchy), PRINT-LAYOUT-005/006 (table header visibility), PRINT-LAYOUT-008 (caption substitute for alt text).
  • Forms (forms only): PRINT-FORM-012 (visible labels), PRINT-FORM-013 (instructions before field), PRINT-FORM-016 (static validation text), PRINT-FORM-014 (required not color-only).
  • Scale integrity: PRINT-SUBSTRATE-008 (print-at-100%; no shrink-to-fit) — this is what makes every point-size rule meaningful.
  • Fidelity compensations: PRINT-FIDELITY-001 (all applicable compensations emitted), PRINT-FIDELITY-004 (link destinations), PRINT-FIDELITY-005 (long descriptions).

Rationale: Teams currently gate on screen conformance alone and ship files that are unreadable on paper (8pt disclaimers, color-only required-field markers, alt-text-only images). A single named profile lets the pipeline enforce “conformant in both regimes” as one gate instead of two disconnected checklists.

Implementation notes: Implemented as a composite audit check that ORs the existing PDF/UA gate with the print-rule subset. The reflow/WeasyPrint templates are the natural home for baking the profile in (CSS @page size, min font-size clamp, rag-right, printed-URL rules). The docx→AcroForm path must enforce the forms subset at marker-insertion time (this is the hook for PRINT-FORM-023/024). Preserve-lane files that fail the print subset but pass PDF/UA are flagged, not silently blocked — the operator decides whether a print alternate is needed. Reserve the MUST strictly for our output; we do not assert this profile over third-party files we merely audit.


Level: SHOULD Applies to: all documents Source: our-implementation rule Source strength: industry practice Machine-checkable: no Validation: Human review at design time; the audit tool can flag a detected conflict (e.g. a color used to satisfy a screen cue that fails grayscale survival) but cannot resolve it.

When a screen-optimized requirement and a print requirement conflict, the pipeline SHOULD resolve in this fixed order: (1) legibility on paper wins — never render text below the print typography floor or below the reflectance-contrast target to satisfy a screen-only preference; (2) information redundancy wins — if a cue exists only in a channel that does not survive print (color, hover, tag), add a print-surviving cue rather than removing the screen cue; (3) prefer additive compensation over destructive change — add a caption/printed URL/static instruction rather than deleting the digital affordance. A conflict MUST NOT be left to per-implementer discretion; if none of the above resolves it, split into two artifacts (a screen file and a print alternate) and document the split.

Rationale: Undocumented conflicts get resolved inconsistently — one operator drops the color cue, another drops the caption — producing files that regress in one regime to satisfy the other. A fixed precedence makes outcomes reproducible and auditable.

Implementation notes: The ordering is encoded as guidance in the tag-tree editor and reflow templates, and as a flag class in the audit tool (“regime conflict: color-only cue that fails grayscale”). The last-resort “split into two artifacts” path reuses the alternate-format machinery in §06 (PRINT-ALT-002, PRINT-ALT-006). Log every split decision so the ACR can state which artifact is the print-accessible one.


Level: SHOULD Applies to: all documents Source: our-implementation rule; consensus print-design practice Source strength: industry practice Machine-checkable: partial Validation: Detect /Link annotations with URI actions whose visible anchor text does not itself contain the resolvable destination; confirm a printed destination exists nearby (inline parenthetical, footnote, or end-of-document reference list keyed to the anchor). Presence is checkable; adequacy/placement is assistable.

A hyperlink prints as undifferentiated text, so the destination SHOULD be surfaced on paper when, and only when, the anchor text does not already resolve to the destination (bare URLs and self-descriptive links like “gevell.com/help” need nothing added). When surfacing is required, use, in order of preference: (a) an inline parenthetical URL immediately after the anchor for short/critical links; (b) a numbered footnote for links that would break the line if inlined; (c) an end-of-section or end-of-document reference list keyed by superscript for documents with many links. Long or tracking-laden URLs SHOULD be shortened to a stable, human-typable canonical form. Destinations SHOULD NOT be dumped inline for every link where it would wreck reading flow — that is what the footnote/reference-list forms are for.

Rationale: A reader of the printed copy who follows “click here” has no way to reach the target; the destination is trapped in a non-printing action. Blindly inlining every URL, however, produces unreadable prose. The tiered rule preserves both reachability and readability.

Implementation notes: In the reflow/WeasyPrint lane this is a print-CSS transform (a[href]::after { content: " (" attr(href) ")" } gated by a “self-descriptive” heuristic, or a generated footnote/endnote list). In the preserve lane we do not rewrite the page geometry, so surfacing is deferred to the print alternate rather than injected into the flyer. The audit tool flags links whose anchor text lacks the destination and whose page has no nearby printed URL. Coordinate with existing link-preservation work (chunked-conversion link retention, #2832) so we don’t strip the digital /Link while adding the printed form — both should coexist for the dual-regime file.


Level: SHOULD Applies to: all documents Source: our-implementation rule; intent traces to WCAG 1.1.1 and ADA/504 effective-communication duty (see §00) Source strength: industry practice Machine-checkable: partial Validation: Detect figures carrying a long description (/ActualText, associated-file, or a long /Alt) above a length threshold; confirm a printed long-form equivalent exists near the figure or in a referenced appendix. Presence checkable; equivalence is human-only.

Where an image carries a long description because a short caption cannot convey it (data charts, diagrams, maps, complex figures), the printed output SHOULD reproduce that description in visible text — either directly beneath/beside the figure, or in a clearly cross-referenced appendix when inline placement would disrupt layout. Data charts SHOULD additionally provide the underlying values as a printed data table when feasible, since a table serves both low-vision print readers and re-use. A short caption alone MUST NOT be treated as satisfying a figure that required a long description in the digital file.

Rationale: Complex images are exactly the content that alt text cannot compress into a caption; if the long description exists only as non-printing metadata, the print reader loses the substance of the figure entirely. Low-vision readers and readers of large-print alternates depend on the text/table equivalent.

Implementation notes: The reflow lane emits the long description as a <figcaption>/appendix block from the source’s extended description. The preserve lane cannot reflow the page, so long descriptions are carried into the print alternate or an appended reference page rather than crammed onto the flyer. For data charts, prefer generating a printed data table (aligns with §03 table rules and with the audit tool’s table checks). The tag-tree editor surfaces which figures have long descriptions so a human can decide inline vs appendix. This is the print counterpart to our screen long-description handling; keep both.


Level: SHOULD Applies to: all documents Source: our-implementation rule (analytical); intent traces to PDF/UA math-structure expectations Source strength: industry practice Machine-checkable: partial Validation: Detect math structure/associated MathML in the source; confirm the typeset equation is present and legible in the visual layer (correct glyph rendering, not a broken font fallback), and that any equation whose meaning is not fully carried by its typeset form has an accompanying printed note. Rendering-presence is checkable via the font/glyph audit; semantic sufficiency is human-only.

When a document contains equations backed by MathML, the print output SHOULD ensure the visually typeset equation is present and legible (embedded math fonts, no missing-glyph boxes), because the MathML/spoken-math layer is non-printing and reaches only screen AT. For an equation whose spoken form conveys information the typeset form does not make obvious to a print reader (e.g. a nuance of grouping or a named quantity), a short printed note SHOULD accompany it. The pipeline MUST NOT rely on MathML alone to communicate an equation on paper — MathML never prints.

Rationale: Math is the clearest case of a semantics-that-doesn’t-print: the equation image survives, but the accessible math layer that AT reads aloud is gone. If the typeset render is also broken (unembedded math fonts, tofu boxes), the print reader gets nothing usable at all.

Implementation notes: Ties directly to existing work: the MathJax/math prerender path (MATHJAX_PRERENDER_ENABLED) and equation-figure alt tagging (FLYER_TAGGER_MATH_ALT). For print we care that the rendered equation is intact and its fonts embedded — reuse the font-embed/glyph audit (fontsub / font-audit) to catch missing math glyphs before emitting a printable file. The reflow lane must ensure MathJax output rasterizes/embeds correctly at print DPI. The digital MathML/alt layer is retained for the screen regime; this rule only adds the print-side legibility guarantee.