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]>
153 lines
5.4 KiB
JSON
153 lines
5.4 KiB
JSON
{
|
||
"header":{"magic":"WVG1","format":1,"tb":120000,"t0":0,"dur":24000,"design_w":640,"design_h":360,"n_sizes":1,"n_rates":1,"n_sets":2,"n_tables":0,"n_paints":1,"n_texts":6,"n_tracks":0,"n_paths":0,"n_items":9,"n_keys":0,"n_glyphs":54,"n_clusters":52,"path_contours":0,"path_points":0,"strings_len":97,"inline_len":0,"held_len":165402,"zero@72":[0,0,0,0,0,0,0,0]},
|
||
"sizes":[
|
||
{"w":640,"h":360,"cost":11169106}
|
||
],
|
||
"rates":[
|
||
{"num":25,"den":1}
|
||
],
|
||
"sets":[
|
||
{"carriage":0,"zero@1":[0,0,0],"length":105523,"sha256":"05476c4658ef7366c7700736487eac4c3c1b7d21264978c7d05bd4c7427736c9"},
|
||
{"carriage":0,"zero@1":[0,0,0],"length":59879,"sha256":"2310ab64ddcf4d851d4d7c08bbce141fba178f03fdcbb07b05db3863e179846f"}
|
||
],
|
||
"tables":[],
|
||
"paints":[
|
||
[255,255,255,255]
|
||
],
|
||
"tracks":[],
|
||
"keys":[],
|
||
"paths":[],
|
||
"path_ends":[],
|
||
"path_points":[],
|
||
"texts":[
|
||
{"purpose":7,"dir":0,"lang_len":2,"mode":0,"group":0,"ruby":0,"ruby_start":0,"ruby_len":0,"str_len":26},
|
||
{"purpose":7,"dir":0,"lang_len":2,"mode":0,"group":0,"ruby":0,"ruby_start":0,"ruby_len":0,"str_len":7},
|
||
{"purpose":7,"dir":1,"lang_len":2,"mode":0,"group":0,"ruby":0,"ruby_start":0,"ruby_len":0,"str_len":8},
|
||
{"purpose":7,"dir":0,"lang_len":2,"mode":0,"group":0,"ruby":0,"ruby_start":0,"ruby_len":0,"str_len":18},
|
||
{"purpose":7,"dir":0,"lang_len":10,"mode":0,"group":0,"ruby":0,"ruby_start":0,"ruby_len":0,"str_len":6},
|
||
{"purpose":7,"dir":0,"lang_len":2,"mode":0,"group":0,"ruby":0,"ruby_start":0,"ruby_len":0,"str_len":12}
|
||
],
|
||
"items":[
|
||
{"kind":3,"rule":0,"zero@2":0,"ref":0,"paint":0,"text":0,"zero@10":0,"n_glyphs":22,"n_clusters":22,"t_on":0,"t_off":24000,"unit_scale":131072,"m00":65535,"m01":65535,"m10":65535,"m11":65535,"tx":65535,"ty":65535,"op":65535,"zero@42":[0,0,0,0,0,0]},
|
||
{"kind":3,"rule":0,"zero@2":0,"ref":0,"paint":0,"text":0,"zero@10":0,"n_glyphs":3,"n_clusters":3,"t_on":0,"t_off":24000,"unit_scale":131072,"m00":65535,"m01":65535,"m10":65535,"m11":65535,"tx":65535,"ty":65535,"op":65535,"zero@42":[0,0,0,0,0,0]},
|
||
{"kind":3,"rule":0,"zero@2":0,"ref":0,"paint":0,"text":1,"zero@10":0,"n_glyphs":3,"n_clusters":3,"t_on":0,"t_off":24000,"unit_scale":131072,"m00":65535,"m01":65535,"m10":65535,"m11":65535,"tx":65535,"ty":65535,"op":65535,"zero@42":[0,0,0,0,0,0]},
|
||
{"kind":3,"rule":0,"zero@2":0,"ref":1,"paint":0,"text":1,"zero@10":0,"n_glyphs":1,"n_clusters":1,"t_on":0,"t_off":24000,"unit_scale":131072,"m00":65535,"m01":65535,"m10":65535,"m11":65535,"tx":65535,"ty":65535,"op":65535,"zero@42":[0,0,0,0,0,0]},
|
||
{"kind":3,"rule":0,"zero@2":0,"ref":1,"paint":0,"text":2,"zero@10":0,"n_glyphs":4,"n_clusters":4,"t_on":0,"t_off":24000,"unit_scale":131072,"m00":65535,"m01":65535,"m10":65535,"m11":65535,"tx":65535,"ty":65535,"op":65535,"zero@42":[0,0,0,0,0,0]},
|
||
{"kind":3,"rule":0,"zero@2":0,"ref":1,"paint":0,"text":3,"zero@10":0,"n_glyphs":4,"n_clusters":2,"t_on":0,"t_off":24000,"unit_scale":131072,"m00":65535,"m01":65535,"m10":65535,"m11":65535,"tx":65535,"ty":65535,"op":65535,"zero@42":[0,0,0,0,0,0]},
|
||
{"kind":3,"rule":0,"zero@2":0,"ref":0,"paint":0,"text":4,"zero@10":0,"n_glyphs":6,"n_clusters":6,"t_on":0,"t_off":24000,"unit_scale":131072,"m00":65535,"m01":65535,"m10":65535,"m11":65535,"tx":65535,"ty":65535,"op":65535,"zero@42":[0,0,0,0,0,0]},
|
||
{"kind":3,"rule":0,"zero@2":0,"ref":0,"paint":0,"text":5,"zero@10":0,"n_glyphs":5,"n_clusters":5,"t_on":0,"t_off":24000,"unit_scale":131072,"m00":65535,"m01":65535,"m10":65535,"m11":65535,"tx":65535,"ty":65535,"op":65535,"zero@42":[0,0,0,0,0,0]},
|
||
{"kind":3,"rule":0,"zero@2":0,"ref":0,"paint":0,"text":5,"zero@10":0,"n_glyphs":6,"n_clusters":6,"t_on":0,"t_off":24000,"unit_scale":131072,"m00":65535,"m01":65535,"m10":65535,"m11":65535,"tx":65535,"ty":65535,"op":65535,"zero@42":[0,0,0,0,0,0]}
|
||
],
|
||
"glyphs":[
|
||
[72,0,4096,9216],
|
||
[101,0,6696,9216],
|
||
[32,0,8856,9216],
|
||
[115,0,10056,9216],
|
||
[97,0,11936,9216],
|
||
[105,0,14096,9216],
|
||
[100,0,15056,9216],
|
||
[32,0,17296,9216],
|
||
[34,0,18496,9216],
|
||
[65,0,20016,9216],
|
||
[38,0,22576,9216],
|
||
[66,0,25176,9216],
|
||
[34,0,27676,9216],
|
||
[32,0,29196,9216],
|
||
[60,0,30396,9216],
|
||
[98,0,32596,9216],
|
||
[62,0,34836,9216],
|
||
[92,0,37036,9216],
|
||
[60,0,38636,9216],
|
||
[47,0,40836,9216],
|
||
[98,0,42436,9216],
|
||
[62,0,44676,9216],
|
||
[50,0,4096,15872],
|
||
[47,0,6336,15872],
|
||
[50,0,7936,15872],
|
||
[79,0,4096,22528],
|
||
[75,0,6936,22528],
|
||
[32,0,9336,22528],
|
||
[57345,0,10536,22528],
|
||
[1501,0,4096,29184],
|
||
[1493,0,6216,29184],
|
||
[1500,0,7416,29184],
|
||
[1513,0,9416,29184],
|
||
[2367,0,4096,42496],
|
||
[2361,0,4896,42496],
|
||
[57344,0,6896,42496],
|
||
[2368,0,9496,42496],
|
||
[90,0,4096,49152],
|
||
[100,0,6396,49152],
|
||
[114,0,8636,49152],
|
||
[97,0,10156,49152],
|
||
[118,0,12316,49152],
|
||
[111,0,14396,49152],
|
||
[115,0,4096,55808],
|
||
[111,0,5976,55808],
|
||
[102,0,8216,55808],
|
||
[116,0,9616,55808],
|
||
[45,0,11056,55808],
|
||
[104,0,4096,62464],
|
||
[121,0,6336,62464],
|
||
[112,0,8416,62464],
|
||
[104,0,10656,62464],
|
||
[101,0,12896,62464],
|
||
[110,0,15056,62464]
|
||
],
|
||
"clusters":[
|
||
[1,0,0,1],
|
||
[1,0,1,1],
|
||
[1,0,2,1],
|
||
[1,0,3,1],
|
||
[1,0,4,1],
|
||
[1,0,5,1],
|
||
[1,0,6,1],
|
||
[1,0,7,1],
|
||
[1,0,8,1],
|
||
[1,0,9,1],
|
||
[1,0,10,1],
|
||
[1,0,11,1],
|
||
[1,0,12,1],
|
||
[1,0,13,1],
|
||
[1,0,14,1],
|
||
[1,0,15,1],
|
||
[1,0,16,1],
|
||
[1,0,17,1],
|
||
[1,0,18,1],
|
||
[1,0,19,1],
|
||
[1,0,20,1],
|
||
[1,0,21,1],
|
||
[1,0,23,1],
|
||
[1,0,24,1],
|
||
[1,0,25,1],
|
||
[1,0,0,1],
|
||
[1,0,1,1],
|
||
[1,0,2,1],
|
||
[1,0,3,4],
|
||
[1,0,6,2],
|
||
[1,0,4,2],
|
||
[1,0,2,2],
|
||
[1,0,0,2],
|
||
[2,0,0,6],
|
||
[2,0,6,12],
|
||
[1,0,0,1],
|
||
[1,0,1,1],
|
||
[1,0,2,1],
|
||
[1,0,3,1],
|
||
[1,0,4,1],
|
||
[1,0,5,1],
|
||
[1,0,0,1],
|
||
[1,0,1,1],
|
||
[1,0,2,1],
|
||
[1,0,3,1],
|
||
[1,0,4,0],
|
||
[1,0,6,1],
|
||
[1,0,7,1],
|
||
[1,0,8,1],
|
||
[1,0,9,1],
|
||
[1,0,10,1],
|
||
[1,0,11,1]
|
||
],
|
||
"strings":"enHe said \"A&B\" <b>\\</b>\n2/2enOK 😀heשלוםhiहिन्दीsr-Latn-RSZdravoensofthyphen",
|
||
"inline":""
|
||
}
|