1 // WARNING: this file was generated by ../scripts/gen-shaping-tests.py
2 
3 mod shaping_impl;
4 use shaping_impl::shape;
5 
6 #[test]
classdef1_001()7 fn classdef1_001() {
8     assert_eq!(
9         shape(
10             "tests/fonts/aots/classdef1_font4.otf",
11             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0015}",
12             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
13         ),
14         "17|\
15          18|\
16          19|\
17          20|\
18          21"
19     );
20 }
21 
22 #[test]
classdef1_empty_001()23 fn classdef1_empty_001() {
24     assert_eq!(
25         shape(
26             "tests/fonts/aots/classdef1_font2.otf",
27             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0015}",
28             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
29         ),
30         "17|\
31          23|\
32          24|\
33          25|\
34          21"
35     );
36 }
37 
38 #[test]
classdef1_multiple_001()39 fn classdef1_multiple_001() {
40     assert_eq!(
41         shape(
42             "tests/fonts/aots/classdef1_font3.otf",
43             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\
44              \u{001B}\u{001C}\u{001D}\u{001E}\u{001F}\u{0020}\u{0021}\u{0022}\u{0023}\u{0024}",
45             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
46         ),
47         "20|\
48          23|\
49          24|\
50          25|\
51          24|\
52          26|\
53          27|\
54          28|\
55          28|\
56          29|\
57          30|\
58          31|\
59          34|\
60          33|\
61          34|\
62          35|\
63          37|\
64          38|\
65          38|\
66          39"
67     );
68 }
69 
70 #[test]
classdef1_single_001()71 fn classdef1_single_001() {
72     assert_eq!(
73         shape(
74             "tests/fonts/aots/classdef2_font1.otf",
75             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0015}",
76             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
77         ),
78         "17|\
79          23|\
80          24|\
81          25|\
82          21"
83     );
84 }
85 
86 #[test]
classdef2_001()87 fn classdef2_001() {
88     assert_eq!(
89         shape(
90             "tests/fonts/aots/classdef2_font4.otf",
91             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0015}",
92             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
93         ),
94         "17|\
95          18|\
96          19|\
97          20|\
98          21"
99     );
100 }
101 
102 #[test]
classdef2_empty_001()103 fn classdef2_empty_001() {
104     assert_eq!(
105         shape(
106             "tests/fonts/aots/classdef2_font2.otf",
107             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0015}",
108             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
109         ),
110         "17|\
111          23|\
112          24|\
113          25|\
114          21"
115     );
116 }
117 
118 #[test]
classdef2_multiple_001()119 fn classdef2_multiple_001() {
120     assert_eq!(
121         shape(
122             "tests/fonts/aots/classdef2_font3.otf",
123             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\
124              \u{001B}\u{001C}\u{001D}\u{001E}\u{001F}\u{0020}\u{0021}\u{0022}\u{0023}\u{0024}",
125             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
126         ),
127         "20|\
128          23|\
129          24|\
130          25|\
131          24|\
132          26|\
133          27|\
134          28|\
135          28|\
136          29|\
137          30|\
138          31|\
139          34|\
140          33|\
141          34|\
142          35|\
143          37|\
144          38|\
145          38|\
146          39"
147     );
148 }
149 
150 #[test]
classdef2_single_001()151 fn classdef2_single_001() {
152     assert_eq!(
153         shape(
154             "tests/fonts/aots/classdef2_font1.otf",
155             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0015}",
156             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
157         ),
158         "17|\
159          23|\
160          24|\
161          25|\
162          21"
163     );
164 }
165 
166 #[test]
gpos1_1_lookupflag_001()167 fn gpos1_1_lookupflag_001() {
168     assert_eq!(
169         shape(
170             "tests/fonts/aots/gpos1_1_lookupflag_f1.otf",
171             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0015}",
172             "--features=\"test\" --no-clusters --no-glyph-names --ned",
173         ),
174         "17|\
175          18@1500,0|\
176          19@3000,0|\
177          20@4200,0|\
178          21@6000,0"
179     );
180 }
181 
182 #[test]
gpos1_1_simple_001()183 fn gpos1_1_simple_001() {
184     assert_eq!(
185         shape(
186             "tests/fonts/aots/gpos1_1_simple_f1.otf",
187             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0015}",
188             "--features=\"test\" --no-clusters --no-glyph-names --ned",
189         ),
190         "17|\
191          18@1300,0|\
192          19@3000,0|\
193          20@4300,0|\
194          21@6000,0"
195     );
196 }
197 
198 #[test]
gpos1_1_simple_002()199 fn gpos1_1_simple_002() {
200     assert_eq!(
201         shape(
202             "tests/fonts/aots/gpos1_1_simple_f2.otf",
203             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0015}",
204             "--features=\"test\" --no-clusters --no-glyph-names --ned",
205         ),
206         "17|\
207          18@1500,-200|\
208          19@3000,0|\
209          20@4500,-200|\
210          21@6000,0"
211     );
212 }
213 
214 #[test]
gpos1_1_simple_003()215 fn gpos1_1_simple_003() {
216     assert_eq!(
217         shape(
218             "tests/fonts/aots/gpos1_1_simple_f3.otf",
219             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0015}",
220             "--features=\"test\" --no-clusters --no-glyph-names --ned",
221         ),
222         "17|\
223          18@1500,0|\
224          19@2800,0|\
225          20@4300,0|\
226          21@5600,0"
227     );
228 }
229 
230 #[test]
gpos1_2_001()231 fn gpos1_2_001() {
232     assert_eq!(
233         shape(
234             "tests/fonts/aots/gpos1_2_font1.otf",
235             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0015}",
236             "--features=\"test\" --no-clusters --no-glyph-names --ned",
237         ),
238         "17|\
239          18@1300,0|\
240          19@3000,0|\
241          20@4200,0|\
242          21@6000,0"
243     );
244 }
245 
246 #[test]
gpos1_2_lookupflag_001()247 fn gpos1_2_lookupflag_001() {
248     assert_eq!(
249         shape(
250             "tests/fonts/aots/gpos1_2_font2.otf",
251             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0015}",
252             "--features=\"test\" --no-clusters --no-glyph-names --ned",
253         ),
254         "17|\
255          18@1500,0|\
256          19@3000,0|\
257          20@4200,0|\
258          21@6000,0"
259     );
260 }
261 
262 #[test]
gpos2_1_001()263 fn gpos2_1_001() {
264     assert_eq!(
265         shape(
266             "tests/fonts/aots/gpos2_1_font6.otf",
267             "\u{0011}\u{0012}\u{0013}\u{0011}\u{0012}\u{0014}\u{0011}",
268             "--features=\"test\" --no-clusters --no-glyph-names --ned",
269         ),
270         "17|\
271          18@1300,0|\
272          19@3000,-100|\
273          17@4500,0|\
274          18@5700,0|\
275          20@7500,-400|\
276          17@9000,0"
277     );
278 }
279 
280 #[test]
gpos2_1_002()281 fn gpos2_1_002() {
282     assert_eq!(
283         shape(
284             "tests/fonts/aots/gpos2_1_font7.otf",
285             "\u{0011}\u{0012}\u{0013}\u{0011}\u{0012}\u{0014}\u{0011}\u{0015}\u{0016}\u{0011}",
286             "--features=\"test\" --no-clusters --no-glyph-names --ned",
287         ),
288         "17|\
289          18@1300,0|\
290          19@3000,-100|\
291          17@4500,0|\
292          18@5700,0|\
293          20@7500,-400|\
294          17@9000,0|\
295          21@10000,0|\
296          22@12000,-600|\
297          17@13500,0"
298     );
299 }
300 
301 #[test]
gpos2_1_lookupflag_001()302 fn gpos2_1_lookupflag_001() {
303     assert_eq!(
304         shape(
305             "tests/fonts/aots/gpos2_1_lookupflag_f1.otf",
306             "\u{0011}\u{0013}\u{0014}\u{0011}\u{0013}\u{0012}\u{0014}\u{0011}",
307             "--features=\"test\" --no-clusters --no-glyph-names --ned",
308         ),
309         "17|\
310          19@1300,0|\
311          20@3000,-100|\
312          17@4500,0|\
313          19@5800,0|\
314          18@7500,0|\
315          20@9000,-100|\
316          17@10500,0"
317     );
318 }
319 
320 #[test]
gpos2_1_lookupflag_002()321 fn gpos2_1_lookupflag_002() {
322     assert_eq!(
323         shape(
324             "tests/fonts/aots/gpos2_1_lookupflag_f2.otf",
325             "\u{0011}\u{0013}\u{0014}\u{0011}\u{0013}\u{0012}\u{0014}\u{0011}",
326             "--features=\"test\" --no-clusters --no-glyph-names --ned",
327         ),
328         "17|\
329          19@1500,0|\
330          20@2800,-100|\
331          17@4300,0|\
332          19@5800,0|\
333          18@7100,0|\
334          20@8600,-100|\
335          17@10100,0"
336     );
337 }
338 
339 #[test]
gpos2_1_next_glyph_001()340 fn gpos2_1_next_glyph_001() {
341     assert_eq!(
342         shape(
343             "tests/fonts/aots/gpos2_1_next_glyph_f1.otf",
344             "\u{0012}\u{0012}\u{0012}\u{0012}",
345             "--features=\"test\" --no-clusters --no-glyph-names --ned",
346         ),
347         "18@-100,0|\
348          18@1500,-100|\
349          18@2900,0|\
350          18@4500,-100"
351     );
352 }
353 
354 #[test]
gpos2_1_next_glyph_002()355 fn gpos2_1_next_glyph_002() {
356     assert_eq!(
357         shape(
358             "tests/fonts/aots/gpos2_1_next_glyph_f2.otf",
359             "\u{0012}\u{0012}\u{0012}\u{0012}",
360             "--features=\"test\" --no-clusters --no-glyph-names --ned",
361         ),
362         "18@-100,0|\
363          18@1400,0|\
364          18@2900,0|\
365          18@4500,0"
366     );
367 }
368 
369 #[test]
gpos2_1_simple_001()370 fn gpos2_1_simple_001() {
371     assert_eq!(
372         shape(
373             "tests/fonts/aots/gpos2_1_simple_f1.otf",
374             "\u{0011}\u{0012}\u{0013}\u{0011}\u{0012}\u{0014}",
375             "--features=\"test\" --no-clusters --no-glyph-names --ned",
376         ),
377         "17|\
378          18@1300,0|\
379          19@3000,-100|\
380          17@4500,0|\
381          18@6000,0|\
382          20@7500,0"
383     );
384 }
385 
386 #[test]
gpos2_1_simple_002()387 fn gpos2_1_simple_002() {
388     assert_eq!(
389         shape(
390             "tests/fonts/aots/gpos2_1_simple_f1.otf",
391             "\u{0011}\u{0012}",
392             "--features=\"test\" --no-clusters --no-glyph-names --ned",
393         ),
394         "17|\
395          18@1500,0"
396     );
397 }
398 
399 #[test]
gpos2_2_001()400 fn gpos2_2_001() {
401     assert_eq!(
402         shape(
403             "tests/fonts/aots/gpos2_2_font1.otf",
404             "\u{0011}\u{0012}\u{0013}\u{0011}\u{0012}\u{0014}",
405             "--features=\"test\" --no-clusters --no-glyph-names --ned",
406         ),
407         "17|\
408          18@1300,0|\
409          19@3000,-100|\
410          17@4500,0|\
411          18@6000,0|\
412          20@7500,0"
413     );
414 }
415 
416 #[test]
gpos2_2_002()417 fn gpos2_2_002() {
418     assert_eq!(
419         shape(
420             "tests/fonts/aots/gpos2_2_font2.otf",
421             "\u{0011}\u{0013}\u{0014}\u{0011}\u{0013}\u{0012}\u{0014}\u{0011}",
422             "--features=\"test\" --no-clusters --no-glyph-names --ned",
423         ),
424         "17|\
425          19@1300,0|\
426          20@3000,-100|\
427          17@4500,0|\
428          19@5800,0|\
429          18@7500,0|\
430          20@9000,-100|\
431          17@10500,0"
432     );
433 }
434 
435 #[test]
gpos2_2_003()436 fn gpos2_2_003() {
437     assert_eq!(
438         shape(
439             "tests/fonts/aots/gpos2_2_font3.otf",
440             "\u{0011}\u{0013}\u{0014}\u{0011}\u{0013}\u{0012}\u{0014}\u{0011}",
441             "--features=\"test\" --no-clusters --no-glyph-names --ned",
442         ),
443         "17|\
444          19@1500,0|\
445          20@2800,-100|\
446          17@4300,0|\
447          19@5800,0|\
448          18@7100,0|\
449          20@8600,-100|\
450          17@10100,0"
451     );
452 }
453 
454 #[test]
gpos2_2_004()455 fn gpos2_2_004() {
456     assert_eq!(
457         shape(
458             "tests/fonts/aots/gpos2_2_font4.otf",
459             "\u{0012}\u{0012}\u{0012}\u{0012}",
460             "--features=\"test\" --no-clusters --no-glyph-names --ned",
461         ),
462         "18@-100,0|\
463          18@1500,-100|\
464          18@2900,0|\
465          18@4500,-100"
466     );
467 }
468 
469 #[test]
gpos2_2_005()470 fn gpos2_2_005() {
471     assert_eq!(
472         shape(
473             "tests/fonts/aots/gpos2_2_font5.otf",
474             "\u{0012}\u{0012}\u{0012}\u{0012}",
475             "--features=\"test\" --no-clusters --no-glyph-names --ned",
476         ),
477         "18@-100,0|\
478          18@1400,0|\
479          18@2900,0|\
480          18@4500,0"
481     );
482 }
483 
484 #[test]
gpos3_002()485 fn gpos3_002() {
486     assert_eq!(
487         shape(
488             "tests/fonts/aots/gpos3_font1.otf",
489             "\u{0011}\u{0012}\u{0011}\u{0013}\u{0011}",
490             "--features=\"test\" --no-clusters --no-glyph-names --ned",
491         ),
492         "17|\
493          18@1500,0|\
494          17@3000,0|\
495          19@4500,0|\
496          17@6000,0"
497     );
498 }
499 
500 #[test]
gpos3_007()501 fn gpos3_007() {
502     assert_eq!(
503         shape(
504             "tests/fonts/aots/gpos3_font3.otf",
505             "\u{0011}\u{0012}\u{0014}\u{0011}",
506             "--features=\"test\" --no-clusters --no-glyph-names --ned",
507         ),
508         "17|\
509          18@1500,0|\
510          20@3000,0|\
511          17@4500,0"
512     );
513 }
514 
515 #[test]
gpos3_008()516 fn gpos3_008() {
517     assert_eq!(
518         shape(
519             "tests/fonts/aots/gpos3_font3.otf",
520             "\u{0011}\u{0013}\u{0012}\u{0011}",
521             "--features=\"test\" --no-clusters --no-glyph-names --ned",
522         ),
523         "17|\
524          19@1500,0|\
525          18@3000,0|\
526          17@4500,0"
527     );
528 }
529 
530 #[test]
gpos3_009()531 fn gpos3_009() {
532     assert_eq!(
533         shape(
534             "tests/fonts/aots/gpos3_font3.otf",
535             "\u{0011}\u{0013}\u{0014}\u{0011}",
536             "--features=\"test\" --no-clusters --no-glyph-names --ned",
537         ),
538         "17|\
539          19@1500,0|\
540          20@3000,0|\
541          17@4500,0"
542     );
543 }
544 
545 #[test]
gpos3_010()546 fn gpos3_010() {
547     assert_eq!(
548         shape(
549             "tests/fonts/aots/gpos3_font3.otf",
550             "\u{0011}\u{0012}",
551             "--features=\"test\" --no-clusters --no-glyph-names --ned",
552         ),
553         "17|\
554          18@1500,0"
555     );
556 }
557 
558 #[test]
gpos3_011()559 fn gpos3_011() {
560     assert_eq!(
561         shape(
562             "tests/fonts/aots/gpos3_font3.otf",
563             "\u{0011}\u{0012}\u{0015}\u{0015}\u{0015}",
564             "--features=\"test\" --no-clusters --no-glyph-names --ned",
565         ),
566         "17|\
567          18@1500,0|\
568          21@3000,0|\
569          21@4500,0|\
570          21@6000,0"
571     );
572 }
573 
574 #[test]
gpos7_1_001()575 fn gpos7_1_001() {
576     assert_eq!(
577         shape(
578             "tests/fonts/aots/gpos7_1_font1.otf",
579             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0015}",
580             "--features=\"test\" --no-clusters --no-glyph-names --ned",
581         ),
582         "17|\
583          18@1600,0|\
584          19@3200,0|\
585          20@4800,0|\
586          21@6000,0"
587     );
588 }
589 
590 #[test]
gpos7_1_002()591 fn gpos7_1_002() {
592     assert_eq!(
593         shape(
594             "tests/fonts/aots/gpos7_1_font1.otf",
595             "\u{0011}\u{0012}\u{0011}\u{0012}\u{0013}\u{0011}",
596             "--features=\"test\" --no-clusters --no-glyph-names --ned",
597         ),
598         "17|\
599          18@1500,0|\
600          17@3000,0|\
601          18@4500,0|\
602          19@6000,0|\
603          17@7500,0"
604     );
605 }
606 
607 #[test]
gpos9_001()608 fn gpos9_001() {
609     assert_eq!(
610         shape(
611             "tests/fonts/aots/gpos9_font1.otf",
612             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0015}",
613             "--features=\"test\" --no-clusters --no-glyph-names --ned",
614         ),
615         "17|\
616          18@1300,0|\
617          19@3000,0|\
618          20@4300,0|\
619          21@6000,0"
620     );
621 }
622 
623 #[test]
gpos9_002()624 fn gpos9_002() {
625     assert_eq!(
626         shape(
627             "tests/fonts/aots/gpos9_font2.otf",
628             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0015}\u{0011}",
629             "--features=\"test\" --no-clusters --no-glyph-names --ned",
630         ),
631         "17|\
632          18@1300,0|\
633          19@2700,0|\
634          20@4300,0|\
635          21@5700,0|\
636          17@7500,0"
637     );
638 }
639 
640 #[test]
gpos_chaining1_boundary_001()641 fn gpos_chaining1_boundary_001() {
642     assert_eq!(
643         shape(
644             "tests/fonts/aots/gpos_chaining1_boundary_f1.otf",
645             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
646             "--features=\"test\" --no-clusters --no-glyph-names --ned",
647         ),
648         "0|\
649          20@1500,0|\
650          21@3000,0|\
651          22@4500,0|\
652          23@6000,0|\
653          0@7500,0"
654     );
655 }
656 
657 #[test]
gpos_chaining1_boundary_002()658 fn gpos_chaining1_boundary_002() {
659     assert_eq!(
660         shape(
661             "tests/fonts/aots/gpos_chaining1_boundary_f2.otf",
662             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
663             "--features=\"test\" --no-clusters --no-glyph-names --ned",
664         ),
665         "0|\
666          20@1500,0|\
667          21@3020,0|\
668          22@4500,0|\
669          23@6000,0|\
670          0@7500,0"
671     );
672 }
673 
674 #[test]
gpos_chaining1_boundary_003()675 fn gpos_chaining1_boundary_003() {
676     assert_eq!(
677         shape(
678             "tests/fonts/aots/gpos_chaining1_boundary_f3.otf",
679             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
680             "--features=\"test\" --no-clusters --no-glyph-names --ned",
681         ),
682         "0|\
683          20@1500,0|\
684          21@3020,0|\
685          22@4500,0|\
686          23@6000,0|\
687          0@7500,0"
688     );
689 }
690 
691 #[test]
gpos_chaining1_boundary_004()692 fn gpos_chaining1_boundary_004() {
693     assert_eq!(
694         shape(
695             "tests/fonts/aots/gpos_chaining1_boundary_f4.otf",
696             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
697             "--features=\"test\" --no-clusters --no-glyph-names --ned",
698         ),
699         "0|\
700          20@1500,0|\
701          21@3000,0|\
702          22@4520,0|\
703          23@6000,0|\
704          0@7500,0"
705     );
706 }
707 
708 #[test]
gpos_chaining1_multiple_subrules_001()709 fn gpos_chaining1_multiple_subrules_001() {
710     assert_eq!(
711         shape(
712             "tests/fonts/aots/gpos_chaining1_multiple_subrules_f1.otf",
713             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0000}\u{0014}\u{0015}\u{0016}\
714              \u{0017}\u{0000}",
715             "--features=\"test\" --no-clusters --no-glyph-names --ned",
716         ),
717         "0|\
718          20@1500,0|\
719          21@3020,0|\
720          22@4500,0|\
721          23@6000,0|\
722          24@7500,0|\
723          0@9000,0|\
724          20@10500,0|\
725          21@12000,0|\
726          22@13520,0|\
727          23@15000,0|\
728          0@16500,0"
729     );
730 }
731 
732 #[test]
gpos_chaining1_multiple_subrules_002()733 fn gpos_chaining1_multiple_subrules_002() {
734     assert_eq!(
735         shape(
736             "tests/fonts/aots/gpos_chaining1_multiple_subrules_f2.otf",
737             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0000}\u{0014}\u{0015}\u{0016}\
738              \u{0017}\u{0000}",
739             "--features=\"test\" --no-clusters --no-glyph-names --ned",
740         ),
741         "0|\
742          20@1500,0|\
743          21@3000,0|\
744          22@4520,0|\
745          23@6000,0|\
746          24@7500,0|\
747          0@9000,0|\
748          20@10500,0|\
749          21@12000,0|\
750          22@13520,0|\
751          23@15000,0|\
752          0@16500,0"
753     );
754 }
755 
756 #[test]
gpos_chaining1_next_glyph_001()757 fn gpos_chaining1_next_glyph_001() {
758     assert_eq!(
759         shape(
760             "tests/fonts/aots/gpos_chaining1_next_glyph_f1.otf",
761             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
762             "--features=\"test\" --no-clusters --no-glyph-names --ned",
763         ),
764         "0|\
765          20@1500,0|\
766          21@3020,0|\
767          22@4520,0|\
768          23@6020,0|\
769          0@7500,0"
770     );
771 }
772 
773 #[test]
gpos_chaining1_simple_001()774 fn gpos_chaining1_simple_001() {
775     assert_eq!(
776         shape(
777             "tests/fonts/aots/gpos_chaining1_simple_f1.otf",
778             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
779             "--features=\"test\" --no-clusters --no-glyph-names --ned",
780         ),
781         "0|\
782          20@1500,0|\
783          21@3020,0|\
784          22@4520,0|\
785          23@6000,0|\
786          0@7500,0"
787     );
788 }
789 
790 #[test]
gpos_chaining1_simple_002()791 fn gpos_chaining1_simple_002() {
792     assert_eq!(
793         shape(
794             "tests/fonts/aots/gpos_chaining1_simple_f2.otf",
795             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\u{0000}",
796             "--features=\"test\" --no-clusters --no-glyph-names --ned",
797         ),
798         "0|\
799          20@1500,0|\
800          21@3000,0|\
801          22@4520,0|\
802          23@6000,0|\
803          24@7500,0|\
804          25@9000,0|\
805          26@10500,0|\
806          0@12000,0"
807     );
808 }
809 
810 #[test]
gpos_chaining1_simple_003()811 fn gpos_chaining1_simple_003() {
812     assert_eq!(
813         shape(
814             "tests/fonts/aots/gpos_chaining1_simple_f2.otf",
815             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{0000}\u{0000}",
816             "--features=\"test\" --no-clusters --no-glyph-names --ned",
817         ),
818         "0|\
819          20@1500,0|\
820          21@3000,0|\
821          22@4500,0|\
822          23@6000,0|\
823          24@7500,0|\
824          25@9000,0|\
825          0@10500,0|\
826          0@12000,0"
827     );
828 }
829 
830 #[test]
gpos_chaining1_simple_004()831 fn gpos_chaining1_simple_004() {
832     assert_eq!(
833         shape(
834             "tests/fonts/aots/gpos_chaining1_simple_f2.otf",
835             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}",
836             "--features=\"test\" --no-clusters --no-glyph-names --ned",
837         ),
838         "0|\
839          20@1500,0|\
840          21@3000,0|\
841          22@4500,0|\
842          23@6000,0|\
843          24@7500,0|\
844          25@9000,0"
845     );
846 }
847 
848 #[test]
gpos_chaining1_simple_005()849 fn gpos_chaining1_simple_005() {
850     assert_eq!(
851         shape(
852             "tests/fonts/aots/gpos_chaining1_simple_f2.otf",
853             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}",
854             "--features=\"test\" --no-clusters --no-glyph-names --ned",
855         ),
856         "0|\
857          20@1500,0|\
858          21@3000,0|\
859          22@4500,0|\
860          23@6000,0|\
861          24@7500,0"
862     );
863 }
864 
865 #[test]
gpos_chaining1_simple_006()866 fn gpos_chaining1_simple_006() {
867     assert_eq!(
868         shape(
869             "tests/fonts/aots/gpos_chaining1_simple_f2.otf",
870             "\u{0000}\u{0000}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\u{0000}",
871             "--features=\"test\" --no-clusters --no-glyph-names --ned",
872         ),
873         "0|\
874          0@1500,0|\
875          21@3000,0|\
876          22@4500,0|\
877          23@6000,0|\
878          24@7500,0|\
879          25@9000,0|\
880          26@10500,0|\
881          0@12000,0"
882     );
883 }
884 
885 #[test]
gpos_chaining1_simple_007()886 fn gpos_chaining1_simple_007() {
887     assert_eq!(
888         shape(
889             "tests/fonts/aots/gpos_chaining1_simple_f2.otf",
890             "\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\u{0000}",
891             "--features=\"test\" --no-clusters --no-glyph-names --ned",
892         ),
893         "21|\
894          22@1500,0|\
895          23@3000,0|\
896          24@4500,0|\
897          25@6000,0|\
898          26@7500,0|\
899          0@9000,0"
900     );
901 }
902 
903 #[test]
gpos_chaining1_simple_008()904 fn gpos_chaining1_simple_008() {
905     assert_eq!(
906         shape(
907             "tests/fonts/aots/gpos_chaining1_simple_f2.otf",
908             "\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\u{0000}",
909             "--features=\"test\" --no-clusters --no-glyph-names --ned",
910         ),
911         "22|\
912          23@1500,0|\
913          24@3000,0|\
914          25@4500,0|\
915          26@6000,0|\
916          0@7500,0"
917     );
918 }
919 
920 #[test]
gpos_chaining1_simple_009()921 fn gpos_chaining1_simple_009() {
922     assert_eq!(
923         shape(
924             "tests/fonts/aots/gpos_chaining1_simple_f2.otf",
925             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}\u{0018}\u{0019}\u{001A}\u{0000}",
926             "--features=\"test\" --no-clusters --no-glyph-names --ned",
927         ),
928         "0|\
929          20@1500,0|\
930          21@3000,0|\
931          22@4500,0|\
932          0@6000,0|\
933          24@7500,0|\
934          25@9000,0|\
935          26@10500,0|\
936          0@12000,0"
937     );
938 }
939 
940 #[test]
gpos_chaining1_simple_010()941 fn gpos_chaining1_simple_010() {
942     assert_eq!(
943         shape(
944             "tests/fonts/aots/gpos_chaining1_simple_f2.otf",
945             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}",
946             "--features=\"test\" --no-clusters --no-glyph-names --ned",
947         ),
948         "0|\
949          20@1500,0|\
950          21@3000,0|\
951          22@4500,0|\
952          23@6000,0"
953     );
954 }
955 
956 #[test]
gpos_chaining1_simple_011()957 fn gpos_chaining1_simple_011() {
958     assert_eq!(
959         shape(
960             "tests/fonts/aots/gpos_chaining1_simple_f2.otf",
961             "\u{0000}\u{0014}\u{0015}\u{0016}",
962             "--features=\"test\" --no-clusters --no-glyph-names --ned",
963         ),
964         "0|\
965          20@1500,0|\
966          21@3000,0|\
967          22@4500,0"
968     );
969 }
970 
971 #[test]
gpos_chaining1_successive_001()972 fn gpos_chaining1_successive_001() {
973     assert_eq!(
974         shape(
975             "tests/fonts/aots/gpos_chaining1_successive_f1.otf",
976             "\u{0000}\u{0019}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0000}",
977             "--features=\"test\" --no-clusters --no-glyph-names --ned",
978         ),
979         "0|\
980          25@1500,0|\
981          20@3000,0|\
982          21@4520,0|\
983          22@6020,0|\
984          23@7500,0|\
985          24@9000,0|\
986          0@10500,0"
987     );
988 }
989 
990 #[test]
gpos_chaining2_boundary_001()991 fn gpos_chaining2_boundary_001() {
992     assert_eq!(
993         shape(
994             "tests/fonts/aots/gpos_chaining2_boundary_f1.otf",
995             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
996             "--features=\"test\" --no-clusters --no-glyph-names --ned",
997         ),
998         "0|\
999          20@1500,0|\
1000          21@3000,0|\
1001          22@4500,0|\
1002          23@6000,0|\
1003          0@7500,0"
1004     );
1005 }
1006 
1007 #[test]
gpos_chaining2_boundary_002()1008 fn gpos_chaining2_boundary_002() {
1009     assert_eq!(
1010         shape(
1011             "tests/fonts/aots/gpos_chaining2_boundary_f2.otf",
1012             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
1013             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1014         ),
1015         "0|\
1016          20@1500,0|\
1017          21@3020,0|\
1018          22@4500,0|\
1019          23@6000,0|\
1020          0@7500,0"
1021     );
1022 }
1023 
1024 #[test]
gpos_chaining2_boundary_003()1025 fn gpos_chaining2_boundary_003() {
1026     assert_eq!(
1027         shape(
1028             "tests/fonts/aots/gpos_chaining2_boundary_f3.otf",
1029             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
1030             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1031         ),
1032         "0|\
1033          20@1500,0|\
1034          21@3020,0|\
1035          22@4500,0|\
1036          23@6000,0|\
1037          0@7500,0"
1038     );
1039 }
1040 
1041 #[test]
gpos_chaining2_boundary_004()1042 fn gpos_chaining2_boundary_004() {
1043     assert_eq!(
1044         shape(
1045             "tests/fonts/aots/gpos_chaining2_boundary_f4.otf",
1046             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
1047             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1048         ),
1049         "0|\
1050          20@1500,0|\
1051          21@3000,0|\
1052          22@4520,0|\
1053          23@6000,0|\
1054          0@7500,0"
1055     );
1056 }
1057 
1058 #[test]
gpos_chaining2_multiple_subrules_001()1059 fn gpos_chaining2_multiple_subrules_001() {
1060     assert_eq!(
1061         shape(
1062             "tests/fonts/aots/gpos_chaining2_multiple_subrules_f1.otf",
1063             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0000}\u{0014}\u{0015}\u{0016}\
1064              \u{0017}\u{0000}",
1065             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1066         ),
1067         "0|\
1068          20@1500,0|\
1069          21@3020,0|\
1070          22@4500,0|\
1071          23@6000,0|\
1072          24@7500,0|\
1073          0@9000,0|\
1074          20@10500,0|\
1075          21@12000,0|\
1076          22@13520,0|\
1077          23@15000,0|\
1078          0@16500,0"
1079     );
1080 }
1081 
1082 #[test]
gpos_chaining2_multiple_subrules_002()1083 fn gpos_chaining2_multiple_subrules_002() {
1084     assert_eq!(
1085         shape(
1086             "tests/fonts/aots/gpos_chaining2_multiple_subrules_f2.otf",
1087             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0000}\u{0014}\u{0015}\u{0016}\
1088              \u{0017}\u{0000}",
1089             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1090         ),
1091         "0|\
1092          20@1500,0|\
1093          21@3000,0|\
1094          22@4520,0|\
1095          23@6000,0|\
1096          24@7500,0|\
1097          0@9000,0|\
1098          20@10500,0|\
1099          21@12000,0|\
1100          22@13520,0|\
1101          23@15000,0|\
1102          0@16500,0"
1103     );
1104 }
1105 
1106 #[test]
gpos_chaining2_next_glyph_001()1107 fn gpos_chaining2_next_glyph_001() {
1108     assert_eq!(
1109         shape(
1110             "tests/fonts/aots/gpos_chaining2_next_glyph_f1.otf",
1111             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
1112             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1113         ),
1114         "0|\
1115          20@1500,0|\
1116          21@3020,0|\
1117          22@4520,0|\
1118          23@6020,0|\
1119          0@7500,0"
1120     );
1121 }
1122 
1123 #[test]
gpos_chaining2_simple_001()1124 fn gpos_chaining2_simple_001() {
1125     assert_eq!(
1126         shape(
1127             "tests/fonts/aots/gpos_chaining2_simple_f1.otf",
1128             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
1129             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1130         ),
1131         "0|\
1132          20@1500,0|\
1133          21@3020,0|\
1134          22@4520,0|\
1135          23@6000,0|\
1136          0@7500,0"
1137     );
1138 }
1139 
1140 #[test]
gpos_chaining2_simple_002()1141 fn gpos_chaining2_simple_002() {
1142     assert_eq!(
1143         shape(
1144             "tests/fonts/aots/gpos_chaining2_simple_f2.otf",
1145             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\u{0000}",
1146             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1147         ),
1148         "0|\
1149          20@1500,0|\
1150          21@3000,0|\
1151          22@4520,0|\
1152          23@6000,0|\
1153          24@7500,0|\
1154          25@9000,0|\
1155          26@10500,0|\
1156          0@12000,0"
1157     );
1158 }
1159 
1160 #[test]
gpos_chaining2_simple_003()1161 fn gpos_chaining2_simple_003() {
1162     assert_eq!(
1163         shape(
1164             "tests/fonts/aots/gpos_chaining2_simple_f2.otf",
1165             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{0000}\u{0000}",
1166             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1167         ),
1168         "0|\
1169          20@1500,0|\
1170          21@3000,0|\
1171          22@4500,0|\
1172          23@6000,0|\
1173          24@7500,0|\
1174          25@9000,0|\
1175          0@10500,0|\
1176          0@12000,0"
1177     );
1178 }
1179 
1180 #[test]
gpos_chaining2_simple_004()1181 fn gpos_chaining2_simple_004() {
1182     assert_eq!(
1183         shape(
1184             "tests/fonts/aots/gpos_chaining2_simple_f2.otf",
1185             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}",
1186             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1187         ),
1188         "0|\
1189          20@1500,0|\
1190          21@3000,0|\
1191          22@4500,0|\
1192          23@6000,0|\
1193          24@7500,0|\
1194          25@9000,0"
1195     );
1196 }
1197 
1198 #[test]
gpos_chaining2_simple_005()1199 fn gpos_chaining2_simple_005() {
1200     assert_eq!(
1201         shape(
1202             "tests/fonts/aots/gpos_chaining2_simple_f2.otf",
1203             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}",
1204             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1205         ),
1206         "0|\
1207          20@1500,0|\
1208          21@3000,0|\
1209          22@4500,0|\
1210          23@6000,0|\
1211          24@7500,0"
1212     );
1213 }
1214 
1215 #[test]
gpos_chaining2_simple_006()1216 fn gpos_chaining2_simple_006() {
1217     assert_eq!(
1218         shape(
1219             "tests/fonts/aots/gpos_chaining2_simple_f2.otf",
1220             "\u{0000}\u{0000}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\u{0000}",
1221             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1222         ),
1223         "0|\
1224          0@1500,0|\
1225          21@3000,0|\
1226          22@4500,0|\
1227          23@6000,0|\
1228          24@7500,0|\
1229          25@9000,0|\
1230          26@10500,0|\
1231          0@12000,0"
1232     );
1233 }
1234 
1235 #[test]
gpos_chaining2_simple_007()1236 fn gpos_chaining2_simple_007() {
1237     assert_eq!(
1238         shape(
1239             "tests/fonts/aots/gpos_chaining2_simple_f2.otf",
1240             "\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\u{0000}",
1241             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1242         ),
1243         "21|\
1244          22@1500,0|\
1245          23@3000,0|\
1246          24@4500,0|\
1247          25@6000,0|\
1248          26@7500,0|\
1249          0@9000,0"
1250     );
1251 }
1252 
1253 #[test]
gpos_chaining2_simple_008()1254 fn gpos_chaining2_simple_008() {
1255     assert_eq!(
1256         shape(
1257             "tests/fonts/aots/gpos_chaining2_simple_f2.otf",
1258             "\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\u{0000}",
1259             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1260         ),
1261         "22|\
1262          23@1500,0|\
1263          24@3000,0|\
1264          25@4500,0|\
1265          26@6000,0|\
1266          0@7500,0"
1267     );
1268 }
1269 
1270 #[test]
gpos_chaining2_simple_009()1271 fn gpos_chaining2_simple_009() {
1272     assert_eq!(
1273         shape(
1274             "tests/fonts/aots/gpos_chaining2_simple_f2.otf",
1275             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}\u{0018}\u{0019}\u{001A}\u{0000}",
1276             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1277         ),
1278         "0|\
1279          20@1500,0|\
1280          21@3000,0|\
1281          22@4500,0|\
1282          0@6000,0|\
1283          24@7500,0|\
1284          25@9000,0|\
1285          26@10500,0|\
1286          0@12000,0"
1287     );
1288 }
1289 
1290 #[test]
gpos_chaining2_simple_010()1291 fn gpos_chaining2_simple_010() {
1292     assert_eq!(
1293         shape(
1294             "tests/fonts/aots/gpos_chaining2_simple_f2.otf",
1295             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}",
1296             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1297         ),
1298         "0|\
1299          20@1500,0|\
1300          21@3000,0|\
1301          22@4500,0|\
1302          23@6000,0"
1303     );
1304 }
1305 
1306 #[test]
gpos_chaining2_simple_011()1307 fn gpos_chaining2_simple_011() {
1308     assert_eq!(
1309         shape(
1310             "tests/fonts/aots/gpos_chaining2_simple_f2.otf",
1311             "\u{0000}\u{0014}\u{0015}\u{0016}",
1312             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1313         ),
1314         "0|\
1315          20@1500,0|\
1316          21@3000,0|\
1317          22@4500,0"
1318     );
1319 }
1320 
1321 #[test]
gpos_chaining2_successive_001()1322 fn gpos_chaining2_successive_001() {
1323     assert_eq!(
1324         shape(
1325             "tests/fonts/aots/gpos_chaining2_successive_f1.otf",
1326             "\u{0000}\u{0019}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0000}",
1327             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1328         ),
1329         "0|\
1330          25@1500,0|\
1331          20@3000,0|\
1332          21@4520,0|\
1333          22@6020,0|\
1334          23@7500,0|\
1335          24@9000,0|\
1336          0@10500,0"
1337     );
1338 }
1339 
1340 #[test]
gpos_chaining3_boundary_001()1341 fn gpos_chaining3_boundary_001() {
1342     assert_eq!(
1343         shape(
1344             "tests/fonts/aots/gpos_chaining3_boundary_f1.otf",
1345             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
1346             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1347         ),
1348         "0|\
1349          20@1500,0|\
1350          21@3000,0|\
1351          22@4500,0|\
1352          23@6000,0|\
1353          0@7500,0"
1354     );
1355 }
1356 
1357 #[test]
gpos_chaining3_boundary_002()1358 fn gpos_chaining3_boundary_002() {
1359     assert_eq!(
1360         shape(
1361             "tests/fonts/aots/gpos_chaining3_boundary_f2.otf",
1362             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
1363             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1364         ),
1365         "0|\
1366          20@1500,0|\
1367          21@3020,0|\
1368          22@4500,0|\
1369          23@6000,0|\
1370          0@7500,0"
1371     );
1372 }
1373 
1374 #[test]
gpos_chaining3_boundary_003()1375 fn gpos_chaining3_boundary_003() {
1376     assert_eq!(
1377         shape(
1378             "tests/fonts/aots/gpos_chaining3_boundary_f3.otf",
1379             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
1380             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1381         ),
1382         "0|\
1383          20@1500,0|\
1384          21@3020,0|\
1385          22@4500,0|\
1386          23@6000,0|\
1387          0@7500,0"
1388     );
1389 }
1390 
1391 #[test]
gpos_chaining3_boundary_004()1392 fn gpos_chaining3_boundary_004() {
1393     assert_eq!(
1394         shape(
1395             "tests/fonts/aots/gpos_chaining3_boundary_f4.otf",
1396             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
1397             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1398         ),
1399         "0|\
1400          20@1500,0|\
1401          21@3000,0|\
1402          22@4520,0|\
1403          23@6000,0|\
1404          0@7500,0"
1405     );
1406 }
1407 
1408 #[test]
gpos_chaining3_next_glyph_001()1409 fn gpos_chaining3_next_glyph_001() {
1410     assert_eq!(
1411         shape(
1412             "tests/fonts/aots/gpos_chaining3_next_glyph_f1.otf",
1413             "\u{0000}\u{0016}\u{0015}\u{0016}\u{0015}\u{0016}\u{0015}\u{0000}",
1414             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1415         ),
1416         "0|\
1417          22@1500,0|\
1418          21@3020,0|\
1419          22@4500,0|\
1420          21@6020,0|\
1421          22@7500,0|\
1422          21@9000,0|\
1423          0@10500,0"
1424     );
1425 }
1426 
1427 #[test]
gpos_chaining3_simple_001()1428 fn gpos_chaining3_simple_001() {
1429     assert_eq!(
1430         shape(
1431             "tests/fonts/aots/gpos_chaining3_simple_f1.otf",
1432             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
1433             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1434         ),
1435         "0|\
1436          20@1500,0|\
1437          21@3020,0|\
1438          22@4520,0|\
1439          23@6000,0|\
1440          0@7500,0"
1441     );
1442 }
1443 
1444 #[test]
gpos_chaining3_simple_002()1445 fn gpos_chaining3_simple_002() {
1446     assert_eq!(
1447         shape(
1448             "tests/fonts/aots/gpos_chaining3_simple_f2.otf",
1449             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\u{0000}",
1450             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1451         ),
1452         "0|\
1453          20@1500,0|\
1454          21@3000,0|\
1455          22@4520,0|\
1456          23@6000,0|\
1457          24@7500,0|\
1458          25@9000,0|\
1459          26@10500,0|\
1460          0@12000,0"
1461     );
1462 }
1463 
1464 #[test]
gpos_chaining3_simple_003()1465 fn gpos_chaining3_simple_003() {
1466     assert_eq!(
1467         shape(
1468             "tests/fonts/aots/gpos_chaining3_simple_f2.otf",
1469             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{0000}\u{0000}",
1470             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1471         ),
1472         "0|\
1473          20@1500,0|\
1474          21@3000,0|\
1475          22@4500,0|\
1476          23@6000,0|\
1477          24@7500,0|\
1478          25@9000,0|\
1479          0@10500,0|\
1480          0@12000,0"
1481     );
1482 }
1483 
1484 #[test]
gpos_chaining3_simple_004()1485 fn gpos_chaining3_simple_004() {
1486     assert_eq!(
1487         shape(
1488             "tests/fonts/aots/gpos_chaining3_simple_f2.otf",
1489             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}",
1490             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1491         ),
1492         "0|\
1493          20@1500,0|\
1494          21@3000,0|\
1495          22@4500,0|\
1496          23@6000,0|\
1497          24@7500,0|\
1498          25@9000,0"
1499     );
1500 }
1501 
1502 #[test]
gpos_chaining3_simple_005()1503 fn gpos_chaining3_simple_005() {
1504     assert_eq!(
1505         shape(
1506             "tests/fonts/aots/gpos_chaining3_simple_f2.otf",
1507             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}",
1508             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1509         ),
1510         "0|\
1511          20@1500,0|\
1512          21@3000,0|\
1513          22@4500,0|\
1514          23@6000,0|\
1515          24@7500,0"
1516     );
1517 }
1518 
1519 #[test]
gpos_chaining3_simple_006()1520 fn gpos_chaining3_simple_006() {
1521     assert_eq!(
1522         shape(
1523             "tests/fonts/aots/gpos_chaining3_simple_f2.otf",
1524             "\u{0000}\u{0000}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\u{0000}",
1525             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1526         ),
1527         "0|\
1528          0@1500,0|\
1529          21@3000,0|\
1530          22@4500,0|\
1531          23@6000,0|\
1532          24@7500,0|\
1533          25@9000,0|\
1534          26@10500,0|\
1535          0@12000,0"
1536     );
1537 }
1538 
1539 #[test]
gpos_chaining3_simple_007()1540 fn gpos_chaining3_simple_007() {
1541     assert_eq!(
1542         shape(
1543             "tests/fonts/aots/gpos_chaining3_simple_f2.otf",
1544             "\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\u{0000}",
1545             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1546         ),
1547         "21|\
1548          22@1500,0|\
1549          23@3000,0|\
1550          24@4500,0|\
1551          25@6000,0|\
1552          26@7500,0|\
1553          0@9000,0"
1554     );
1555 }
1556 
1557 #[test]
gpos_chaining3_simple_008()1558 fn gpos_chaining3_simple_008() {
1559     assert_eq!(
1560         shape(
1561             "tests/fonts/aots/gpos_chaining3_simple_f2.otf",
1562             "\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\u{0000}",
1563             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1564         ),
1565         "22|\
1566          23@1500,0|\
1567          24@3000,0|\
1568          25@4500,0|\
1569          26@6000,0|\
1570          0@7500,0"
1571     );
1572 }
1573 
1574 #[test]
gpos_chaining3_simple_009()1575 fn gpos_chaining3_simple_009() {
1576     assert_eq!(
1577         shape(
1578             "tests/fonts/aots/gpos_chaining3_simple_f2.otf",
1579             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}\u{0018}\u{0019}\u{001A}\u{0000}",
1580             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1581         ),
1582         "0|\
1583          20@1500,0|\
1584          21@3000,0|\
1585          22@4500,0|\
1586          0@6000,0|\
1587          24@7500,0|\
1588          25@9000,0|\
1589          26@10500,0|\
1590          0@12000,0"
1591     );
1592 }
1593 
1594 #[test]
gpos_chaining3_simple_010()1595 fn gpos_chaining3_simple_010() {
1596     assert_eq!(
1597         shape(
1598             "tests/fonts/aots/gpos_chaining3_simple_f2.otf",
1599             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}",
1600             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1601         ),
1602         "0|\
1603          20@1500,0|\
1604          21@3000,0|\
1605          22@4500,0|\
1606          23@6000,0"
1607     );
1608 }
1609 
1610 #[test]
gpos_chaining3_simple_011()1611 fn gpos_chaining3_simple_011() {
1612     assert_eq!(
1613         shape(
1614             "tests/fonts/aots/gpos_chaining3_simple_f2.otf",
1615             "\u{0000}\u{0014}\u{0015}\u{0016}",
1616             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1617         ),
1618         "0|\
1619          20@1500,0|\
1620          21@3000,0|\
1621          22@4500,0"
1622     );
1623 }
1624 
1625 #[test]
gpos_chaining3_successive_001()1626 fn gpos_chaining3_successive_001() {
1627     assert_eq!(
1628         shape(
1629             "tests/fonts/aots/gpos_chaining3_successive_f1.otf",
1630             "\u{0000}\u{0019}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0000}",
1631             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1632         ),
1633         "0|\
1634          25@1500,0|\
1635          20@3000,0|\
1636          21@4520,0|\
1637          22@6020,0|\
1638          23@7500,0|\
1639          24@9000,0|\
1640          0@10500,0"
1641     );
1642 }
1643 
1644 #[test]
gpos_context1_boundary_001()1645 fn gpos_context1_boundary_001() {
1646     assert_eq!(
1647         shape(
1648             "tests/fonts/aots/gpos_context1_boundary_f1.otf",
1649             "\u{0000}\u{0014}\u{0014}\u{0014}\u{0014}\u{0014}\u{0000}",
1650             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1651         ),
1652         "0|\
1653          20@1500,0|\
1654          20@3000,0|\
1655          20@4500,0|\
1656          20@6000,0|\
1657          20@7500,0|\
1658          0@9000,0"
1659     );
1660 }
1661 
1662 #[test]
gpos_context1_boundary_002()1663 fn gpos_context1_boundary_002() {
1664     assert_eq!(
1665         shape(
1666             "tests/fonts/aots/gpos_context1_boundary_f2.otf",
1667             "\u{0000}\u{0014}\u{0014}\u{0014}\u{0014}\u{0014}\u{0000}",
1668             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1669         ),
1670         "0|\
1671          20@1520,0|\
1672          20@3020,0|\
1673          20@4520,0|\
1674          20@6020,0|\
1675          20@7520,0|\
1676          0@9000,0"
1677     );
1678 }
1679 
1680 #[test]
gpos_context1_expansion_001()1681 fn gpos_context1_expansion_001() {
1682     assert_eq!(
1683         shape(
1684             "tests/fonts/aots/gpos_context1_expansion_f1.otf",
1685             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}",
1686             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1687         ),
1688         "0|\
1689          20@1500,0|\
1690          21@3000,0|\
1691          22@4500,0|\
1692          0@6000,0"
1693     );
1694 }
1695 
1696 #[test]
gpos_context1_multiple_subrules_001()1697 fn gpos_context1_multiple_subrules_001() {
1698     assert_eq!(
1699         shape(
1700             "tests/fonts/aots/gpos_context1_multiple_subrules_f1.otf",
1701             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}\u{0014}\u{0015}\u{0000}",
1702             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1703         ),
1704         "0|\
1705          20@1520,0|\
1706          21@3000,0|\
1707          22@4500,0|\
1708          0@6000,0|\
1709          20@7500,0|\
1710          21@9020,0|\
1711          0@10500,0"
1712     );
1713 }
1714 
1715 #[test]
gpos_context1_multiple_subrules_002()1716 fn gpos_context1_multiple_subrules_002() {
1717     assert_eq!(
1718         shape(
1719             "tests/fonts/aots/gpos_context1_multiple_subrules_f2.otf",
1720             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}\u{0014}\u{0015}\u{0000}",
1721             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1722         ),
1723         "0|\
1724          20@1500,0|\
1725          21@3020,0|\
1726          22@4500,0|\
1727          0@6000,0|\
1728          20@7500,0|\
1729          21@9020,0|\
1730          0@10500,0"
1731     );
1732 }
1733 
1734 #[test]
gpos_context1_next_glyph_001()1735 fn gpos_context1_next_glyph_001() {
1736     assert_eq!(
1737         shape(
1738             "tests/fonts/aots/gpos_context1_next_glyph_f1.otf",
1739             "\u{0000}\u{0014}\u{0014}\u{0014}\u{0014}\u{0014}\u{0000}",
1740             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1741         ),
1742         "0|\
1743          20@1520,0|\
1744          20@3000,0|\
1745          20@4520,0|\
1746          20@6000,0|\
1747          20@7500,0|\
1748          0@9000,0"
1749     );
1750 }
1751 
1752 #[test]
gpos_context1_simple_001()1753 fn gpos_context1_simple_001() {
1754     assert_eq!(
1755         shape(
1756             "tests/fonts/aots/gpos_context1_simple_f1.otf",
1757             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}",
1758             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1759         ),
1760         "0|\
1761          20@1520,0|\
1762          21@3020,0|\
1763          22@4520,0|\
1764          0@6000,0"
1765     );
1766 }
1767 
1768 #[test]
gpos_context1_simple_002()1769 fn gpos_context1_simple_002() {
1770     assert_eq!(
1771         shape(
1772             "tests/fonts/aots/gpos_context1_simple_f1.otf",
1773             "\u{0000}\u{0014}\u{0000}\u{0014}\u{0015}\u{0000}",
1774             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1775         ),
1776         "0|\
1777          20@1500,0|\
1778          0@3000,0|\
1779          20@4500,0|\
1780          21@6000,0|\
1781          0@7500,0"
1782     );
1783 }
1784 
1785 #[test]
gpos_context1_simple_003()1786 fn gpos_context1_simple_003() {
1787     assert_eq!(
1788         shape(
1789             "tests/fonts/aots/gpos_context1_simple_f2.otf",
1790             "\u{0000}\u{0014}\u{0014}\u{0014}\u{0014}\u{0014}\u{0000}",
1791             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1792         ),
1793         "0|\
1794          20@1500,0|\
1795          20@3020,0|\
1796          20@4500,0|\
1797          20@6000,0|\
1798          20@7500,0|\
1799          0@9000,0"
1800     );
1801 }
1802 
1803 #[test]
gpos_context1_successive_001()1804 fn gpos_context1_successive_001() {
1805     assert_eq!(
1806         shape(
1807             "tests/fonts/aots/gpos_context1_successive_f1.otf",
1808             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
1809             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1810         ),
1811         "0|\
1812          20@1500,0|\
1813          21@3020,0|\
1814          22@4520,0|\
1815          23@6000,0|\
1816          0@7500,0"
1817     );
1818 }
1819 
1820 #[test]
gpos_context2_boundary_001()1821 fn gpos_context2_boundary_001() {
1822     assert_eq!(
1823         shape(
1824             "tests/fonts/aots/gpos_context2_boundary_f1.otf",
1825             "\u{0000}\u{0014}\u{0014}\u{0014}\u{0014}\u{0014}\u{0000}",
1826             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1827         ),
1828         "0|\
1829          20@1500,0|\
1830          20@3000,0|\
1831          20@4500,0|\
1832          20@6000,0|\
1833          20@7500,0|\
1834          0@9000,0"
1835     );
1836 }
1837 
1838 #[test]
gpos_context2_boundary_002()1839 fn gpos_context2_boundary_002() {
1840     assert_eq!(
1841         shape(
1842             "tests/fonts/aots/gpos_context2_boundary_f2.otf",
1843             "\u{0000}\u{0014}\u{0014}\u{0014}\u{0014}\u{0014}\u{0000}",
1844             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1845         ),
1846         "0|\
1847          20@1520,0|\
1848          20@3020,0|\
1849          20@4520,0|\
1850          20@6020,0|\
1851          20@7520,0|\
1852          0@9000,0"
1853     );
1854 }
1855 
1856 #[test]
gpos_context2_expansion_001()1857 fn gpos_context2_expansion_001() {
1858     assert_eq!(
1859         shape(
1860             "tests/fonts/aots/gpos_context2_expansion_f1.otf",
1861             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}",
1862             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1863         ),
1864         "0|\
1865          20@1500,0|\
1866          21@3000,0|\
1867          22@4500,0|\
1868          0@6000,0"
1869     );
1870 }
1871 
1872 #[test]
gpos_context2_multiple_subrules_001()1873 fn gpos_context2_multiple_subrules_001() {
1874     assert_eq!(
1875         shape(
1876             "tests/fonts/aots/gpos_context2_multiple_subrules_f1.otf",
1877             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}\u{0014}\u{0015}\u{0000}",
1878             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1879         ),
1880         "0|\
1881          20@1520,0|\
1882          21@3000,0|\
1883          22@4500,0|\
1884          0@6000,0|\
1885          20@7500,0|\
1886          21@9020,0|\
1887          0@10500,0"
1888     );
1889 }
1890 
1891 #[test]
gpos_context2_multiple_subrules_002()1892 fn gpos_context2_multiple_subrules_002() {
1893     assert_eq!(
1894         shape(
1895             "tests/fonts/aots/gpos_context2_multiple_subrules_f2.otf",
1896             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}\u{0014}\u{0015}\u{0000}",
1897             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1898         ),
1899         "0|\
1900          20@1500,0|\
1901          21@3020,0|\
1902          22@4500,0|\
1903          0@6000,0|\
1904          20@7500,0|\
1905          21@9020,0|\
1906          0@10500,0"
1907     );
1908 }
1909 
1910 #[test]
gpos_context2_next_glyph_001()1911 fn gpos_context2_next_glyph_001() {
1912     assert_eq!(
1913         shape(
1914             "tests/fonts/aots/gpos_context2_next_glyph_f1.otf",
1915             "\u{0000}\u{0014}\u{0014}\u{0014}\u{0014}\u{0014}\u{0000}",
1916             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1917         ),
1918         "0|\
1919          20@1520,0|\
1920          20@3000,0|\
1921          20@4520,0|\
1922          20@6000,0|\
1923          20@7500,0|\
1924          0@9000,0"
1925     );
1926 }
1927 
1928 #[test]
gpos_context2_simple_001()1929 fn gpos_context2_simple_001() {
1930     assert_eq!(
1931         shape(
1932             "tests/fonts/aots/gpos_context2_simple_f1.otf",
1933             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}",
1934             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1935         ),
1936         "0|\
1937          20@1520,0|\
1938          21@3020,0|\
1939          22@4520,0|\
1940          0@6000,0"
1941     );
1942 }
1943 
1944 #[test]
gpos_context2_simple_002()1945 fn gpos_context2_simple_002() {
1946     assert_eq!(
1947         shape(
1948             "tests/fonts/aots/gpos_context2_simple_f1.otf",
1949             "\u{0000}\u{0014}\u{0000}\u{0014}\u{0015}\u{0000}",
1950             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1951         ),
1952         "0|\
1953          20@1500,0|\
1954          0@3000,0|\
1955          20@4500,0|\
1956          21@6000,0|\
1957          0@7500,0"
1958     );
1959 }
1960 
1961 #[test]
gpos_context2_simple_003()1962 fn gpos_context2_simple_003() {
1963     assert_eq!(
1964         shape(
1965             "tests/fonts/aots/gpos_context2_simple_f2.otf",
1966             "\u{0000}\u{0014}\u{0014}\u{0014}\u{0014}\u{0014}\u{0000}",
1967             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1968         ),
1969         "0|\
1970          20@1500,0|\
1971          20@3020,0|\
1972          20@4500,0|\
1973          20@6000,0|\
1974          20@7500,0|\
1975          0@9000,0"
1976     );
1977 }
1978 
1979 #[test]
gpos_context2_successive_001()1980 fn gpos_context2_successive_001() {
1981     assert_eq!(
1982         shape(
1983             "tests/fonts/aots/gpos_context2_successive_f1.otf",
1984             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
1985             "--features=\"test\" --no-clusters --no-glyph-names --ned",
1986         ),
1987         "0|\
1988          20@1500,0|\
1989          21@3020,0|\
1990          22@4520,0|\
1991          23@6000,0|\
1992          0@7500,0"
1993     );
1994 }
1995 
1996 #[test]
gpos_context3_boundary_001()1997 fn gpos_context3_boundary_001() {
1998     assert_eq!(
1999         shape(
2000             "tests/fonts/aots/gpos_context3_boundary_f1.otf",
2001             "\u{0000}\u{0014}\u{0014}\u{0014}\u{0014}\u{0014}\u{0000}",
2002             "--features=\"test\" --no-clusters --no-glyph-names --ned",
2003         ),
2004         "0|\
2005          20@1500,0|\
2006          20@3000,0|\
2007          20@4500,0|\
2008          20@6000,0|\
2009          20@7500,0|\
2010          0@9000,0"
2011     );
2012 }
2013 
2014 #[test]
gpos_context3_boundary_002()2015 fn gpos_context3_boundary_002() {
2016     assert_eq!(
2017         shape(
2018             "tests/fonts/aots/gpos_context3_boundary_f2.otf",
2019             "\u{0000}\u{0014}\u{0014}\u{0014}\u{0014}\u{0014}\u{0000}",
2020             "--features=\"test\" --no-clusters --no-glyph-names --ned",
2021         ),
2022         "0|\
2023          20@1520,0|\
2024          20@3020,0|\
2025          20@4520,0|\
2026          20@6020,0|\
2027          20@7520,0|\
2028          0@9000,0"
2029     );
2030 }
2031 
2032 #[test]
gpos_context3_next_glyph_001()2033 fn gpos_context3_next_glyph_001() {
2034     assert_eq!(
2035         shape(
2036             "tests/fonts/aots/gpos_context3_next_glyph_f1.otf",
2037             "\u{0000}\u{0014}\u{0014}\u{0014}\u{0014}\u{0014}\u{0000}",
2038             "--features=\"test\" --no-clusters --no-glyph-names --ned",
2039         ),
2040         "0|\
2041          20@1520,0|\
2042          20@3000,0|\
2043          20@4520,0|\
2044          20@6000,0|\
2045          20@7500,0|\
2046          0@9000,0"
2047     );
2048 }
2049 
2050 #[test]
gpos_context3_simple_001()2051 fn gpos_context3_simple_001() {
2052     assert_eq!(
2053         shape(
2054             "tests/fonts/aots/gpos_context3_simple_f1.otf",
2055             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}",
2056             "--features=\"test\" --no-clusters --no-glyph-names --ned",
2057         ),
2058         "0|\
2059          20@1520,0|\
2060          21@3020,0|\
2061          22@4520,0|\
2062          0@6000,0"
2063     );
2064 }
2065 
2066 #[test]
gpos_context3_simple_002()2067 fn gpos_context3_simple_002() {
2068     assert_eq!(
2069         shape(
2070             "tests/fonts/aots/gpos_context3_simple_f1.otf",
2071             "\u{0000}\u{0014}\u{0000}\u{0014}\u{0015}\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}",
2072             "--features=\"test\" --no-clusters --no-glyph-names --ned",
2073         ),
2074         "0|\
2075          20@1500,0|\
2076          0@3000,0|\
2077          20@4500,0|\
2078          21@6000,0|\
2079          0@7500,0|\
2080          20@9020,0|\
2081          21@10520,0|\
2082          22@12020,0|\
2083          0@13500,0"
2084     );
2085 }
2086 
2087 #[test]
gpos_context3_successive_001()2088 fn gpos_context3_successive_001() {
2089     assert_eq!(
2090         shape(
2091             "tests/fonts/aots/gpos_context3_successive_f1.otf",
2092             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
2093             "--features=\"test\" --no-clusters --no-glyph-names --ned",
2094         ),
2095         "0|\
2096          20@1500,0|\
2097          21@3020,0|\
2098          22@4520,0|\
2099          23@6000,0|\
2100          0@7500,0"
2101     );
2102 }
2103 
2104 #[test]
gsub1_1_lookupflag_001()2105 fn gsub1_1_lookupflag_001() {
2106     assert_eq!(
2107         shape(
2108             "tests/fonts/aots/gsub1_1_lookupflag_f1.otf",
2109             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0015}",
2110             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2111         ),
2112         "17|\
2113          18|\
2114          24|\
2115          20|\
2116          21"
2117     );
2118 }
2119 
2120 #[test]
gsub1_1_modulo_001()2121 fn gsub1_1_modulo_001() {
2122     assert_eq!(
2123         shape(
2124             "tests/fonts/aots/gsub1_1_modulo_f1.otf",
2125             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}",
2126             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2127         ),
2128         "17|\
2129          18|\
2130          17|\
2131          24|\
2132          23|\
2133          18|\
2134          23|\
2135          24"
2136     );
2137 }
2138 
2139 #[test]
gsub1_1_simple_001()2140 fn gsub1_1_simple_001() {
2141     assert_eq!(
2142         shape(
2143             "tests/fonts/aots/gsub1_1_simple_f1.otf",
2144             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0015}",
2145             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2146         ),
2147         "17|\
2148          23|\
2149          24|\
2150          20|\
2151          21"
2152     );
2153 }
2154 
2155 #[test]
gsub1_2_lookupflag_001()2156 fn gsub1_2_lookupflag_001() {
2157     assert_eq!(
2158         shape(
2159             "tests/fonts/aots/gsub1_2_lookupflag_f1.otf",
2160             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0015}",
2161             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2162         ),
2163         "17|\
2164          18|\
2165          19|\
2166          25|\
2167          21"
2168     );
2169 }
2170 
2171 #[test]
gsub1_2_simple_001()2172 fn gsub1_2_simple_001() {
2173     assert_eq!(
2174         shape(
2175             "tests/fonts/aots/gsub1_2_simple_f1.otf",
2176             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0015}",
2177             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2178         ),
2179         "17|\
2180          22|\
2181          19|\
2182          25|\
2183          21"
2184     );
2185 }
2186 
2187 #[test]
gsub2_1_lookupflag_001()2188 fn gsub2_1_lookupflag_001() {
2189     assert_eq!(
2190         shape(
2191             "tests/fonts/aots/gsub2_1_lookupflag_f1.otf",
2192             "\u{0011}\u{0012}\u{0013}\u{0011}",
2193             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2194         ),
2195         "17|\
2196          18|\
2197          22|\
2198          23|\
2199          17"
2200     );
2201 }
2202 
2203 #[test]
gsub2_1_multiple_sequences_001()2204 fn gsub2_1_multiple_sequences_001() {
2205     assert_eq!(
2206         shape(
2207             "tests/fonts/aots/gsub2_1_multiple_sequences_f1.otf",
2208             "\u{0011}\u{0012}\u{0013}\u{0011}",
2209             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2210         ),
2211         "17|\
2212          20|\
2213          21|\
2214          22|\
2215          23|\
2216          17"
2217     );
2218 }
2219 
2220 #[test]
gsub2_1_simple_001()2221 fn gsub2_1_simple_001() {
2222     assert_eq!(
2223         shape(
2224             "tests/fonts/aots/gsub2_1_simple_f1.otf",
2225             "\u{0011}\u{0012}\u{0013}",
2226             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2227         ),
2228         "17|\
2229          20|\
2230          21|\
2231          22|\
2232          19"
2233     );
2234 }
2235 
2236 #[test]
gsub2_1_simple_002()2237 fn gsub2_1_simple_002() {
2238     assert_eq!(
2239         shape(
2240             "tests/fonts/aots/gsub2_1_simple_f1.otf",
2241             "\u{0011}\u{0012}\u{0013}\u{0012}",
2242             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2243         ),
2244         "17|\
2245          20|\
2246          21|\
2247          22|\
2248          19|\
2249          20|\
2250          21|\
2251          22"
2252     );
2253 }
2254 
2255 #[test]
gsub3_1_lookupflag_001()2256 fn gsub3_1_lookupflag_001() {
2257     assert_eq!(
2258         shape(
2259             "tests/fonts/aots/gsub3_1_lookupflag_f1.otf",
2260             "\u{0011}\u{0012}\u{0012}\u{0012}\u{0013}\u{0013}\u{0013}\u{0013}\u{0011}",
2261             "--features=\"-test[4],test[5],test[6]=2,-test[7]\" --no-clusters --no-glyph-names --no-positions",
2262         ),
2263         "17|\
2264          18|\
2265          18|\
2266          18|\
2267          19|\
2268          22|\
2269          23|\
2270          19|\
2271          17"
2272     );
2273 }
2274 
2275 #[test]
gsub3_1_multiple_001()2276 fn gsub3_1_multiple_001() {
2277     assert_eq!(
2278         shape(
2279             "tests/fonts/aots/gsub3_1_multiple_f1.otf",
2280             "\u{0011}\u{0012}\u{0012}\u{0012}\u{0012}\u{0013}\u{0013}\u{0013}\u{0013}\u{0011}",
2281             "--features=\"-test[1],test[2],test[3]=2,-test[4],-test[5],test[6],test[7]=2,-test[8]\" --no-clusters --no-glyph-names --no-positions",
2282         ),
2283         "17|\
2284          18|\
2285          20|\
2286          21|\
2287          18|\
2288          19|\
2289          22|\
2290          23|\
2291          19|\
2292          17"
2293     );
2294 }
2295 
2296 #[test]
gsub4_1_lookupflag_001()2297 fn gsub4_1_lookupflag_001() {
2298     assert_eq!(
2299         shape(
2300             "tests/fonts/aots/gsub4_1_lookupflag_f1.otf",
2301             "\u{0011}\u{0018}\u{0012}\u{0018}\u{0013}\u{0018}\u{0018}\u{0014}\u{0018}\u{0011}\
2302              \u{0012}\u{0013}\u{0016}\u{0014}",
2303             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2304         ),
2305         "17|\
2306          24|\
2307          23|\
2308          24|\
2309          24|\
2310          24|\
2311          24|\
2312          17|\
2313          18|\
2314          19|\
2315          22|\
2316          20"
2317     );
2318 }
2319 
2320 #[test]
gsub4_1_multiple_ligatures_001()2321 fn gsub4_1_multiple_ligatures_001() {
2322     assert_eq!(
2323         shape(
2324             "tests/fonts/aots/gsub4_1_multiple_ligatures_f1.otf",
2325             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0011}\u{0012}\u{0013}\u{0016}\u{0014}",
2326             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2327         ),
2328         "17|\
2329          23|\
2330          17|\
2331          24|\
2332          22|\
2333          20"
2334     );
2335 }
2336 
2337 #[test]
gsub4_1_multiple_ligatures_002()2338 fn gsub4_1_multiple_ligatures_002() {
2339     assert_eq!(
2340         shape(
2341             "tests/fonts/aots/gsub4_1_multiple_ligatures_f2.otf",
2342             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0011}\u{0012}\u{0013}\u{0016}\u{0014}",
2343             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2344         ),
2345         "17|\
2346          24|\
2347          20|\
2348          17|\
2349          24|\
2350          22|\
2351          20"
2352     );
2353 }
2354 
2355 #[test]
gsub4_1_multiple_ligsets_001()2356 fn gsub4_1_multiple_ligsets_001() {
2357     assert_eq!(
2358         shape(
2359             "tests/fonts/aots/gsub4_1_multiple_ligsets_f1.otf",
2360             "\u{0011}\u{0012}\u{0013}\u{0015}\u{0014}\u{0013}\u{0016}",
2361             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2362         ),
2363         "17|\
2364          23|\
2365          21|\
2366          24|\
2367          22"
2368     );
2369 }
2370 
2371 #[test]
gsub4_1_simple_001()2372 fn gsub4_1_simple_001() {
2373     assert_eq!(
2374         shape(
2375             "tests/fonts/aots/gsub4_1_simple_f1.otf",
2376             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0011}\u{0012}\u{0013}\u{0016}\u{0014}",
2377             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2378         ),
2379         "17|\
2380          23|\
2381          17|\
2382          18|\
2383          19|\
2384          22|\
2385          20"
2386     );
2387 }
2388 
2389 #[test]
gsub7_001()2390 fn gsub7_001() {
2391     assert_eq!(
2392         shape(
2393             "tests/fonts/aots/gsub7_font1.otf",
2394             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0015}",
2395             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2396         ),
2397         "17|\
2398          23|\
2399          24|\
2400          20|\
2401          21"
2402     );
2403 }
2404 
2405 #[test]
gsub7_002()2406 fn gsub7_002() {
2407     assert_eq!(
2408         shape(
2409             "tests/fonts/aots/gsub7_font2.otf",
2410             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0015}",
2411             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2412         ),
2413         "17|\
2414          23|\
2415          29|\
2416          20|\
2417          21"
2418     );
2419 }
2420 
2421 #[test]
gsub_chaining1_boundary_001()2422 fn gsub_chaining1_boundary_001() {
2423     assert_eq!(
2424         shape(
2425             "tests/fonts/aots/gsub_chaining1_boundary_f1.otf",
2426             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
2427             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2428         ),
2429         "0|\
2430          20|\
2431          21|\
2432          22|\
2433          23|\
2434          0"
2435     );
2436 }
2437 
2438 #[test]
gsub_chaining1_boundary_002()2439 fn gsub_chaining1_boundary_002() {
2440     assert_eq!(
2441         shape(
2442             "tests/fonts/aots/gsub_chaining1_boundary_f2.otf",
2443             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
2444             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2445         ),
2446         "0|\
2447          20|\
2448          61|\
2449          22|\
2450          23|\
2451          0"
2452     );
2453 }
2454 
2455 #[test]
gsub_chaining1_boundary_003()2456 fn gsub_chaining1_boundary_003() {
2457     assert_eq!(
2458         shape(
2459             "tests/fonts/aots/gsub_chaining1_boundary_f3.otf",
2460             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
2461             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2462         ),
2463         "0|\
2464          20|\
2465          61|\
2466          22|\
2467          23|\
2468          0"
2469     );
2470 }
2471 
2472 #[test]
gsub_chaining1_boundary_004()2473 fn gsub_chaining1_boundary_004() {
2474     assert_eq!(
2475         shape(
2476             "tests/fonts/aots/gsub_chaining1_boundary_f4.otf",
2477             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
2478             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2479         ),
2480         "0|\
2481          20|\
2482          21|\
2483          62|\
2484          23|\
2485          0"
2486     );
2487 }
2488 
2489 #[test]
gsub_chaining1_lookupflag_001()2490 fn gsub_chaining1_lookupflag_001() {
2491     assert_eq!(
2492         shape(
2493             "tests/fonts/aots/gsub_chaining1_lookupflag_f1.otf",
2494             "\u{0000}\u{0014}\u{005A}\u{0015}\u{005B}\u{0016}\u{005C}\u{0017}\u{005D}\u{005E}\
2495              \u{0018}\u{005A}\u{0019}\u{005B}\u{001A}\u{0000}",
2496             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2497         ),
2498         "0|\
2499          20|\
2500          90|\
2501          21|\
2502          91|\
2503          22|\
2504          92|\
2505          63|\
2506          93|\
2507          94|\
2508          24|\
2509          90|\
2510          25|\
2511          91|\
2512          26|\
2513          0"
2514     );
2515 }
2516 
2517 #[test]
gsub_chaining1_multiple_subrules_001()2518 fn gsub_chaining1_multiple_subrules_001() {
2519     assert_eq!(
2520         shape(
2521             "tests/fonts/aots/gsub_chaining1_multiple_subrules_f1.otf",
2522             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0000}\u{0014}\u{0015}\u{0016}\
2523              \u{0017}\u{0000}",
2524             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2525         ),
2526         "0|\
2527          20|\
2528          61|\
2529          22|\
2530          23|\
2531          24|\
2532          0|\
2533          20|\
2534          21|\
2535          62|\
2536          23|\
2537          0"
2538     );
2539 }
2540 
2541 #[test]
gsub_chaining1_multiple_subrules_002()2542 fn gsub_chaining1_multiple_subrules_002() {
2543     assert_eq!(
2544         shape(
2545             "tests/fonts/aots/gsub_chaining1_multiple_subrules_f2.otf",
2546             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0000}\u{0014}\u{0015}\u{0016}\
2547              \u{0017}\u{0000}",
2548             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2549         ),
2550         "0|\
2551          20|\
2552          21|\
2553          62|\
2554          23|\
2555          24|\
2556          0|\
2557          20|\
2558          21|\
2559          62|\
2560          23|\
2561          0"
2562     );
2563 }
2564 
2565 #[test]
gsub_chaining1_next_glyph_001()2566 fn gsub_chaining1_next_glyph_001() {
2567     assert_eq!(
2568         shape(
2569             "tests/fonts/aots/gsub_chaining1_next_glyph_f1.otf",
2570             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
2571             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2572         ),
2573         "0|\
2574          20|\
2575          61|\
2576          62|\
2577          63|\
2578          0"
2579     );
2580 }
2581 
2582 #[test]
gsub_chaining1_simple_001()2583 fn gsub_chaining1_simple_001() {
2584     assert_eq!(
2585         shape(
2586             "tests/fonts/aots/gsub_chaining1_simple_f1.otf",
2587             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
2588             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2589         ),
2590         "0|\
2591          20|\
2592          61|\
2593          62|\
2594          23|\
2595          0"
2596     );
2597 }
2598 
2599 #[test]
gsub_chaining1_simple_002()2600 fn gsub_chaining1_simple_002() {
2601     assert_eq!(
2602         shape(
2603             "tests/fonts/aots/gsub_chaining1_simple_f2.otf",
2604             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\u{0000}",
2605             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2606         ),
2607         "0|\
2608          20|\
2609          21|\
2610          62|\
2611          23|\
2612          24|\
2613          25|\
2614          26|\
2615          0"
2616     );
2617 }
2618 
2619 #[test]
gsub_chaining1_simple_003()2620 fn gsub_chaining1_simple_003() {
2621     assert_eq!(
2622         shape(
2623             "tests/fonts/aots/gsub_chaining1_simple_f2.otf",
2624             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{0000}\u{0000}",
2625             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2626         ),
2627         "0|\
2628          20|\
2629          21|\
2630          22|\
2631          23|\
2632          24|\
2633          25|\
2634          0|\
2635          0"
2636     );
2637 }
2638 
2639 #[test]
gsub_chaining1_simple_004()2640 fn gsub_chaining1_simple_004() {
2641     assert_eq!(
2642         shape(
2643             "tests/fonts/aots/gsub_chaining1_simple_f2.otf",
2644             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}",
2645             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2646         ),
2647         "0|\
2648          20|\
2649          21|\
2650          22|\
2651          23|\
2652          24|\
2653          25"
2654     );
2655 }
2656 
2657 #[test]
gsub_chaining1_simple_005()2658 fn gsub_chaining1_simple_005() {
2659     assert_eq!(
2660         shape(
2661             "tests/fonts/aots/gsub_chaining1_simple_f2.otf",
2662             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}",
2663             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2664         ),
2665         "0|\
2666          20|\
2667          21|\
2668          22|\
2669          23|\
2670          24"
2671     );
2672 }
2673 
2674 #[test]
gsub_chaining1_simple_006()2675 fn gsub_chaining1_simple_006() {
2676     assert_eq!(
2677         shape(
2678             "tests/fonts/aots/gsub_chaining1_simple_f2.otf",
2679             "\u{0000}\u{0000}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\u{0000}",
2680             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2681         ),
2682         "0|\
2683          0|\
2684          21|\
2685          22|\
2686          23|\
2687          24|\
2688          25|\
2689          26|\
2690          0"
2691     );
2692 }
2693 
2694 #[test]
gsub_chaining1_simple_007()2695 fn gsub_chaining1_simple_007() {
2696     assert_eq!(
2697         shape(
2698             "tests/fonts/aots/gsub_chaining1_simple_f2.otf",
2699             "\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\u{0000}",
2700             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2701         ),
2702         "21|\
2703          22|\
2704          23|\
2705          24|\
2706          25|\
2707          26|\
2708          0"
2709     );
2710 }
2711 
2712 #[test]
gsub_chaining1_simple_008()2713 fn gsub_chaining1_simple_008() {
2714     assert_eq!(
2715         shape(
2716             "tests/fonts/aots/gsub_chaining1_simple_f2.otf",
2717             "\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\u{0000}",
2718             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2719         ),
2720         "22|\
2721          23|\
2722          24|\
2723          25|\
2724          26|\
2725          0"
2726     );
2727 }
2728 
2729 #[test]
gsub_chaining1_simple_009()2730 fn gsub_chaining1_simple_009() {
2731     assert_eq!(
2732         shape(
2733             "tests/fonts/aots/gsub_chaining1_simple_f2.otf",
2734             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}\u{0018}\u{0019}\u{001A}\u{0000}",
2735             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2736         ),
2737         "0|\
2738          20|\
2739          21|\
2740          22|\
2741          0|\
2742          24|\
2743          25|\
2744          26|\
2745          0"
2746     );
2747 }
2748 
2749 #[test]
gsub_chaining1_simple_010()2750 fn gsub_chaining1_simple_010() {
2751     assert_eq!(
2752         shape(
2753             "tests/fonts/aots/gsub_chaining1_simple_f2.otf",
2754             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}",
2755             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2756         ),
2757         "0|\
2758          20|\
2759          21|\
2760          22|\
2761          23"
2762     );
2763 }
2764 
2765 #[test]
gsub_chaining1_simple_011()2766 fn gsub_chaining1_simple_011() {
2767     assert_eq!(
2768         shape(
2769             "tests/fonts/aots/gsub_chaining1_simple_f2.otf",
2770             "\u{0000}\u{0014}\u{0015}\u{0016}",
2771             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2772         ),
2773         "0|\
2774          20|\
2775          21|\
2776          22"
2777     );
2778 }
2779 
2780 #[test]
gsub_chaining1_successive_001()2781 fn gsub_chaining1_successive_001() {
2782     assert_eq!(
2783         shape(
2784             "tests/fonts/aots/gsub_chaining1_successive_f1.otf",
2785             "\u{0000}\u{0019}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0000}",
2786             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2787         ),
2788         "0|\
2789          25|\
2790          20|\
2791          61|\
2792          63|\
2793          24|\
2794          0"
2795     );
2796 }
2797 
2798 #[test]
gsub_chaining2_boundary_001()2799 fn gsub_chaining2_boundary_001() {
2800     assert_eq!(
2801         shape(
2802             "tests/fonts/aots/gsub_chaining2_boundary_f1.otf",
2803             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
2804             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2805         ),
2806         "0|\
2807          20|\
2808          21|\
2809          22|\
2810          23|\
2811          0"
2812     );
2813 }
2814 
2815 #[test]
gsub_chaining2_boundary_002()2816 fn gsub_chaining2_boundary_002() {
2817     assert_eq!(
2818         shape(
2819             "tests/fonts/aots/gsub_chaining2_boundary_f2.otf",
2820             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
2821             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2822         ),
2823         "0|\
2824          20|\
2825          61|\
2826          22|\
2827          23|\
2828          0"
2829     );
2830 }
2831 
2832 #[test]
gsub_chaining2_boundary_003()2833 fn gsub_chaining2_boundary_003() {
2834     assert_eq!(
2835         shape(
2836             "tests/fonts/aots/gsub_chaining2_boundary_f3.otf",
2837             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
2838             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2839         ),
2840         "0|\
2841          20|\
2842          61|\
2843          22|\
2844          23|\
2845          0"
2846     );
2847 }
2848 
2849 #[test]
gsub_chaining2_boundary_004()2850 fn gsub_chaining2_boundary_004() {
2851     assert_eq!(
2852         shape(
2853             "tests/fonts/aots/gsub_chaining2_boundary_f4.otf",
2854             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
2855             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2856         ),
2857         "0|\
2858          20|\
2859          21|\
2860          62|\
2861          23|\
2862          0"
2863     );
2864 }
2865 
2866 #[test]
gsub_chaining2_lookupflag_001()2867 fn gsub_chaining2_lookupflag_001() {
2868     assert_eq!(
2869         shape(
2870             "tests/fonts/aots/gsub_chaining2_lookupflag_f1.otf",
2871             "\u{0000}\u{0014}\u{005A}\u{0015}\u{005B}\u{0016}\u{005C}\u{0017}\u{005D}\u{005E}\
2872              \u{0018}\u{005A}\u{0019}\u{005B}\u{001A}\u{0000}",
2873             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2874         ),
2875         "0|\
2876          20|\
2877          90|\
2878          21|\
2879          91|\
2880          22|\
2881          92|\
2882          63|\
2883          93|\
2884          94|\
2885          24|\
2886          90|\
2887          25|\
2888          91|\
2889          26|\
2890          0"
2891     );
2892 }
2893 
2894 #[test]
gsub_chaining2_multiple_subrules_001()2895 fn gsub_chaining2_multiple_subrules_001() {
2896     assert_eq!(
2897         shape(
2898             "tests/fonts/aots/gsub_chaining2_multiple_subrules_f1.otf",
2899             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0000}\u{0014}\u{0015}\u{0016}\
2900              \u{0017}\u{0000}",
2901             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2902         ),
2903         "0|\
2904          20|\
2905          61|\
2906          22|\
2907          23|\
2908          24|\
2909          0|\
2910          20|\
2911          21|\
2912          62|\
2913          23|\
2914          0"
2915     );
2916 }
2917 
2918 #[test]
gsub_chaining2_multiple_subrules_002()2919 fn gsub_chaining2_multiple_subrules_002() {
2920     assert_eq!(
2921         shape(
2922             "tests/fonts/aots/gsub_chaining2_multiple_subrules_f2.otf",
2923             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0000}\u{0014}\u{0015}\u{0016}\
2924              \u{0017}\u{0000}",
2925             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2926         ),
2927         "0|\
2928          20|\
2929          21|\
2930          62|\
2931          23|\
2932          24|\
2933          0|\
2934          20|\
2935          21|\
2936          62|\
2937          23|\
2938          0"
2939     );
2940 }
2941 
2942 #[test]
gsub_chaining2_next_glyph_001()2943 fn gsub_chaining2_next_glyph_001() {
2944     assert_eq!(
2945         shape(
2946             "tests/fonts/aots/gsub_chaining2_next_glyph_f1.otf",
2947             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
2948             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2949         ),
2950         "0|\
2951          20|\
2952          61|\
2953          62|\
2954          63|\
2955          0"
2956     );
2957 }
2958 
2959 #[test]
gsub_chaining2_simple_001()2960 fn gsub_chaining2_simple_001() {
2961     assert_eq!(
2962         shape(
2963             "tests/fonts/aots/gsub_chaining2_simple_f1.otf",
2964             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
2965             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2966         ),
2967         "0|\
2968          20|\
2969          61|\
2970          62|\
2971          23|\
2972          0"
2973     );
2974 }
2975 
2976 #[test]
gsub_chaining2_simple_002()2977 fn gsub_chaining2_simple_002() {
2978     assert_eq!(
2979         shape(
2980             "tests/fonts/aots/gsub_chaining2_simple_f2.otf",
2981             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\u{0000}",
2982             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
2983         ),
2984         "0|\
2985          20|\
2986          21|\
2987          62|\
2988          23|\
2989          24|\
2990          25|\
2991          26|\
2992          0"
2993     );
2994 }
2995 
2996 #[test]
gsub_chaining2_simple_003()2997 fn gsub_chaining2_simple_003() {
2998     assert_eq!(
2999         shape(
3000             "tests/fonts/aots/gsub_chaining2_simple_f2.otf",
3001             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{0000}\u{0000}",
3002             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3003         ),
3004         "0|\
3005          20|\
3006          21|\
3007          22|\
3008          23|\
3009          24|\
3010          25|\
3011          0|\
3012          0"
3013     );
3014 }
3015 
3016 #[test]
gsub_chaining2_simple_004()3017 fn gsub_chaining2_simple_004() {
3018     assert_eq!(
3019         shape(
3020             "tests/fonts/aots/gsub_chaining2_simple_f2.otf",
3021             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}",
3022             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3023         ),
3024         "0|\
3025          20|\
3026          21|\
3027          22|\
3028          23|\
3029          24|\
3030          25"
3031     );
3032 }
3033 
3034 #[test]
gsub_chaining2_simple_005()3035 fn gsub_chaining2_simple_005() {
3036     assert_eq!(
3037         shape(
3038             "tests/fonts/aots/gsub_chaining2_simple_f2.otf",
3039             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}",
3040             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3041         ),
3042         "0|\
3043          20|\
3044          21|\
3045          22|\
3046          23|\
3047          24"
3048     );
3049 }
3050 
3051 #[test]
gsub_chaining2_simple_006()3052 fn gsub_chaining2_simple_006() {
3053     assert_eq!(
3054         shape(
3055             "tests/fonts/aots/gsub_chaining2_simple_f2.otf",
3056             "\u{0000}\u{0000}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\u{0000}",
3057             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3058         ),
3059         "0|\
3060          0|\
3061          21|\
3062          22|\
3063          23|\
3064          24|\
3065          25|\
3066          26|\
3067          0"
3068     );
3069 }
3070 
3071 #[test]
gsub_chaining2_simple_007()3072 fn gsub_chaining2_simple_007() {
3073     assert_eq!(
3074         shape(
3075             "tests/fonts/aots/gsub_chaining2_simple_f2.otf",
3076             "\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\u{0000}",
3077             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3078         ),
3079         "21|\
3080          22|\
3081          23|\
3082          24|\
3083          25|\
3084          26|\
3085          0"
3086     );
3087 }
3088 
3089 #[test]
gsub_chaining2_simple_008()3090 fn gsub_chaining2_simple_008() {
3091     assert_eq!(
3092         shape(
3093             "tests/fonts/aots/gsub_chaining2_simple_f2.otf",
3094             "\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\u{0000}",
3095             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3096         ),
3097         "22|\
3098          23|\
3099          24|\
3100          25|\
3101          26|\
3102          0"
3103     );
3104 }
3105 
3106 #[test]
gsub_chaining2_simple_009()3107 fn gsub_chaining2_simple_009() {
3108     assert_eq!(
3109         shape(
3110             "tests/fonts/aots/gsub_chaining2_simple_f2.otf",
3111             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}\u{0018}\u{0019}\u{001A}\u{0000}",
3112             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3113         ),
3114         "0|\
3115          20|\
3116          21|\
3117          22|\
3118          0|\
3119          24|\
3120          25|\
3121          26|\
3122          0"
3123     );
3124 }
3125 
3126 #[test]
gsub_chaining2_simple_010()3127 fn gsub_chaining2_simple_010() {
3128     assert_eq!(
3129         shape(
3130             "tests/fonts/aots/gsub_chaining2_simple_f2.otf",
3131             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}",
3132             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3133         ),
3134         "0|\
3135          20|\
3136          21|\
3137          22|\
3138          23"
3139     );
3140 }
3141 
3142 #[test]
gsub_chaining2_simple_011()3143 fn gsub_chaining2_simple_011() {
3144     assert_eq!(
3145         shape(
3146             "tests/fonts/aots/gsub_chaining2_simple_f2.otf",
3147             "\u{0000}\u{0014}\u{0015}\u{0016}",
3148             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3149         ),
3150         "0|\
3151          20|\
3152          21|\
3153          22"
3154     );
3155 }
3156 
3157 #[test]
gsub_chaining2_successive_001()3158 fn gsub_chaining2_successive_001() {
3159     assert_eq!(
3160         shape(
3161             "tests/fonts/aots/gsub_chaining2_successive_f1.otf",
3162             "\u{0000}\u{0019}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0000}",
3163             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3164         ),
3165         "0|\
3166          25|\
3167          20|\
3168          61|\
3169          63|\
3170          24|\
3171          0"
3172     );
3173 }
3174 
3175 #[test]
gsub_chaining3_boundary_001()3176 fn gsub_chaining3_boundary_001() {
3177     assert_eq!(
3178         shape(
3179             "tests/fonts/aots/gsub_chaining3_boundary_f1.otf",
3180             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
3181             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3182         ),
3183         "0|\
3184          20|\
3185          21|\
3186          22|\
3187          23|\
3188          0"
3189     );
3190 }
3191 
3192 #[test]
gsub_chaining3_boundary_002()3193 fn gsub_chaining3_boundary_002() {
3194     assert_eq!(
3195         shape(
3196             "tests/fonts/aots/gsub_chaining3_boundary_f2.otf",
3197             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
3198             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3199         ),
3200         "0|\
3201          20|\
3202          61|\
3203          22|\
3204          23|\
3205          0"
3206     );
3207 }
3208 
3209 #[test]
gsub_chaining3_boundary_003()3210 fn gsub_chaining3_boundary_003() {
3211     assert_eq!(
3212         shape(
3213             "tests/fonts/aots/gsub_chaining3_boundary_f3.otf",
3214             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
3215             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3216         ),
3217         "0|\
3218          20|\
3219          61|\
3220          22|\
3221          23|\
3222          0"
3223     );
3224 }
3225 
3226 #[test]
gsub_chaining3_boundary_004()3227 fn gsub_chaining3_boundary_004() {
3228     assert_eq!(
3229         shape(
3230             "tests/fonts/aots/gsub_chaining3_boundary_f4.otf",
3231             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
3232             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3233         ),
3234         "0|\
3235          20|\
3236          21|\
3237          62|\
3238          23|\
3239          0"
3240     );
3241 }
3242 
3243 #[test]
gsub_chaining3_lookupflag_001()3244 fn gsub_chaining3_lookupflag_001() {
3245     assert_eq!(
3246         shape(
3247             "tests/fonts/aots/gsub_chaining3_lookupflag_f1.otf",
3248             "\u{0000}\u{0014}\u{005A}\u{0015}\u{005B}\u{0016}\u{005C}\u{0017}\u{005D}\u{005E}\
3249              \u{0018}\u{005A}\u{0019}\u{005B}\u{001A}\u{0000}",
3250             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3251         ),
3252         "0|\
3253          20|\
3254          90|\
3255          21|\
3256          91|\
3257          22|\
3258          92|\
3259          63|\
3260          93|\
3261          94|\
3262          24|\
3263          90|\
3264          25|\
3265          91|\
3266          26|\
3267          0"
3268     );
3269 }
3270 
3271 #[test]
gsub_chaining3_next_glyph_001()3272 fn gsub_chaining3_next_glyph_001() {
3273     assert_eq!(
3274         shape(
3275             "tests/fonts/aots/gsub_chaining3_next_glyph_f1.otf",
3276             "\u{0000}\u{0016}\u{0015}\u{0016}\u{0015}\u{0016}\u{0015}\u{0000}",
3277             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3278         ),
3279         "0|\
3280          22|\
3281          61|\
3282          22|\
3283          61|\
3284          22|\
3285          21|\
3286          0"
3287     );
3288 }
3289 
3290 #[test]
gsub_chaining3_simple_001()3291 fn gsub_chaining3_simple_001() {
3292     assert_eq!(
3293         shape(
3294             "tests/fonts/aots/gsub_chaining3_simple_f1.otf",
3295             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
3296             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3297         ),
3298         "0|\
3299          20|\
3300          61|\
3301          62|\
3302          23|\
3303          0"
3304     );
3305 }
3306 
3307 #[test]
gsub_chaining3_simple_002()3308 fn gsub_chaining3_simple_002() {
3309     assert_eq!(
3310         shape(
3311             "tests/fonts/aots/gsub_chaining3_simple_f2.otf",
3312             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\u{0000}",
3313             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3314         ),
3315         "0|\
3316          20|\
3317          21|\
3318          62|\
3319          23|\
3320          24|\
3321          25|\
3322          26|\
3323          0"
3324     );
3325 }
3326 
3327 #[test]
gsub_chaining3_simple_003()3328 fn gsub_chaining3_simple_003() {
3329     assert_eq!(
3330         shape(
3331             "tests/fonts/aots/gsub_chaining3_simple_f2.otf",
3332             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{0000}\u{0000}",
3333             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3334         ),
3335         "0|\
3336          20|\
3337          21|\
3338          22|\
3339          23|\
3340          24|\
3341          25|\
3342          0|\
3343          0"
3344     );
3345 }
3346 
3347 #[test]
gsub_chaining3_simple_004()3348 fn gsub_chaining3_simple_004() {
3349     assert_eq!(
3350         shape(
3351             "tests/fonts/aots/gsub_chaining3_simple_f2.otf",
3352             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}",
3353             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3354         ),
3355         "0|\
3356          20|\
3357          21|\
3358          22|\
3359          23|\
3360          24|\
3361          25"
3362     );
3363 }
3364 
3365 #[test]
gsub_chaining3_simple_005()3366 fn gsub_chaining3_simple_005() {
3367     assert_eq!(
3368         shape(
3369             "tests/fonts/aots/gsub_chaining3_simple_f2.otf",
3370             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}",
3371             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3372         ),
3373         "0|\
3374          20|\
3375          21|\
3376          22|\
3377          23|\
3378          24"
3379     );
3380 }
3381 
3382 #[test]
gsub_chaining3_simple_006()3383 fn gsub_chaining3_simple_006() {
3384     assert_eq!(
3385         shape(
3386             "tests/fonts/aots/gsub_chaining3_simple_f2.otf",
3387             "\u{0000}\u{0000}\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\u{0000}",
3388             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3389         ),
3390         "0|\
3391          0|\
3392          21|\
3393          22|\
3394          23|\
3395          24|\
3396          25|\
3397          26|\
3398          0"
3399     );
3400 }
3401 
3402 #[test]
gsub_chaining3_simple_007()3403 fn gsub_chaining3_simple_007() {
3404     assert_eq!(
3405         shape(
3406             "tests/fonts/aots/gsub_chaining3_simple_f2.otf",
3407             "\u{0015}\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\u{0000}",
3408             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3409         ),
3410         "21|\
3411          22|\
3412          23|\
3413          24|\
3414          25|\
3415          26|\
3416          0"
3417     );
3418 }
3419 
3420 #[test]
gsub_chaining3_simple_008()3421 fn gsub_chaining3_simple_008() {
3422     assert_eq!(
3423         shape(
3424             "tests/fonts/aots/gsub_chaining3_simple_f2.otf",
3425             "\u{0016}\u{0017}\u{0018}\u{0019}\u{001A}\u{0000}",
3426             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3427         ),
3428         "22|\
3429          23|\
3430          24|\
3431          25|\
3432          26|\
3433          0"
3434     );
3435 }
3436 
3437 #[test]
gsub_chaining3_simple_009()3438 fn gsub_chaining3_simple_009() {
3439     assert_eq!(
3440         shape(
3441             "tests/fonts/aots/gsub_chaining3_simple_f2.otf",
3442             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}\u{0018}\u{0019}\u{001A}\u{0000}",
3443             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3444         ),
3445         "0|\
3446          20|\
3447          21|\
3448          22|\
3449          0|\
3450          24|\
3451          25|\
3452          26|\
3453          0"
3454     );
3455 }
3456 
3457 #[test]
gsub_chaining3_simple_010()3458 fn gsub_chaining3_simple_010() {
3459     assert_eq!(
3460         shape(
3461             "tests/fonts/aots/gsub_chaining3_simple_f2.otf",
3462             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}",
3463             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3464         ),
3465         "0|\
3466          20|\
3467          21|\
3468          22|\
3469          23"
3470     );
3471 }
3472 
3473 #[test]
gsub_chaining3_simple_011()3474 fn gsub_chaining3_simple_011() {
3475     assert_eq!(
3476         shape(
3477             "tests/fonts/aots/gsub_chaining3_simple_f2.otf",
3478             "\u{0000}\u{0014}\u{0015}\u{0016}",
3479             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3480         ),
3481         "0|\
3482          20|\
3483          21|\
3484          22"
3485     );
3486 }
3487 
3488 #[test]
gsub_chaining3_successive_001()3489 fn gsub_chaining3_successive_001() {
3490     assert_eq!(
3491         shape(
3492             "tests/fonts/aots/gsub_chaining3_successive_f1.otf",
3493             "\u{0000}\u{0019}\u{0014}\u{0015}\u{0016}\u{0017}\u{0018}\u{0000}",
3494             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3495         ),
3496         "0|\
3497          25|\
3498          20|\
3499          61|\
3500          63|\
3501          24|\
3502          0"
3503     );
3504 }
3505 
3506 #[test]
gsub_context1_boundary_001()3507 fn gsub_context1_boundary_001() {
3508     assert_eq!(
3509         shape(
3510             "tests/fonts/aots/gsub_context1_boundary_f1.otf",
3511             "\u{0000}\u{0014}\u{0014}\u{0014}\u{0014}\u{0014}\u{0000}",
3512             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3513         ),
3514         "0|\
3515          20|\
3516          20|\
3517          20|\
3518          20|\
3519          20|\
3520          0"
3521     );
3522 }
3523 
3524 #[test]
gsub_context1_boundary_002()3525 fn gsub_context1_boundary_002() {
3526     assert_eq!(
3527         shape(
3528             "tests/fonts/aots/gsub_context1_boundary_f2.otf",
3529             "\u{0000}\u{0014}\u{0014}\u{0014}\u{0014}\u{0014}\u{0000}",
3530             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3531         ),
3532         "0|\
3533          60|\
3534          60|\
3535          60|\
3536          60|\
3537          60|\
3538          0"
3539     );
3540 }
3541 
3542 #[test]
gsub_context1_expansion_001()3543 fn gsub_context1_expansion_001() {
3544     assert_eq!(
3545         shape(
3546             "tests/fonts/aots/gsub_context1_expansion_f1.otf",
3547             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}",
3548             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3549         ),
3550         "0|\
3551          20|\
3552          61|\
3553          62|\
3554          63|\
3555          22|\
3556          0"
3557     );
3558 }
3559 
3560 #[test]
gsub_context1_lookupflag_001()3561 fn gsub_context1_lookupflag_001() {
3562     assert_eq!(
3563         shape(
3564             "tests/fonts/aots/gsub_context1_lookupflag_f1.otf",
3565             "\u{0000}\u{0014}\u{005A}\u{0015}\u{005B}\u{005C}\u{0016}\u{0000}",
3566             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3567         ),
3568         "0|\
3569          60|\
3570          90|\
3571          61|\
3572          91|\
3573          92|\
3574          62|\
3575          0"
3576     );
3577 }
3578 
3579 #[test]
gsub_context1_lookupflag_002()3580 fn gsub_context1_lookupflag_002() {
3581     assert_eq!(
3582         shape(
3583             "tests/fonts/aots/gsub_context1_lookupflag_f2.otf",
3584             "\u{0000}\u{0014}\u{005A}\u{0015}\u{005B}\u{005C}\u{0016}\u{0000}",
3585             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3586         ),
3587         "0|\
3588          20|\
3589          90|\
3590          61|\
3591          91|\
3592          92|\
3593          0"
3594     );
3595 }
3596 
3597 #[test]
gsub_context1_multiple_subrules_001()3598 fn gsub_context1_multiple_subrules_001() {
3599     assert_eq!(
3600         shape(
3601             "tests/fonts/aots/gsub_context1_multiple_subrules_f1.otf",
3602             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}\u{0014}\u{0015}\u{0000}",
3603             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3604         ),
3605         "0|\
3606          60|\
3607          21|\
3608          22|\
3609          0|\
3610          20|\
3611          61|\
3612          0"
3613     );
3614 }
3615 
3616 #[test]
gsub_context1_multiple_subrules_002()3617 fn gsub_context1_multiple_subrules_002() {
3618     assert_eq!(
3619         shape(
3620             "tests/fonts/aots/gsub_context1_multiple_subrules_f2.otf",
3621             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}\u{0014}\u{0015}\u{0000}",
3622             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3623         ),
3624         "0|\
3625          20|\
3626          61|\
3627          22|\
3628          0|\
3629          20|\
3630          61|\
3631          0"
3632     );
3633 }
3634 
3635 #[test]
gsub_context1_next_glyph_001()3636 fn gsub_context1_next_glyph_001() {
3637     assert_eq!(
3638         shape(
3639             "tests/fonts/aots/gsub_context1_next_glyph_f1.otf",
3640             "\u{0000}\u{0014}\u{0014}\u{0014}\u{0014}\u{0014}\u{0000}",
3641             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3642         ),
3643         "0|\
3644          60|\
3645          20|\
3646          60|\
3647          20|\
3648          20|\
3649          0"
3650     );
3651 }
3652 
3653 #[test]
gsub_context1_simple_001()3654 fn gsub_context1_simple_001() {
3655     assert_eq!(
3656         shape(
3657             "tests/fonts/aots/gsub_context1_simple_f1.otf",
3658             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}",
3659             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3660         ),
3661         "0|\
3662          60|\
3663          61|\
3664          62|\
3665          0"
3666     );
3667 }
3668 
3669 #[test]
gsub_context1_simple_002()3670 fn gsub_context1_simple_002() {
3671     assert_eq!(
3672         shape(
3673             "tests/fonts/aots/gsub_context1_simple_f1.otf",
3674             "\u{0000}\u{0014}\u{0000}\u{0014}\u{0015}\u{0000}",
3675             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3676         ),
3677         "0|\
3678          20|\
3679          0|\
3680          20|\
3681          21|\
3682          0"
3683     );
3684 }
3685 
3686 #[test]
gsub_context1_simple_003()3687 fn gsub_context1_simple_003() {
3688     assert_eq!(
3689         shape(
3690             "tests/fonts/aots/gsub_context1_simple_f2.otf",
3691             "\u{0000}\u{0014}\u{0014}\u{0014}\u{0014}\u{0014}\u{0000}",
3692             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3693         ),
3694         "0|\
3695          20|\
3696          60|\
3697          20|\
3698          20|\
3699          20|\
3700          0"
3701     );
3702 }
3703 
3704 #[test]
gsub_context1_successive_001()3705 fn gsub_context1_successive_001() {
3706     assert_eq!(
3707         shape(
3708             "tests/fonts/aots/gsub_context1_successive_f1.otf",
3709             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
3710             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3711         ),
3712         "0|\
3713          20|\
3714          61|\
3715          63|\
3716          0"
3717     );
3718 }
3719 
3720 #[test]
gsub_context2_boundary_001()3721 fn gsub_context2_boundary_001() {
3722     assert_eq!(
3723         shape(
3724             "tests/fonts/aots/gsub_context2_boundary_f1.otf",
3725             "\u{0000}\u{0014}\u{0014}\u{0014}\u{0014}\u{0014}\u{0000}",
3726             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3727         ),
3728         "0|\
3729          20|\
3730          20|\
3731          20|\
3732          20|\
3733          20|\
3734          0"
3735     );
3736 }
3737 
3738 #[test]
gsub_context2_boundary_002()3739 fn gsub_context2_boundary_002() {
3740     assert_eq!(
3741         shape(
3742             "tests/fonts/aots/gsub_context2_boundary_f2.otf",
3743             "\u{0000}\u{0014}\u{0014}\u{0014}\u{0014}\u{0014}\u{0000}",
3744             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3745         ),
3746         "0|\
3747          60|\
3748          60|\
3749          60|\
3750          60|\
3751          60|\
3752          0"
3753     );
3754 }
3755 
3756 #[test]
gsub_context2_classes_001()3757 fn gsub_context2_classes_001() {
3758     assert_eq!(
3759         shape(
3760             "tests/fonts/aots/gsub_context2_classes_f1.otf",
3761             "\u{0000}\u{0014}\u{001A}\u{001C}\u{0018}\u{0000}\u{0015}\u{001B}\u{001A}\u{0018}\
3762              \u{0000}\u{0016}\u{001B}\u{001A}\u{0018}",
3763             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3764         ),
3765         "0|\
3766          20|\
3767          66|\
3768          28|\
3769          24|\
3770          0|\
3771          21|\
3772          67|\
3773          26|\
3774          24|\
3775          0|\
3776          22|\
3777          27|\
3778          26|\
3779          24"
3780     );
3781 }
3782 
3783 #[test]
gsub_context2_classes_002()3784 fn gsub_context2_classes_002() {
3785     assert_eq!(
3786         shape(
3787             "tests/fonts/aots/gsub_context2_classes_f2.otf",
3788             "\u{0000}\u{0016}\u{001B}\u{001A}\u{0018}\u{0000}\u{0018}\u{0018}\u{001D}\u{0016}\
3789              \u{0000}\u{0016}\u{001B}\u{001A}\u{0018}",
3790             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3791         ),
3792         "0|\
3793          22|\
3794          67|\
3795          26|\
3796          24|\
3797          0|\
3798          24|\
3799          24|\
3800          69|\
3801          22|\
3802          0|\
3803          22|\
3804          67|\
3805          26|\
3806          24"
3807     );
3808 }
3809 
3810 #[test]
gsub_context2_expansion_001()3811 fn gsub_context2_expansion_001() {
3812     assert_eq!(
3813         shape(
3814             "tests/fonts/aots/gsub_context2_expansion_f1.otf",
3815             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}",
3816             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3817         ),
3818         "0|\
3819          20|\
3820          61|\
3821          62|\
3822          63|\
3823          22|\
3824          0"
3825     );
3826 }
3827 
3828 #[test]
gsub_context2_lookupflag_001()3829 fn gsub_context2_lookupflag_001() {
3830     assert_eq!(
3831         shape(
3832             "tests/fonts/aots/gsub_context2_lookupflag_f1.otf",
3833             "\u{0000}\u{0014}\u{005A}\u{0015}\u{005B}\u{005C}\u{0016}\u{0000}",
3834             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3835         ),
3836         "0|\
3837          60|\
3838          90|\
3839          61|\
3840          91|\
3841          92|\
3842          62|\
3843          0"
3844     );
3845 }
3846 
3847 #[test]
gsub_context2_lookupflag_002()3848 fn gsub_context2_lookupflag_002() {
3849     assert_eq!(
3850         shape(
3851             "tests/fonts/aots/gsub_context2_lookupflag_f2.otf",
3852             "\u{0000}\u{0014}\u{005A}\u{0015}\u{005B}\u{005C}\u{0016}\u{0000}",
3853             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3854         ),
3855         "0|\
3856          20|\
3857          90|\
3858          61|\
3859          91|\
3860          92|\
3861          0"
3862     );
3863 }
3864 
3865 #[test]
gsub_context2_multiple_subrules_001()3866 fn gsub_context2_multiple_subrules_001() {
3867     assert_eq!(
3868         shape(
3869             "tests/fonts/aots/gsub_context2_multiple_subrules_f1.otf",
3870             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}\u{0014}\u{0015}\u{0000}",
3871             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3872         ),
3873         "0|\
3874          60|\
3875          21|\
3876          22|\
3877          0|\
3878          20|\
3879          61|\
3880          0"
3881     );
3882 }
3883 
3884 #[test]
gsub_context2_multiple_subrules_002()3885 fn gsub_context2_multiple_subrules_002() {
3886     assert_eq!(
3887         shape(
3888             "tests/fonts/aots/gsub_context2_multiple_subrules_f2.otf",
3889             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}\u{0014}\u{0015}\u{0000}",
3890             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3891         ),
3892         "0|\
3893          20|\
3894          61|\
3895          22|\
3896          0|\
3897          20|\
3898          61|\
3899          0"
3900     );
3901 }
3902 
3903 #[test]
gsub_context2_next_glyph_001()3904 fn gsub_context2_next_glyph_001() {
3905     assert_eq!(
3906         shape(
3907             "tests/fonts/aots/gsub_context2_next_glyph_f1.otf",
3908             "\u{0000}\u{0014}\u{0014}\u{0014}\u{0014}\u{0014}\u{0000}",
3909             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3910         ),
3911         "0|\
3912          60|\
3913          20|\
3914          60|\
3915          20|\
3916          20|\
3917          0"
3918     );
3919 }
3920 
3921 #[test]
gsub_context2_simple_001()3922 fn gsub_context2_simple_001() {
3923     assert_eq!(
3924         shape(
3925             "tests/fonts/aots/gsub_context2_simple_f1.otf",
3926             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}",
3927             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3928         ),
3929         "0|\
3930          60|\
3931          61|\
3932          62|\
3933          0"
3934     );
3935 }
3936 
3937 #[test]
gsub_context2_simple_002()3938 fn gsub_context2_simple_002() {
3939     assert_eq!(
3940         shape(
3941             "tests/fonts/aots/gsub_context2_simple_f1.otf",
3942             "\u{0000}\u{0014}\u{0000}\u{0014}\u{0015}\u{0000}",
3943             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3944         ),
3945         "0|\
3946          20|\
3947          0|\
3948          20|\
3949          21|\
3950          0"
3951     );
3952 }
3953 
3954 #[test]
gsub_context2_simple_003()3955 fn gsub_context2_simple_003() {
3956     assert_eq!(
3957         shape(
3958             "tests/fonts/aots/gsub_context2_simple_f2.otf",
3959             "\u{0000}\u{0014}\u{0014}\u{0014}\u{0014}\u{0014}\u{0000}",
3960             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3961         ),
3962         "0|\
3963          20|\
3964          60|\
3965          20|\
3966          20|\
3967          20|\
3968          0"
3969     );
3970 }
3971 
3972 #[test]
gsub_context2_successive_001()3973 fn gsub_context2_successive_001() {
3974     assert_eq!(
3975         shape(
3976             "tests/fonts/aots/gsub_context2_successive_f1.otf",
3977             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
3978             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3979         ),
3980         "0|\
3981          20|\
3982          61|\
3983          63|\
3984          0"
3985     );
3986 }
3987 
3988 #[test]
gsub_context3_boundary_001()3989 fn gsub_context3_boundary_001() {
3990     assert_eq!(
3991         shape(
3992             "tests/fonts/aots/gsub_context3_boundary_f1.otf",
3993             "\u{0000}\u{0014}\u{0014}\u{0014}\u{0014}\u{0014}\u{0000}",
3994             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
3995         ),
3996         "0|\
3997          20|\
3998          20|\
3999          20|\
4000          20|\
4001          20|\
4002          0"
4003     );
4004 }
4005 
4006 #[test]
gsub_context3_boundary_002()4007 fn gsub_context3_boundary_002() {
4008     assert_eq!(
4009         shape(
4010             "tests/fonts/aots/gsub_context3_boundary_f2.otf",
4011             "\u{0000}\u{0014}\u{0014}\u{0014}\u{0014}\u{0014}\u{0000}",
4012             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
4013         ),
4014         "0|\
4015          60|\
4016          60|\
4017          60|\
4018          60|\
4019          60|\
4020          0"
4021     );
4022 }
4023 
4024 #[test]
gsub_context3_lookupflag_001()4025 fn gsub_context3_lookupflag_001() {
4026     assert_eq!(
4027         shape(
4028             "tests/fonts/aots/gsub_context3_lookupflag_f1.otf",
4029             "\u{0000}\u{0014}\u{005A}\u{0015}\u{005B}\u{005C}\u{0016}\u{0000}",
4030             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
4031         ),
4032         "0|\
4033          60|\
4034          90|\
4035          61|\
4036          91|\
4037          92|\
4038          62|\
4039          0"
4040     );
4041 }
4042 
4043 #[test]
gsub_context3_lookupflag_002()4044 fn gsub_context3_lookupflag_002() {
4045     assert_eq!(
4046         shape(
4047             "tests/fonts/aots/gsub_context3_lookupflag_f2.otf",
4048             "\u{0000}\u{0014}\u{005A}\u{0015}\u{005B}\u{005C}\u{0016}\u{0000}",
4049             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
4050         ),
4051         "0|\
4052          20|\
4053          90|\
4054          61|\
4055          91|\
4056          92|\
4057          0"
4058     );
4059 }
4060 
4061 #[test]
gsub_context3_next_glyph_001()4062 fn gsub_context3_next_glyph_001() {
4063     assert_eq!(
4064         shape(
4065             "tests/fonts/aots/gsub_context3_next_glyph_f1.otf",
4066             "\u{0000}\u{0014}\u{0014}\u{0014}\u{0014}\u{0014}\u{0000}",
4067             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
4068         ),
4069         "0|\
4070          60|\
4071          20|\
4072          60|\
4073          20|\
4074          20|\
4075          0"
4076     );
4077 }
4078 
4079 #[test]
gsub_context3_simple_001()4080 fn gsub_context3_simple_001() {
4081     assert_eq!(
4082         shape(
4083             "tests/fonts/aots/gsub_context3_simple_f1.otf",
4084             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}",
4085             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
4086         ),
4087         "0|\
4088          60|\
4089          61|\
4090          62|\
4091          0"
4092     );
4093 }
4094 
4095 #[test]
gsub_context3_simple_002()4096 fn gsub_context3_simple_002() {
4097     assert_eq!(
4098         shape(
4099             "tests/fonts/aots/gsub_context3_simple_f1.otf",
4100             "\u{0000}\u{0014}\u{0000}\u{0014}\u{0015}\u{0000}\u{0014}\u{0015}\u{0016}\u{0000}",
4101             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
4102         ),
4103         "0|\
4104          20|\
4105          0|\
4106          20|\
4107          21|\
4108          0|\
4109          60|\
4110          61|\
4111          62|\
4112          0"
4113     );
4114 }
4115 
4116 #[test]
gsub_context3_successive_001()4117 fn gsub_context3_successive_001() {
4118     assert_eq!(
4119         shape(
4120             "tests/fonts/aots/gsub_context3_successive_f1.otf",
4121             "\u{0000}\u{0014}\u{0015}\u{0016}\u{0017}\u{0000}",
4122             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
4123         ),
4124         "0|\
4125          20|\
4126          61|\
4127          63|\
4128          0"
4129     );
4130 }
4131 
4132 #[test]
lookupflag_ignore_base_001()4133 fn lookupflag_ignore_base_001() {
4134     assert_eq!(
4135         shape(
4136             "tests/fonts/aots/lookupflag_ignore_base_f1.otf",
4137             "\u{0011}\u{0012}\u{0013}\u{0014}\u{0015}",
4138             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
4139         ),
4140         "17|\
4141          23|\
4142          21"
4143     );
4144 }
4145 
4146 #[test]
lookupflag_ignore_base_002()4147 fn lookupflag_ignore_base_002() {
4148     assert_eq!(
4149         shape(
4150             "tests/fonts/aots/lookupflag_ignore_base_f1.otf",
4151             "\u{0011}\u{0012}\u{0018}\u{0018}\u{0013}\u{0019}\u{0014}\u{0015}",
4152             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
4153         ),
4154         "17|\
4155          23|\
4156          24|\
4157          24|\
4158          25|\
4159          21"
4160     );
4161 }
4162 
4163 #[test]
lookupflag_ignore_combination_001()4164 fn lookupflag_ignore_combination_001() {
4165     assert_eq!(
4166         shape(
4167             "tests/fonts/aots/lookupflag_ignore_combination_f1.otf",
4168             "\u{0011}\u{0012}\u{001A}\u{0013}\u{0014}\u{0015}",
4169             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
4170         ),
4171         "17|\
4172          23|\
4173          26|\
4174          21"
4175     );
4176 }
4177 
4178 #[test]
lookupflag_ignore_combination_002()4179 fn lookupflag_ignore_combination_002() {
4180     assert_eq!(
4181         shape(
4182             "tests/fonts/aots/lookupflag_ignore_combination_f1.otf",
4183             "\u{0011}\u{0012}\u{001A}\u{0013}\u{0018}\u{001E}\u{001F}\u{0014}\u{0015}",
4184             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
4185         ),
4186         "17|\
4187          23|\
4188          26|\
4189          24|\
4190          30|\
4191          31|\
4192          21"
4193     );
4194 }
4195 
4196 #[test]
lookupflag_ignore_combination_003()4197 fn lookupflag_ignore_combination_003() {
4198     assert_eq!(
4199         shape(
4200             "tests/fonts/aots/lookupflag_ignore_combination_f1.otf",
4201             "\u{0011}\u{0012}\u{001A}\u{0013}\u{0018}\u{001E}\u{0020}\u{0014}\u{0015}",
4202             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
4203         ),
4204         "17|\
4205          18|\
4206          26|\
4207          19|\
4208          24|\
4209          30|\
4210          32|\
4211          20|\
4212          21"
4213     );
4214 }
4215 
4216 #[test]
lookupflag_ignore_ligatures_001()4217 fn lookupflag_ignore_ligatures_001() {
4218     assert_eq!(
4219         shape(
4220             "tests/fonts/aots/lookupflag_ignore_ligatures_f1.otf",
4221             "\u{0011}\u{0012}\u{001A}\u{001B}\u{0013}\u{001B}\u{0014}\u{0015}",
4222             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
4223         ),
4224         "17|\
4225          23|\
4226          26|\
4227          27|\
4228          27|\
4229          21"
4230     );
4231 }
4232 
4233 #[test]
lookupflag_ignore_ligatures_002()4234 fn lookupflag_ignore_ligatures_002() {
4235     assert_eq!(
4236         shape(
4237             "tests/fonts/aots/lookupflag_ignore_ligatures_f1.otf",
4238             "\u{0011}\u{0012}\u{001A}\u{0018}\u{0013}\u{001B}\u{0014}\u{0015}",
4239             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
4240         ),
4241         "17|\
4242          18|\
4243          26|\
4244          24|\
4245          19|\
4246          27|\
4247          20|\
4248          21"
4249     );
4250 }
4251 
4252 #[test]
lookupflag_ignore_ligatures_003()4253 fn lookupflag_ignore_ligatures_003() {
4254     assert_eq!(
4255         shape(
4256             "tests/fonts/aots/lookupflag_ignore_ligatures_f1.otf",
4257             "\u{0011}\u{0012}\u{001A}\u{002A}\u{0013}\u{001B}\u{0014}\u{0015}",
4258             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
4259         ),
4260         "17|\
4261          18|\
4262          26|\
4263          42|\
4264          19|\
4265          27|\
4266          20|\
4267          21"
4268     );
4269 }
4270 
4271 #[test]
lookupflag_ignore_marks_001()4272 fn lookupflag_ignore_marks_001() {
4273     assert_eq!(
4274         shape(
4275             "tests/fonts/aots/lookupflag_ignore_marks_f1.otf",
4276             "\u{0011}\u{0012}\u{001C}\u{001D}\u{0013}\u{001D}\u{0014}\u{0015}",
4277             "--features=\"test\" --no-clusters --no-glyph-names --no-positions",
4278         ),
4279         "17|\
4280          23|\
4281          28|\
4282          29|\
4283          29|\
4284          21"
4285     );
4286 }
4287 
4288