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]>
20 lines
5.1 KiB
JSON
20 lines
5.1 KiB
JSON
[{"active":[[50000,72000]],"dir":0,"group":0,"index":0,"lang":"en","mode":0,"purpose":7,"text":"starts before"},{"active":[[120000,144000]],"dir":0,"group":0,"index":1,"lang":"en","mode":0,"purpose":7,"text":"ends after"},{"active":[[50000,144000]],"dir":0,"group":0,"index":2,"lang":"en","mode":0,"purpose":7,"text":"spans it"},{"active":[],"dir":0,"group":0,"index":3,"lang":"en","mode":0,"purpose":7,"text":"over by then"},{"active":[],"dir":0,"group":0,"index":4,"lang":"en","mode":0,"purpose":7,"text":"not yet"},{"active":[[50000,144000]],"dir":0,"group":0,"index":5,"lang":"en","mode":0,"purpose":7,"text":"two parts"}]
|
|
{"den":1,"g":11,"num":25,"projection":[{"dir":0,"group":0,"index":0,"lang":"en","mode":0,"purpose":7,"text":"starts before"},{"dir":0,"group":0,"index":2,"lang":"en","mode":0,"purpose":7,"text":"spans it"},{"dir":0,"group":0,"index":5,"lang":"en","mode":0,"purpose":7,"text":"two parts"}]}
|
|
{"den":1,"g":12,"num":25,"projection":[{"dir":0,"group":0,"index":0,"lang":"en","mode":0,"purpose":7,"text":"starts before"},{"dir":0,"group":0,"index":2,"lang":"en","mode":0,"purpose":7,"text":"spans it"},{"dir":0,"group":0,"index":5,"lang":"en","mode":0,"purpose":7,"text":"two parts"}]}
|
|
{"den":1,"g":13,"num":25,"projection":[{"dir":0,"group":0,"index":0,"lang":"en","mode":0,"purpose":7,"text":"starts before"},{"dir":0,"group":0,"index":2,"lang":"en","mode":0,"purpose":7,"text":"spans it"},{"dir":0,"group":0,"index":5,"lang":"en","mode":0,"purpose":7,"text":"two parts"}]}
|
|
{"den":1,"g":14,"num":25,"projection":[{"dir":0,"group":0,"index":0,"lang":"en","mode":0,"purpose":7,"text":"starts before"},{"dir":0,"group":0,"index":2,"lang":"en","mode":0,"purpose":7,"text":"spans it"},{"dir":0,"group":0,"index":5,"lang":"en","mode":0,"purpose":7,"text":"two parts"}]}
|
|
{"den":1,"g":15,"num":25,"projection":[{"dir":0,"group":0,"index":2,"lang":"en","mode":0,"purpose":7,"text":"spans it"},{"dir":0,"group":0,"index":5,"lang":"en","mode":0,"purpose":7,"text":"two parts"}]}
|
|
{"den":1,"g":16,"num":25,"projection":[{"dir":0,"group":0,"index":2,"lang":"en","mode":0,"purpose":7,"text":"spans it"},{"dir":0,"group":0,"index":5,"lang":"en","mode":0,"purpose":7,"text":"two parts"}]}
|
|
{"den":1,"g":17,"num":25,"projection":[{"dir":0,"group":0,"index":2,"lang":"en","mode":0,"purpose":7,"text":"spans it"},{"dir":0,"group":0,"index":5,"lang":"en","mode":0,"purpose":7,"text":"two parts"}]}
|
|
{"den":1,"g":18,"num":25,"projection":[{"dir":0,"group":0,"index":2,"lang":"en","mode":0,"purpose":7,"text":"spans it"},{"dir":0,"group":0,"index":5,"lang":"en","mode":0,"purpose":7,"text":"two parts"}]}
|
|
{"den":1,"g":19,"num":25,"projection":[{"dir":0,"group":0,"index":2,"lang":"en","mode":0,"purpose":7,"text":"spans it"},{"dir":0,"group":0,"index":5,"lang":"en","mode":0,"purpose":7,"text":"two parts"}]}
|
|
{"den":1,"g":20,"num":25,"projection":[{"dir":0,"group":0,"index":2,"lang":"en","mode":0,"purpose":7,"text":"spans it"},{"dir":0,"group":0,"index":5,"lang":"en","mode":0,"purpose":7,"text":"two parts"}]}
|
|
{"den":1,"g":21,"num":25,"projection":[{"dir":0,"group":0,"index":2,"lang":"en","mode":0,"purpose":7,"text":"spans it"},{"dir":0,"group":0,"index":5,"lang":"en","mode":0,"purpose":7,"text":"two parts"}]}
|
|
{"den":1,"g":22,"num":25,"projection":[{"dir":0,"group":0,"index":2,"lang":"en","mode":0,"purpose":7,"text":"spans it"},{"dir":0,"group":0,"index":5,"lang":"en","mode":0,"purpose":7,"text":"two parts"}]}
|
|
{"den":1,"g":23,"num":25,"projection":[{"dir":0,"group":0,"index":2,"lang":"en","mode":0,"purpose":7,"text":"spans it"},{"dir":0,"group":0,"index":5,"lang":"en","mode":0,"purpose":7,"text":"two parts"}]}
|
|
{"den":1,"g":24,"num":25,"projection":[{"dir":0,"group":0,"index":2,"lang":"en","mode":0,"purpose":7,"text":"spans it"},{"dir":0,"group":0,"index":5,"lang":"en","mode":0,"purpose":7,"text":"two parts"}]}
|
|
{"den":1,"g":25,"num":25,"projection":[{"dir":0,"group":0,"index":1,"lang":"en","mode":0,"purpose":7,"text":"ends after"},{"dir":0,"group":0,"index":2,"lang":"en","mode":0,"purpose":7,"text":"spans it"},{"dir":0,"group":0,"index":5,"lang":"en","mode":0,"purpose":7,"text":"two parts"}]}
|
|
{"den":1,"g":26,"num":25,"projection":[{"dir":0,"group":0,"index":1,"lang":"en","mode":0,"purpose":7,"text":"ends after"},{"dir":0,"group":0,"index":2,"lang":"en","mode":0,"purpose":7,"text":"spans it"},{"dir":0,"group":0,"index":5,"lang":"en","mode":0,"purpose":7,"text":"two parts"}]}
|
|
{"den":1,"g":27,"num":25,"projection":[{"dir":0,"group":0,"index":1,"lang":"en","mode":0,"purpose":7,"text":"ends after"},{"dir":0,"group":0,"index":2,"lang":"en","mode":0,"purpose":7,"text":"spans it"},{"dir":0,"group":0,"index":5,"lang":"en","mode":0,"purpose":7,"text":"two parts"}]}
|
|
{"den":1,"g":28,"num":25,"projection":[{"dir":0,"group":0,"index":1,"lang":"en","mode":0,"purpose":7,"text":"ends after"},{"dir":0,"group":0,"index":2,"lang":"en","mode":0,"purpose":7,"text":"spans it"},{"dir":0,"group":0,"index":5,"lang":"en","mode":0,"purpose":7,"text":"two parts"}]}
|
|
{"den":1,"g":29,"num":25,"projection":[{"dir":0,"group":0,"index":1,"lang":"en","mode":0,"purpose":7,"text":"ends after"},{"dir":0,"group":0,"index":2,"lang":"en","mode":0,"purpose":7,"text":"spans it"},{"dir":0,"group":0,"index":5,"lang":"en","mode":0,"purpose":7,"text":"two parts"}]}
|