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]>
65 lines
2.5 KiB
JSON
65 lines
2.5 KiB
JSON
{
|
|
"header":{"magic":"WVG1","format":1,"tb":120000,"t0":0,"dur":120000,"design_w":640,"design_h":360,"n_sizes":1,"n_rates":1,"n_sets":1,"n_tables":1,"n_paints":2,"n_texts":2,"n_tracks":3,"n_paths":2,"n_items":4,"n_keys":4,"n_glyphs":2,"n_clusters":2,"path_contours":2,"path_points":8,"strings_len":7,"inline_len":0,"held_len":40,"zero@72":[0,0,0,0,0,0,0,0]},
|
|
"sizes":[
|
|
{"w":640,"h":360,"cost":498549}
|
|
],
|
|
"rates":[
|
|
{"num":25,"den":1}
|
|
],
|
|
"sets":[
|
|
{"carriage":0,"zero@1":[0,0,0],"length":40,"sha256":"22b94c8c4fa46c25e33acb82f6071fa66e39381e35c18faf635257340879c8e8"}
|
|
],
|
|
"tables":[
|
|
[0,100,400,900,1600,2500,3600,4900,6400,8100,10000,12100,14400,16900,19600,40000,65536]
|
|
],
|
|
"paints":[
|
|
[200,30,30,255],
|
|
[30,60,200,255]
|
|
],
|
|
"tracks":[
|
|
{"kind":2,"zero@1":0,"zero@2":0,"n_keys":2},
|
|
{"kind":1,"zero@1":0,"zero@2":0,"n_keys":1},
|
|
{"kind":3,"zero@1":0,"zero@2":0,"n_keys":1}
|
|
],
|
|
"keys":[
|
|
[0,0,2,[0,0,0]],
|
|
[120000,2560,0,[0,0,0]],
|
|
[0,200,0,[0,0,0]],
|
|
[0,65536,0,[0,0,0]]
|
|
],
|
|
"paths":[
|
|
{"n_contours":1,"n_points":4,"zero@4":0,"xmin":0,"ymin":0,"xmax":25600,"ymax":25600},
|
|
{"n_contours":1,"n_points":4,"zero@4":0,"xmin":256,"ymin":256,"xmax":5120,"ymax":5120}
|
|
],
|
|
"path_ends":[3,3],
|
|
"path_points":[
|
|
[0,0,0],
|
|
[25600,0,0],
|
|
[25600,25600,0],
|
|
[0,25600,0],
|
|
[256,256,0],
|
|
[5120,256,0],
|
|
[5120,5120,0],
|
|
[256,5120,0]
|
|
],
|
|
"texts":[
|
|
{"purpose":3,"dir":0,"lang_len":2,"mode":0,"group":0,"ruby":0,"ruby_start":0,"ruby_len":0,"str_len":2},
|
|
{"purpose":3,"dir":0,"lang_len":2,"mode":0,"group":0,"ruby":0,"ruby_start":0,"ruby_len":0,"str_len":1}
|
|
],
|
|
"items":[
|
|
{"kind":0,"rule":0,"zero@2":0,"ref":0,"paint":65535,"text":65535,"zero@10":0,"n_glyphs":0,"n_clusters":0,"t_on":0,"t_off":120000,"unit_scale":65536,"m00":65535,"m01":65535,"m10":65535,"m11":65535,"tx":0,"ty":65535,"op":1,"zero@42":[0,0,0,0,0,0]},
|
|
{"kind":2,"rule":0,"zero@2":0,"ref":1,"paint":0,"text":65535,"zero@10":0,"n_glyphs":0,"n_clusters":0,"t_on":0,"t_off":120000,"unit_scale":65536,"m00":2,"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":1,"text":0,"zero@10":0,"n_glyphs":2,"n_clusters":2,"t_on":0,"t_off":120000,"unit_scale":393216,"m00":65535,"m01":65535,"m10":65535,"m11":65535,"tx":65535,"ty":65535,"op":65535,"zero@42":[0,0,0,0,0,0]},
|
|
{"kind":1,"rule":0,"zero@2":0,"ref":0,"paint":0,"text":0,"zero@10":0,"n_glyphs":0,"n_clusters":0,"t_on":0,"t_off":0,"unit_scale":0,"m00":0,"m01":0,"m10":0,"m11":0,"tx":0,"ty":0,"op":0,"zero@42":[0,0,0,0,0,0]}
|
|
],
|
|
"glyphs":[
|
|
[1,0,6000,20000],
|
|
[3,0,10096,20000]
|
|
],
|
|
"clusters":[
|
|
[1,0,0,1],
|
|
[1,0,1,1]
|
|
],
|
|
"strings":"enABenC",
|
|
"inline":""
|
|
}
|