# Round 2 text fixtures — measured summary

Generated by `round2-textkit`. Em size: `1.28` staff space. Target: 1920x1080.

## Faces

- chain[0] `/usr/share/fonts/tex-gyre/texgyrepagella-regular.otf` — family `TeX Gyre Pagella`, version `Some("Version 2.501;PS 2.501;ffdkm 0.1")`, sha256 `44e64260716d8f2bbe412baa1ee99b7c995190ac4573177c24def0b9200438c7`
- chain[1] `/usr/share/fonts/liberation-fonts/LiberationSerif-Regular.ttf` — family `Liberation Serif`, version `Some("Version 2.1.5")`, sha256 `058ea80864aef09a23f45cbec2bb5400bc3dfbdea01c3f10538a21fcb497fb74`

## Shaping identity (from the first fixture; identical for all)

- shaper: `rustybuzz` `0.20.1`
- unicode-bidi: crate `0.3.18`, Unicode `16.0.0`
- unicode-segmentation: crate `1.13.3`, Unicode `17.0.0`
- **the two Unicode-data versions disagree** — reported, not reconciled (`crate::findings::W3_F2`).

## Fixtures

### F-A — check 1 (faithful consumption), check 5 (accessibility)

text: `"Allegro affettuoso — al fine"`

28 codepoints, 30 bytes, 1 segments, 26 glyphs, 26 clusters

| segment | source | face | direction | script | glyphs |
|---|---|---|---|---|---|
| 0 | 0..30 | Some(0) | Ltr | Latn | 26 |

check 5 (accessibility, disqualifying) — name must be exactly `Allegro affettuoso — al fine` (30 bytes, hex `416c6c6567726f20616666657474756f736f20e2809420616c2066696e65`); Ligatures: the name must be the source `ff`/`fi`, never the ligature glyphs that drew them.

### F-B — check 2 (fallback, forced)

text: `"Coro אבג"`

8 codepoints, 11 bytes, 2 segments, 8 glyphs, 8 clusters

| segment | source | face | direction | script | glyphs |
|---|---|---|---|---|---|
| 0 | 0..5 | Some(0) | Ltr | Latn | 5 |
| 1 | 5..11 | Some(1) | Rtl | Hebr | 3 |

check 5 (accessibility, disqualifying) — name must be exactly `Coro אבג` (11 bytes, hex `436f726f20d790d791d792`); Two segments, two faces: the name must be the whole logical string, assembled in logical order, not the visual order the Hebrew tail is drawn in.

### F-C — check 2 (uncovered codepoint)

text: `"Coro ا"`

6 codepoints, 7 bytes, 2 segments, 5 glyphs, 6 clusters

| segment | source | face | direction | script | glyphs |
|---|---|---|---|---|---|
| 0 | 0..5 | Some(0) | Ltr | Latn | 5 |
| 1 | 5..7 | None | Rtl | Arab | 0 |

check 5 (accessibility, disqualifying) — name must be exactly `Coro ا` (7 bytes, hex `436f726f20d8a7`); Uncovered codepoint: U+0627 draws no ink in either declared face, and must appear in the name regardless — the tree carries the text, not the ink.

### F-D — SUPPLEMENTARY bidi evidence (Hebrew/Latin) — check 3 remains NOT RUN (no Arabic-capable face; recipe §1.2)

text: `"Allegro אבג con brio"`

20 codepoints, 23 bytes, 3 segments, 20 glyphs, 20 clusters

| segment | source | face | direction | script | glyphs |
|---|---|---|---|---|---|
| 0 | 0..8 | Some(0) | Ltr | Latn | 8 |
| 1 | 8..14 | Some(1) | Rtl | Hebr | 3 |
| 2 | 14..23 | Some(0) | Ltr | Latn | 9 |

check 5 (accessibility, disqualifying) — name must be exactly `Allegro אבג con brio` (23 bytes, hex `416c6c6567726f20d790d791d79220636f6e206272696f`); Three visual runs at levels 0/1/0: the concatenation is logical-order, so a tree built by walking the visual runs left to right fails here and only here.

### F-E — check 4 (hit testing / caret)

text: `"Cafe\u{301} — resume\u{301}"`

15 codepoints, 19 bytes, 1 segments, 13 glyphs, 13 clusters

| segment | source | face | direction | script | glyphs |
|---|---|---|---|---|---|
| 0 | 0..19 | Some(0) | Ltr | Latn | 13 |

check 5 (accessibility, disqualifying) — name must be exactly `Café — resumé` (19 bytes, hex `43616665cc8120e2809420726573756d65cc81`); NFD: `Cafe\u{301}` must surface as NFD. A tree exposing `Café` (NFC) has silently normalized, and that is a FAIL, not a formatting difference.

## Check-5 role vocabulary (identical for every fixture)

| platform | accepted | prohibited |
|---|---|---|
| accesskit-0.24 | Label, TextRun, Paragraph | Image, GraphicsObject, GraphicsSymbol, GenericContainer, Unknown, Pane |
| at-spi2 | label, static, text, paragraph | image, canvas, filler, panel, unknown |
| aria | (none), text, paragraph | img, presentation, none, graphics-object, graphics-symbol |
| macos-nsaccessibility | AXStaticText | AXImage, AXUnknown, AXGroup |
| windows-uia | Text | Image, Pane, Custom |

Name composition: single-text-node-name, or logical-order concatenation of the run subtree's text-descendant names — either must equal `name` byte for byte

Prohibited outcomes, whatever the role: absent-from-tree, name-empty, name-normalized, name-is-shaped-glyphs, name-drops-unresolved-codepoints
