open-standards/wai/vector-conformance/vectors/canonical/index.json
Transaction Science 10ba6e9bcc wai-vector: the text layer and section 5, text and accessibility (D7-7)
graphics-vector.md section 5 (Draft): what a sink exposes to assistive
technology and to a text consumer, and how. Each text block's active set (the
effective windows of the items that draw it, merged), the projection at a
frame and the transcript as exact JSON, the text record and its digest, ruby,
purposes, writing modes and the cluster rule.

- wai-vector: src/text.rs (no_std, no dependency), the a11y and text commands,
  and vectors verify recomputing every text record.
- The corpus: a new a11y group, each payload with its text record
  (<name>.a11y.jsonl) and its digest in the expected file; canonical and
  refusal vectors for TEXT. No existing expected file changes.
- tests/text_layer.rs: each rule of section 5, with expected JSON written by
  hand from the text, each falsified once.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-13 02:43:02 -04:00

37 lines
3.2 KiB
JSON

{
"block-unreferenced":"rule 4: a block no run or path names -> payload_malformed",
"cluster-empty":"rule 5: a cluster with no glyph and no byte -> payload_malformed",
"cluster-mid-character":"rule 5: a cluster ending inside a character -> payload_malformed",
"cluster-past-string":"rule 5: a cluster past its block's string -> payload_malformed",
"clusters":"rule 5: clusters on character boundaries covering a run: accepted",
"clusters-sum":"rule 5: glyph counts that do not sum to n_glyphs -> payload_malformed",
"every-table":"every table in use: inline and held sets, easing tables, all three track kinds, curves, groups with a clip, ruby, a vertical block, inserted and zero-glyph clusters: accepted",
"group-not-contiguous":"rule 4: groups [1, 2, 1] -> payload_malformed",
"group-number-skips":"rule 4: the first group is numbered 2 -> payload_malformed",
"group-split-by-ungrouped":"rule 4: groups [1, 0, 1] -> payload_malformed",
"groups":"groups nested four deep, clips under both rules, translations and opacities on groups: accepted",
"groups-in-order":"rule 4: group numbers in order of first use, each group contiguous: accepted",
"groups-with-ungrouped":"rule 4: groups [1, 0, 2], an ungrouped block between two groups: accepted",
"held":"a run from a held set, obtained by its SHA-256 and exact length: accepted",
"minimal":"one path fill, the smallest payload: accepted",
"paint-duplicate":"rule 3: two equal paints -> payload_malformed",
"paint-first-use":"rule 2: paints first referenced out of order -> payload_malformed",
"paint-unreferenced":"rule 2: a paint no item references -> payload_malformed",
"path-alternative-decorative":"step 5(h): a path whose text alternative is a decorative block -> payload_malformed",
"path-duplicate":"rule 3: two paths with equal records, ends and points -> payload_malformed",
"ruby":"rule 4: a ruby block annotating the first character of an earlier block: accepted",
"ruby-ends-mid-character":"rule 4: a ruby range ending inside a character -> payload_malformed",
"ruby-mid-character":"rule 4: a ruby range starting inside a character -> payload_malformed",
"ruby-names-itself":"rule 4: a ruby link to its own block -> payload_malformed",
"ruby-names-later":"rule 4: a ruby link to a later block -> payload_malformed",
"ruby-past-string":"rule 4: a ruby range past the base block's string -> payload_malformed",
"ruby-to-string-end":"rule 4: a ruby range that starts inside the base block's string, on a character boundary, and ends where the string ends: accepted",
"set-duplicate":"rule 3: two sets with one SHA-256 -> payload_malformed",
"shared":"one path, one paint and one track each used by several items, each pool holding an entry once, in first-reference order: accepted",
"sizes-rates":"five sizes from 1/8 to 4 times the design width and four rates, each ascending: accepted",
"table-duplicate":"rule 3: two equal easing tables -> payload_malformed",
"table-first-use":"rule 2: easing tables first referenced out of order -> payload_malformed",
"table-unreferenced":"rule 2: an easing table no key references -> payload_malformed",
"track-duplicate":"rule 3: two tracks of one kind with equal keys -> payload_malformed",
"track-first-use":"rule 2: tracks first referenced out of order -> payload_malformed"
}