[util] Add --single-par

Use it in aots tests

Fixes https://github.com/harfbuzz/harfbuzz/issues/3129
Related https://github.com/harfbuzz/harfbuzz/issues/3298
diff --git a/test/shape/data/aots/hb-aots-tester.cpp b/test/shape/data/aots/hb-aots-tester.cpp
index 1528584..2ccf460 100644
--- a/test/shape/data/aots/hb-aots-tester.cpp
+++ b/test/shape/data/aots/hb-aots-tester.cpp
@@ -179,7 +179,7 @@
         hb_feature_to_string (&data.features[i], buf, sizeof (buf));
         fprintf (tests_file, "%s", buf);
     }
-    fprintf (tests_file, "\" --no-clusters --no-glyph-names --no-positions;");
+    fprintf (tests_file, "\" --single-par --no-clusters --no-glyph-names --no-positions;");
 
     for (unsigned int i = 0; i < nbIn; i++)
     {
diff --git a/test/shape/data/aots/tests/classdef1.tests b/test/shape/data/aots/tests/classdef1.tests
index b19f358..00b41b9 100644
--- a/test/shape/data/aots/tests/classdef1.tests
+++ b/test/shape/data/aots/tests/classdef1.tests
@@ -1 +1 @@
-../fonts/classdef1_font4.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18|19|20|21]
+../fonts/classdef1_font4.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18|19|20|21]
diff --git a/test/shape/data/aots/tests/classdef1_empty.tests b/test/shape/data/aots/tests/classdef1_empty.tests
index 28d0237..3167411 100644
--- a/test/shape/data/aots/tests/classdef1_empty.tests
+++ b/test/shape/data/aots/tests/classdef1_empty.tests
@@ -1 +1 @@
-../fonts/classdef1_font2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|23|24|25|21]
+../fonts/classdef1_font2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|23|24|25|21]
diff --git a/test/shape/data/aots/tests/classdef1_multiple.tests b/test/shape/data/aots/tests/classdef1_multiple.tests
index b5bebc4..3bbe704 100644
--- a/test/shape/data/aots/tests/classdef1_multiple.tests
+++ b/test/shape/data/aots/tests/classdef1_multiple.tests
@@ -1 +1 @@
-../fonts/classdef1_font3.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+001B,U+001C,U+001D,U+001E,U+001F,U+0020,U+0021,U+0022,U+0023,U+0024;[20|23|24|25|24|26|27|28|28|29|30|31|34|33|34|35|37|38|38|39]
+../fonts/classdef1_font3.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+001B,U+001C,U+001D,U+001E,U+001F,U+0020,U+0021,U+0022,U+0023,U+0024;[20|23|24|25|24|26|27|28|28|29|30|31|34|33|34|35|37|38|38|39]
diff --git a/test/shape/data/aots/tests/classdef1_single.tests b/test/shape/data/aots/tests/classdef1_single.tests
index 0390af5..d15673c 100644
--- a/test/shape/data/aots/tests/classdef1_single.tests
+++ b/test/shape/data/aots/tests/classdef1_single.tests
@@ -1 +1 @@
-../fonts/classdef2_font1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|23|24|25|21]
+../fonts/classdef2_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|23|24|25|21]
diff --git a/test/shape/data/aots/tests/classdef2.tests b/test/shape/data/aots/tests/classdef2.tests
index bf22d4e..4fec839 100644
--- a/test/shape/data/aots/tests/classdef2.tests
+++ b/test/shape/data/aots/tests/classdef2.tests
@@ -1 +1 @@
-../fonts/classdef2_font4.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18|19|20|21]
+../fonts/classdef2_font4.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18|19|20|21]
diff --git a/test/shape/data/aots/tests/classdef2_empty.tests b/test/shape/data/aots/tests/classdef2_empty.tests
index 652dc11..717636a 100644
--- a/test/shape/data/aots/tests/classdef2_empty.tests
+++ b/test/shape/data/aots/tests/classdef2_empty.tests
@@ -1 +1 @@
-../fonts/classdef2_font2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|23|24|25|21]
+../fonts/classdef2_font2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|23|24|25|21]
diff --git a/test/shape/data/aots/tests/classdef2_multiple.tests b/test/shape/data/aots/tests/classdef2_multiple.tests
index 25af349..a69d613 100644
--- a/test/shape/data/aots/tests/classdef2_multiple.tests
+++ b/test/shape/data/aots/tests/classdef2_multiple.tests
@@ -1 +1 @@
-../fonts/classdef2_font3.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+001B,U+001C,U+001D,U+001E,U+001F,U+0020,U+0021,U+0022,U+0023,U+0024;[20|23|24|25|24|26|27|28|28|29|30|31|34|33|34|35|37|38|38|39]
+../fonts/classdef2_font3.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+001B,U+001C,U+001D,U+001E,U+001F,U+0020,U+0021,U+0022,U+0023,U+0024;[20|23|24|25|24|26|27|28|28|29|30|31|34|33|34|35|37|38|38|39]
diff --git a/test/shape/data/aots/tests/classdef2_single.tests b/test/shape/data/aots/tests/classdef2_single.tests
index 0390af5..d15673c 100644
--- a/test/shape/data/aots/tests/classdef2_single.tests
+++ b/test/shape/data/aots/tests/classdef2_single.tests
@@ -1 +1 @@
-../fonts/classdef2_font1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|23|24|25|21]
+../fonts/classdef2_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|23|24|25|21]
diff --git a/test/shape/data/aots/tests/cmap0.tests b/test/shape/data/aots/tests/cmap0.tests
index 200527e..83ae1d7 100644
--- a/test/shape/data/aots/tests/cmap0.tests
+++ b/test/shape/data/aots/tests/cmap0.tests
@@ -1 +1 @@
-../fonts/cmap0_font1.otf;--features="test" --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+0001,U+0033,U+0034,U+0035,U+0036,U+0037,U+FFFF;[0|0|0|17|56|12|0|0]
+../fonts/cmap0_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+0001,U+0033,U+0034,U+0035,U+0036,U+0037,U+FFFF;[0|0|0|17|56|12|0|0]
diff --git a/test/shape/data/aots/tests/cmap10.tests b/test/shape/data/aots/tests/cmap10.tests
index 4d20384..9388c05 100644
--- a/test/shape/data/aots/tests/cmap10.tests
+++ b/test/shape/data/aots/tests/cmap10.tests
@@ -1,2 +1,2 @@
-../fonts/cmap10_font1.otf;--features="test" --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+0001,U+9232,U+109422,U+109423,U+109424,U+109425,U+FFFF;[0|0|0|0|26|27|32|0]
-../fonts/cmap10_font2.otf;--features="test" --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+0001,U+0021,U+0022,U+0023,U+0024,U+0025,U+FFFF;[0|0|0|0|0|0|0|0]
+../fonts/cmap10_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+0001,U+9232,U+109422,U+109423,U+109424,U+109425,U+FFFF;[0|0|0|0|26|27|32|0]
+../fonts/cmap10_font2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+0001,U+0021,U+0022,U+0023,U+0024,U+0025,U+FFFF;[0|0|0|0|0|0|0|0]
diff --git a/test/shape/data/aots/tests/cmap12.tests b/test/shape/data/aots/tests/cmap12.tests
index 9354a68..9d9cf14 100644
--- a/test/shape/data/aots/tests/cmap12.tests
+++ b/test/shape/data/aots/tests/cmap12.tests
@@ -1 +1 @@
-../fonts/cmap12_font1.otf;--features="test" --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+0001,U+0010,U+101723,U+101724,U+101727,U+101728,U+102522,U+102523,U+102527,U+102528,U+FFFF;[0|0|0|23|24|27|0|0|53|57|0|0]
+../fonts/cmap12_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+0001,U+0010,U+101723,U+101724,U+101727,U+101728,U+102522,U+102523,U+102527,U+102528,U+FFFF;[0|0|0|23|24|27|0|0|53|57|0|0]
diff --git a/test/shape/data/aots/tests/cmap2.tests b/test/shape/data/aots/tests/cmap2.tests
index d8a992f..2ffc351 100644
--- a/test/shape/data/aots/tests/cmap2.tests
+++ b/test/shape/data/aots/tests/cmap2.tests
@@ -1 +1 @@
-#../fonts/cmap2_font1.otf;--features="test" --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+0001,U+0033,U+0034,U+0035,U+0036,U+0037,U+8431,U+8432,U+8434,U+9232,U+FFFF;[0|0|0|17|56|12|0|0|20|22|23|0]
+#../fonts/cmap2_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+0001,U+0033,U+0034,U+0035,U+0036,U+0037,U+8431,U+8432,U+8434,U+9232,U+FFFF;[0|0|0|17|56|12|0|0|20|22|23|0]
diff --git a/test/shape/data/aots/tests/cmap4.tests b/test/shape/data/aots/tests/cmap4.tests
index a0d17ab..2416afc 100644
--- a/test/shape/data/aots/tests/cmap4.tests
+++ b/test/shape/data/aots/tests/cmap4.tests
@@ -1,6 +1,6 @@
-../fonts/cmap4_font1.otf;--features="test" --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+0001,U+0010,U+0011,U+0012,U+001E,U+001F,U+00C7,U+00C8,U+00CD,U+00D2,U+00D3,U+FFFF;[0|0|0|40|41|53|0|0|256|261|266|0|0]
-../fonts/cmap4_font2.otf;--features="test" --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+0001,U+0010,U+0011,U+0012,U+001E,U+001F,U+00C7,U+00C8,U+00CD,U+00D2,U+00D3,U+FFFF;[0|0|0|0|0|0|0|0|0|0|0|0|0]
-../fonts/cmap4_font3.otf;--features="test" --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+0001,U+0010,U+0011,U+0012,U+001E,U+001F,U+00C7,U+00C8,U+00CD,U+00D2,U+00D3,U+FFFF;[0|0|0|0|0|0|0|0|0|0|0|0|65534]
-../fonts/cmap4_font4.otf;--features="test" --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+AFC7,U+AFC8,U+AFC9,U+B02B,U+B02C,U+B02D;[0|0|44500|44501|44599|44600|0]
-#../fonts/cmap4_font4.otf;--features="test" --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+FDE7,U+FDE8,U+FDE9,U+FE0B,U+FE0C,U+FE0D,U+FE4C,U+FE4D;[0|0|65500|65501|65535|0]
-../fonts/cmap4_font4.otf;--features="test" --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+0063,U+0064,U+01F3,U+01F4,U+01F5,U+03E8,U+03E9;[0|0|65136|65535|0|1|500|0]
+../fonts/cmap4_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+0001,U+0010,U+0011,U+0012,U+001E,U+001F,U+00C7,U+00C8,U+00CD,U+00D2,U+00D3,U+FFFF;[0|0|0|40|41|53|0|0|256|261|266|0|0]
+../fonts/cmap4_font2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+0001,U+0010,U+0011,U+0012,U+001E,U+001F,U+00C7,U+00C8,U+00CD,U+00D2,U+00D3,U+FFFF;[0|0|0|0|0|0|0|0|0|0|0|0|0]
+../fonts/cmap4_font3.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+0001,U+0010,U+0011,U+0012,U+001E,U+001F,U+00C7,U+00C8,U+00CD,U+00D2,U+00D3,U+FFFF;[0|0|0|0|0|0|0|0|0|0|0|0|65534]
+../fonts/cmap4_font4.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+AFC7,U+AFC8,U+AFC9,U+B02B,U+B02C,U+B02D;[0|0|44500|44501|44599|44600|0]
+#../fonts/cmap4_font4.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+FDE7,U+FDE8,U+FDE9,U+FE0B,U+FE0C,U+FE0D,U+FE4C,U+FE4D;[0|0|65500|65501|65535|0]
+../fonts/cmap4_font4.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+0063,U+0064,U+01F3,U+01F4,U+01F5,U+03E8,U+03E9;[0|0|65136|65535|0|1|500|0]
diff --git a/test/shape/data/aots/tests/cmap6.tests b/test/shape/data/aots/tests/cmap6.tests
index bb5af86..c79d4d8 100644
--- a/test/shape/data/aots/tests/cmap6.tests
+++ b/test/shape/data/aots/tests/cmap6.tests
@@ -1,2 +1,2 @@
-../fonts/cmap6_font1.otf;--features="test" --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+0001,U+0021,U+0022,U+0023,U+0024,U+0025,U+FFFF;[0|0|0|17|56|12|0|0]
-../fonts/cmap6_font2.otf;--features="test" --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+0001,U+0021,U+0022,U+0023,U+0024,U+0025,U+FFFF;[0|0|0|0|0|0|0|0]
+../fonts/cmap6_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+0001,U+0021,U+0022,U+0023,U+0024,U+0025,U+FFFF;[0|0|0|17|56|12|0|0]
+../fonts/cmap6_font2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+0001,U+0021,U+0022,U+0023,U+0024,U+0025,U+FFFF;[0|0|0|0|0|0|0|0]
diff --git a/test/shape/data/aots/tests/cmap8.tests b/test/shape/data/aots/tests/cmap8.tests
index f65e015..62cd941 100644
--- a/test/shape/data/aots/tests/cmap8.tests
+++ b/test/shape/data/aots/tests/cmap8.tests
@@ -1 +1 @@
-#../fonts/cmap8_font1.otf;--features="test" --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+0001,U+0033,U+0034,U+0035,U+0036,U+0037,U+8431,U+8432,U+8434,U+9232,U+109422,U+109423,U+109424,U+109425,U+FFFF;[0|0|0|17|56|12|0|0|20|22|23|0|26|27|32|0]
+#../fonts/cmap8_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions --font-funcs=ot;U+0000,U+0001,U+0033,U+0034,U+0035,U+0036,U+0037,U+8431,U+8432,U+8434,U+9232,U+109422,U+109423,U+109424,U+109425,U+FFFF;[0|0|0|17|56|12|0|0|20|22|23|0|26|27|32|0]
diff --git a/test/shape/data/aots/tests/gpos1_1_lookupflag.tests b/test/shape/data/aots/tests/gpos1_1_lookupflag.tests
index d59ed62..790d9df 100644
--- a/test/shape/data/aots/tests/gpos1_1_lookupflag.tests
+++ b/test/shape/data/aots/tests/gpos1_1_lookupflag.tests
@@ -1 +1 @@
-../fonts/gpos1_1_lookupflag_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18@1500,0|19@3000,0|20@4200,0|21@6000,0]
+../fonts/gpos1_1_lookupflag_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18@1500,0|19@3000,0|20@4200,0|21@6000,0]
diff --git a/test/shape/data/aots/tests/gpos1_1_simple.tests b/test/shape/data/aots/tests/gpos1_1_simple.tests
index 6fd49fa..0137962 100644
--- a/test/shape/data/aots/tests/gpos1_1_simple.tests
+++ b/test/shape/data/aots/tests/gpos1_1_simple.tests
@@ -1,4 +1,4 @@
-../fonts/gpos1_1_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18@1300,0|19@3000,0|20@4300,0|21@6000,0]
-../fonts/gpos1_1_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18@1500,-200|19@3000,0|20@4500,-200|21@6000,0]
-../fonts/gpos1_1_simple_f3.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18@1500,0|19@2800,0|20@4300,0|21@5600,0]
-#../fonts/gpos1_1_simple_f4.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18@1500,0|19@3000,-200|20@4500,-200|21@6000,-400]
+../fonts/gpos1_1_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18@1300,0|19@3000,0|20@4300,0|21@6000,0]
+../fonts/gpos1_1_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18@1500,-200|19@3000,0|20@4500,-200|21@6000,0]
+../fonts/gpos1_1_simple_f3.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18@1500,0|19@2800,0|20@4300,0|21@5600,0]
+#../fonts/gpos1_1_simple_f4.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18@1500,0|19@3000,-200|20@4500,-200|21@6000,-400]
diff --git a/test/shape/data/aots/tests/gpos1_2.tests b/test/shape/data/aots/tests/gpos1_2.tests
index c8d949d..6dbb577 100644
--- a/test/shape/data/aots/tests/gpos1_2.tests
+++ b/test/shape/data/aots/tests/gpos1_2.tests
@@ -1 +1 @@
-../fonts/gpos1_2_font1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18@1300,0|19@3000,0|20@4200,0|21@6000,0]
+../fonts/gpos1_2_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18@1300,0|19@3000,0|20@4200,0|21@6000,0]
diff --git a/test/shape/data/aots/tests/gpos1_2_lookupflag.tests b/test/shape/data/aots/tests/gpos1_2_lookupflag.tests
index e2c694f..41579a7 100644
--- a/test/shape/data/aots/tests/gpos1_2_lookupflag.tests
+++ b/test/shape/data/aots/tests/gpos1_2_lookupflag.tests
@@ -1 +1 @@
-../fonts/gpos1_2_font2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18@1500,0|19@3000,0|20@4200,0|21@6000,0]
+../fonts/gpos1_2_font2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18@1500,0|19@3000,0|20@4200,0|21@6000,0]
diff --git a/test/shape/data/aots/tests/gpos2_1.tests b/test/shape/data/aots/tests/gpos2_1.tests
index ca94605..bafdc85 100644
--- a/test/shape/data/aots/tests/gpos2_1.tests
+++ b/test/shape/data/aots/tests/gpos2_1.tests
@@ -1,2 +1,2 @@
-../fonts/gpos2_1_font6.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0011,U+0012,U+0014,U+0011;[17|18@1300,0|19@3000,-100|17@4500,0|18@5700,0|20@7500,-400|17@9000,0]
-../fonts/gpos2_1_font7.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0011,U+0012,U+0014,U+0011,U+0015,U+0016,U+0011;[17|18@1300,0|19@3000,-100|17@4500,0|18@5700,0|20@7500,-400|17@9000,0|21@10000,0|22@12000,-600|17@13500,0]
+../fonts/gpos2_1_font6.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0011,U+0012,U+0014,U+0011;[17|18@1300,0|19@3000,-100|17@4500,0|18@5700,0|20@7500,-400|17@9000,0]
+../fonts/gpos2_1_font7.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0011,U+0012,U+0014,U+0011,U+0015,U+0016,U+0011;[17|18@1300,0|19@3000,-100|17@4500,0|18@5700,0|20@7500,-400|17@9000,0|21@10000,0|22@12000,-600|17@13500,0]
diff --git a/test/shape/data/aots/tests/gpos2_1_lookupflag.tests b/test/shape/data/aots/tests/gpos2_1_lookupflag.tests
index 0aacce0..e9d1bab 100644
--- a/test/shape/data/aots/tests/gpos2_1_lookupflag.tests
+++ b/test/shape/data/aots/tests/gpos2_1_lookupflag.tests
@@ -1,2 +1,2 @@
-../fonts/gpos2_1_lookupflag_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0013,U+0014,U+0011,U+0013,U+0012,U+0014,U+0011;[17|19@1300,0|20@3000,-100|17@4500,0|19@5800,0|18@7500,0|20@9000,-100|17@10500,0]
-../fonts/gpos2_1_lookupflag_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0013,U+0014,U+0011,U+0013,U+0012,U+0014,U+0011;[17|19@1500,0|20@2800,-100|17@4300,0|19@5800,0|18@7100,0|20@8600,-100|17@10100,0]
+../fonts/gpos2_1_lookupflag_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0013,U+0014,U+0011,U+0013,U+0012,U+0014,U+0011;[17|19@1300,0|20@3000,-100|17@4500,0|19@5800,0|18@7500,0|20@9000,-100|17@10500,0]
+../fonts/gpos2_1_lookupflag_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0013,U+0014,U+0011,U+0013,U+0012,U+0014,U+0011;[17|19@1500,0|20@2800,-100|17@4300,0|19@5800,0|18@7100,0|20@8600,-100|17@10100,0]
diff --git a/test/shape/data/aots/tests/gpos2_1_next_glyph.tests b/test/shape/data/aots/tests/gpos2_1_next_glyph.tests
index 990314d..09b368f 100644
--- a/test/shape/data/aots/tests/gpos2_1_next_glyph.tests
+++ b/test/shape/data/aots/tests/gpos2_1_next_glyph.tests
@@ -1,2 +1,2 @@
-../fonts/gpos2_1_next_glyph_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0012,U+0012,U+0012,U+0012;[18@-100,0|18@1500,-100|18@2900,0|18@4500,-100]
-../fonts/gpos2_1_next_glyph_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0012,U+0012,U+0012,U+0012;[18@-100,0|18@1400,0|18@2900,0|18@4500,0]
+../fonts/gpos2_1_next_glyph_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0012,U+0012,U+0012,U+0012;[18@-100,0|18@1500,-100|18@2900,0|18@4500,-100]
+../fonts/gpos2_1_next_glyph_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0012,U+0012,U+0012,U+0012;[18@-100,0|18@1400,0|18@2900,0|18@4500,0]
diff --git a/test/shape/data/aots/tests/gpos2_1_simple.tests b/test/shape/data/aots/tests/gpos2_1_simple.tests
index 86c1b9a..6c69a94 100644
--- a/test/shape/data/aots/tests/gpos2_1_simple.tests
+++ b/test/shape/data/aots/tests/gpos2_1_simple.tests
@@ -1,2 +1,2 @@
-../fonts/gpos2_1_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0011,U+0012,U+0014;[17|18@1300,0|19@3000,-100|17@4500,0|18@6000,0|20@7500,0]
-../fonts/gpos2_1_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012;[17|18@1500,0]
+../fonts/gpos2_1_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0011,U+0012,U+0014;[17|18@1300,0|19@3000,-100|17@4500,0|18@6000,0|20@7500,0]
+../fonts/gpos2_1_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012;[17|18@1500,0]
diff --git a/test/shape/data/aots/tests/gpos2_2.tests b/test/shape/data/aots/tests/gpos2_2.tests
index afcd661..6a3084c 100644
--- a/test/shape/data/aots/tests/gpos2_2.tests
+++ b/test/shape/data/aots/tests/gpos2_2.tests
@@ -1,5 +1,5 @@
-../fonts/gpos2_2_font1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0011,U+0012,U+0014;[17|18@1300,0|19@3000,-100|17@4500,0|18@6000,0|20@7500,0]
-../fonts/gpos2_2_font2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0013,U+0014,U+0011,U+0013,U+0012,U+0014,U+0011;[17|19@1300,0|20@3000,-100|17@4500,0|19@5800,0|18@7500,0|20@9000,-100|17@10500,0]
-../fonts/gpos2_2_font3.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0013,U+0014,U+0011,U+0013,U+0012,U+0014,U+0011;[17|19@1500,0|20@2800,-100|17@4300,0|19@5800,0|18@7100,0|20@8600,-100|17@10100,0]
-../fonts/gpos2_2_font4.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0012,U+0012,U+0012,U+0012;[18@-100,0|18@1500,-100|18@2900,0|18@4500,-100]
-../fonts/gpos2_2_font5.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0012,U+0012,U+0012,U+0012;[18@-100,0|18@1400,0|18@2900,0|18@4500,0]
+../fonts/gpos2_2_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0011,U+0012,U+0014;[17|18@1300,0|19@3000,-100|17@4500,0|18@6000,0|20@7500,0]
+../fonts/gpos2_2_font2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0013,U+0014,U+0011,U+0013,U+0012,U+0014,U+0011;[17|19@1300,0|20@3000,-100|17@4500,0|19@5800,0|18@7500,0|20@9000,-100|17@10500,0]
+../fonts/gpos2_2_font3.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0013,U+0014,U+0011,U+0013,U+0012,U+0014,U+0011;[17|19@1500,0|20@2800,-100|17@4300,0|19@5800,0|18@7100,0|20@8600,-100|17@10100,0]
+../fonts/gpos2_2_font4.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0012,U+0012,U+0012,U+0012;[18@-100,0|18@1500,-100|18@2900,0|18@4500,-100]
+../fonts/gpos2_2_font5.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0012,U+0012,U+0012,U+0012;[18@-100,0|18@1400,0|18@2900,0|18@4500,0]
diff --git a/test/shape/data/aots/tests/gpos3.tests b/test/shape/data/aots/tests/gpos3.tests
index 6981ec5..b7cb579 100644
--- a/test/shape/data/aots/tests/gpos3.tests
+++ b/test/shape/data/aots/tests/gpos3.tests
@@ -1,11 +1,11 @@
-#../fonts/gpos3_font1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0011;[17|18@1500,0|19@1599,99|17@4500,0]
-../fonts/gpos3_font1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0011,U+0013,U+0011;[17|18@1500,0|17@3000,0|19@4500,0|17@6000,0]
-#../fonts/gpos3_font3.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0012,U+0011;[17|18@1500,0|18@1600,100|17@4500,0]
-#../fonts/gpos3_font3.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0011;[17|18@1500,0|19@1599,99|17@4500,0]
-#../fonts/gpos3_font3.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0014,U+0012,U+0011;[17|20@1500,0|18@1602,102|17@4500,0]
-#../fonts/gpos3_font3.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0014,U+0013,U+0011;[17|20@1500,0|19@1601,101|17@4500,0]
-../fonts/gpos3_font3.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0014,U+0011;[17|18@1500,0|20@3000,0|17@4500,0]
-../fonts/gpos3_font3.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0013,U+0012,U+0011;[17|19@1500,0|18@3000,0|17@4500,0]
-../fonts/gpos3_font3.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0013,U+0014,U+0011;[17|19@1500,0|20@3000,0|17@4500,0]
-../fonts/gpos3_font3.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012;[17|18@1500,0]
-../fonts/gpos3_font3.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0015,U+0015,U+0015;[17|18@1500,0|21@3000,0|21@4500,0|21@6000,0]
+#../fonts/gpos3_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0011;[17|18@1500,0|19@1599,99|17@4500,0]
+../fonts/gpos3_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0011,U+0013,U+0011;[17|18@1500,0|17@3000,0|19@4500,0|17@6000,0]
+#../fonts/gpos3_font3.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0012,U+0011;[17|18@1500,0|18@1600,100|17@4500,0]
+#../fonts/gpos3_font3.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0011;[17|18@1500,0|19@1599,99|17@4500,0]
+#../fonts/gpos3_font3.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0014,U+0012,U+0011;[17|20@1500,0|18@1602,102|17@4500,0]
+#../fonts/gpos3_font3.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0014,U+0013,U+0011;[17|20@1500,0|19@1601,101|17@4500,0]
+../fonts/gpos3_font3.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0014,U+0011;[17|18@1500,0|20@3000,0|17@4500,0]
+../fonts/gpos3_font3.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0013,U+0012,U+0011;[17|19@1500,0|18@3000,0|17@4500,0]
+../fonts/gpos3_font3.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0013,U+0014,U+0011;[17|19@1500,0|20@3000,0|17@4500,0]
+../fonts/gpos3_font3.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012;[17|18@1500,0]
+../fonts/gpos3_font3.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0015,U+0015,U+0015;[17|18@1500,0|21@3000,0|21@4500,0|21@6000,0]
diff --git a/test/shape/data/aots/tests/gpos3_lookupflag.tests b/test/shape/data/aots/tests/gpos3_lookupflag.tests
index c615f4e..936d936 100644
--- a/test/shape/data/aots/tests/gpos3_lookupflag.tests
+++ b/test/shape/data/aots/tests/gpos3_lookupflag.tests
@@ -1,2 +1,2 @@
-#../fonts/gpos3_font2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0015,U+0013,U+0011;[17|18@1500,0|21@3000,0|19@1599,99|17@6000,0]
-#../fonts/gpos3_font2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0015,U+0015,U+0015,U+0013,U+0011;[17|18@1500,0|21@3000,0|21@4500,0|21@6000,0|19@1599,99|17@9000,0]
+#../fonts/gpos3_font2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0015,U+0013,U+0011;[17|18@1500,0|21@3000,0|19@1599,99|17@6000,0]
+#../fonts/gpos3_font2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0015,U+0015,U+0015,U+0013,U+0011;[17|18@1500,0|21@3000,0|21@4500,0|21@6000,0|19@1599,99|17@9000,0]
diff --git a/test/shape/data/aots/tests/gpos4_lookupflag.tests b/test/shape/data/aots/tests/gpos4_lookupflag.tests
index e75ba84..5ca6e1a 100644
--- a/test/shape/data/aots/tests/gpos4_lookupflag.tests
+++ b/test/shape/data/aots/tests/gpos4_lookupflag.tests
@@ -1,2 +1,2 @@
-../fonts/gpos4_lookupflag_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0011,U+0013,U+0011;[17|18@1500,0|17@3000,0|19@4500,0|17@4500,0]
-../fonts/gpos4_lookupflag_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0011;[17|18@1500,0|19@3000,0|17@3000,0]
+../fonts/gpos4_lookupflag_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0011,U+0013,U+0011;[17|18@1500,0|17@3000,0|19@4500,0|17@4500,0]
+../fonts/gpos4_lookupflag_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0011;[17|18@1500,0|19@3000,0|17@3000,0]
diff --git a/test/shape/data/aots/tests/gpos4_multiple_anchors.tests b/test/shape/data/aots/tests/gpos4_multiple_anchors.tests
index 793041f..9eddc02 100644
--- a/test/shape/data/aots/tests/gpos4_multiple_anchors.tests
+++ b/test/shape/data/aots/tests/gpos4_multiple_anchors.tests
@@ -1 +1 @@
-#../fonts/gpos4_multiple_anchors_1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0013,U+0014,U+0015,U+0016,U+0012,U+0013,U+0014,U+0015,U+0016;[17|19@-100,-80|20@-1591,-71|21@-3102,-82|22@-4593,-73|18@1500,0|19@1420,-60|20@-71,-51|21@-1582,-62|22@-3073,-53]
+#../fonts/gpos4_multiple_anchors_1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0013,U+0014,U+0015,U+0016,U+0012,U+0013,U+0014,U+0015,U+0016;[17|19@-100,-80|20@-1591,-71|21@-3102,-82|22@-4593,-73|18@1500,0|19@1420,-60|20@-71,-51|21@-1582,-62|22@-3073,-53]
diff --git a/test/shape/data/aots/tests/gpos4_simple.tests b/test/shape/data/aots/tests/gpos4_simple.tests
index a25361c..d638296 100644
--- a/test/shape/data/aots/tests/gpos4_simple.tests
+++ b/test/shape/data/aots/tests/gpos4_simple.tests
@@ -1,5 +1,5 @@
-#../fonts/gpos4_simple_1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0011;[17|18@1500,0|19@1400,-80|17@3000,0]
-../fonts/gpos4_simple_1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0011,U+0013,U+0011;[17|17@1500,0|19@3000,0|17@3000,0]
-../fonts/gpos4_simple_1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0019,U+0019,U+0013,U+0011;[25|25@1500,0|19@3000,0|17@3000,0]
-#../fonts/gpos4_simple_1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0013,U+0011;[17|18@1500,0|19@1400,-80|19@-100,-80|17@3000,0]
-#../fonts/gpos4_simple_1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0014,U+0013,U+0011;[17|18@1500,0|20@3000,0|19@-100,-80|17@3000,0]
+#../fonts/gpos4_simple_1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0011;[17|18@1500,0|19@1400,-80|17@3000,0]
+../fonts/gpos4_simple_1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0011,U+0013,U+0011;[17|17@1500,0|19@3000,0|17@3000,0]
+../fonts/gpos4_simple_1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0019,U+0019,U+0013,U+0011;[25|25@1500,0|19@3000,0|17@3000,0]
+#../fonts/gpos4_simple_1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0013,U+0011;[17|18@1500,0|19@1400,-80|19@-100,-80|17@3000,0]
+#../fonts/gpos4_simple_1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0014,U+0013,U+0011;[17|18@1500,0|20@3000,0|19@-100,-80|17@3000,0]
diff --git a/test/shape/data/aots/tests/gpos5.tests b/test/shape/data/aots/tests/gpos5.tests
index d1462f4..6b61561 100644
--- a/test/shape/data/aots/tests/gpos5.tests
+++ b/test/shape/data/aots/tests/gpos5.tests
@@ -1,2 +1,2 @@
-../fonts/gpos5_font1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+001E,U+0013,U+001F,U+0011;[17|18@1500,0|19@1400,-80|17@3000,0]
-#../fonts/gpos5_font1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+001E,U+001F,U+0013,U+0011;[17|18@1500,0|19@1401,-79|17@3000,0]
+../fonts/gpos5_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+001E,U+0013,U+001F,U+0011;[17|18@1500,0|19@1400,-80|17@3000,0]
+#../fonts/gpos5_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+001E,U+001F,U+0013,U+0011;[17|18@1500,0|19@1401,-79|17@3000,0]
diff --git a/test/shape/data/aots/tests/gpos6.tests b/test/shape/data/aots/tests/gpos6.tests
index b65c941..27a2afa 100644
--- a/test/shape/data/aots/tests/gpos6.tests
+++ b/test/shape/data/aots/tests/gpos6.tests
@@ -1,3 +1,3 @@
-#../fonts/gpos6_font1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0011;[17|18@1500,0|19@-100,-80|17@1500,0]
-../fonts/gpos6_font1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0011,U+0013,U+0011;[17|17@1500,0|19@3000,0|17@3000,0]
-../fonts/gpos6_font1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0014,U+0014,U+0013,U+0011;[20|20|19|17]
+#../fonts/gpos6_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0011;[17|18@1500,0|19@-100,-80|17@1500,0]
+../fonts/gpos6_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0011,U+0013,U+0011;[17|17@1500,0|19@3000,0|17@3000,0]
+../fonts/gpos6_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0014,U+0014,U+0013,U+0011;[20|20|19|17]
diff --git a/test/shape/data/aots/tests/gpos7_1.tests b/test/shape/data/aots/tests/gpos7_1.tests
index ba773ba..3fb28d8 100644
--- a/test/shape/data/aots/tests/gpos7_1.tests
+++ b/test/shape/data/aots/tests/gpos7_1.tests
@@ -1,2 +1,2 @@
-../fonts/gpos7_1_font1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18@1600,0|19@3200,0|20@4800,0|21@6000,0]
-../fonts/gpos7_1_font1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0011,U+0012,U+0013,U+0011;[17|18@1500,0|17@3000,0|18@4500,0|19@6000,0|17@7500,0]
+../fonts/gpos7_1_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18@1600,0|19@3200,0|20@4800,0|21@6000,0]
+../fonts/gpos7_1_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0011,U+0012,U+0013,U+0011;[17|18@1500,0|17@3000,0|18@4500,0|19@6000,0|17@7500,0]
diff --git a/test/shape/data/aots/tests/gpos9.tests b/test/shape/data/aots/tests/gpos9.tests
index 5a2bc90..84c2d42 100644
--- a/test/shape/data/aots/tests/gpos9.tests
+++ b/test/shape/data/aots/tests/gpos9.tests
@@ -1,2 +1,2 @@
-../fonts/gpos9_font1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18@1300,0|19@3000,0|20@4300,0|21@6000,0]
-../fonts/gpos9_font2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0014,U+0015,U+0011;[17|18@1300,0|19@2700,0|20@4300,0|21@5700,0|17@7500,0]
+../fonts/gpos9_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18@1300,0|19@3000,0|20@4300,0|21@6000,0]
+../fonts/gpos9_font2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+0014,U+0015,U+0011;[17|18@1300,0|19@2700,0|20@4300,0|21@5700,0|17@7500,0]
diff --git a/test/shape/data/aots/tests/gpos_chaining1_boundary.tests b/test/shape/data/aots/tests/gpos_chaining1_boundary.tests
index ab7e264..2841c31 100644
--- a/test/shape/data/aots/tests/gpos_chaining1_boundary.tests
+++ b/test/shape/data/aots/tests/gpos_chaining1_boundary.tests
@@ -1,4 +1,4 @@
-../fonts/gpos_chaining1_boundary_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|0@7500,0]
-../fonts/gpos_chaining1_boundary_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4500,0|23@6000,0|0@7500,0]
-../fonts/gpos_chaining1_boundary_f3.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4500,0|23@6000,0|0@7500,0]
-../fonts/gpos_chaining1_boundary_f4.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3000,0|22@4520,0|23@6000,0|0@7500,0]
+../fonts/gpos_chaining1_boundary_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|0@7500,0]
+../fonts/gpos_chaining1_boundary_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4500,0|23@6000,0|0@7500,0]
+../fonts/gpos_chaining1_boundary_f3.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4500,0|23@6000,0|0@7500,0]
+../fonts/gpos_chaining1_boundary_f4.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3000,0|22@4520,0|23@6000,0|0@7500,0]
diff --git a/test/shape/data/aots/tests/gpos_chaining1_lookupflag.tests b/test/shape/data/aots/tests/gpos_chaining1_lookupflag.tests
index dd10344..96db43f 100644
--- a/test/shape/data/aots/tests/gpos_chaining1_lookupflag.tests
+++ b/test/shape/data/aots/tests/gpos_chaining1_lookupflag.tests
@@ -1 +1 @@
-../fonts/gpos_chaining1_lookupflag_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+005A,U+0015,U+005B,U+0016,U+005C,U+0017,U+005D,U+005E,U+0018,U+005A,U+0019,U+005B,U+001A,U+0000;[0|20@1500,0|90@3000,0|21@3000,0|91@4500,0|22@4500,0|92@6000,0|23@6020,0|93@7500,0|94@7500,0|24@7500,0|90@9000,0|25@9000,0|91@10500,0|26@10500,0|0@12000,0]
+../fonts/gpos_chaining1_lookupflag_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+005A,U+0015,U+005B,U+0016,U+005C,U+0017,U+005D,U+005E,U+0018,U+005A,U+0019,U+005B,U+001A,U+0000;[0|20@1500,0|90@3000,0|21@3000,0|91@4500,0|22@4500,0|92@6000,0|23@6020,0|93@7500,0|94@7500,0|24@7500,0|90@9000,0|25@9000,0|91@10500,0|26@10500,0|0@12000,0]
diff --git a/test/shape/data/aots/tests/gpos_chaining1_multiple_subrules.tests b/test/shape/data/aots/tests/gpos_chaining1_multiple_subrules.tests
index e4e37f7..e9e747e 100644
--- a/test/shape/data/aots/tests/gpos_chaining1_multiple_subrules.tests
+++ b/test/shape/data/aots/tests/gpos_chaining1_multiple_subrules.tests
@@ -1,2 +1,2 @@
-../fonts/gpos_chaining1_multiple_subrules_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4500,0|23@6000,0|24@7500,0|0@9000,0|20@10500,0|21@12000,0|22@13520,0|23@15000,0|0@16500,0]
-../fonts/gpos_chaining1_multiple_subrules_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3000,0|22@4520,0|23@6000,0|24@7500,0|0@9000,0|20@10500,0|21@12000,0|22@13520,0|23@15000,0|0@16500,0]
+../fonts/gpos_chaining1_multiple_subrules_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4500,0|23@6000,0|24@7500,0|0@9000,0|20@10500,0|21@12000,0|22@13520,0|23@15000,0|0@16500,0]
+../fonts/gpos_chaining1_multiple_subrules_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3000,0|22@4520,0|23@6000,0|24@7500,0|0@9000,0|20@10500,0|21@12000,0|22@13520,0|23@15000,0|0@16500,0]
diff --git a/test/shape/data/aots/tests/gpos_chaining1_next_glyph.tests b/test/shape/data/aots/tests/gpos_chaining1_next_glyph.tests
index 4431e52..c11060b 100644
--- a/test/shape/data/aots/tests/gpos_chaining1_next_glyph.tests
+++ b/test/shape/data/aots/tests/gpos_chaining1_next_glyph.tests
@@ -1 +1 @@
-../fonts/gpos_chaining1_next_glyph_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4520,0|23@6020,0|0@7500,0]
+../fonts/gpos_chaining1_next_glyph_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4520,0|23@6020,0|0@7500,0]
diff --git a/test/shape/data/aots/tests/gpos_chaining1_simple.tests b/test/shape/data/aots/tests/gpos_chaining1_simple.tests
index bdb61a9..03b037b 100644
--- a/test/shape/data/aots/tests/gpos_chaining1_simple.tests
+++ b/test/shape/data/aots/tests/gpos_chaining1_simple.tests
@@ -1,11 +1,11 @@
-../fonts/gpos_chaining1_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4520,0|23@6000,0|0@7500,0]
-../fonts/gpos_chaining1_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[0|20@1500,0|21@3000,0|22@4520,0|23@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0]
-../fonts/gpos_chaining1_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+0000,U+0000;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0|0@10500,0|0@12000,0]
-../fonts/gpos_chaining1_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0]
-../fonts/gpos_chaining1_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0]
-../fonts/gpos_chaining1_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0000,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[0|0@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0]
-../fonts/gpos_chaining1_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[21|22@1500,0|23@3000,0|24@4500,0|25@6000,0|26@7500,0|0@9000,0]
-../fonts/gpos_chaining1_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[22|23@1500,0|24@3000,0|25@4500,0|26@6000,0|0@7500,0]
-../fonts/gpos_chaining1_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0000,U+0018,U+0019,U+001A,U+0000;[0|20@1500,0|21@3000,0|22@4500,0|0@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0]
-../fonts/gpos_chaining1_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0]
-../fonts/gpos_chaining1_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016;[0|20@1500,0|21@3000,0|22@4500,0]
+../fonts/gpos_chaining1_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4520,0|23@6000,0|0@7500,0]
+../fonts/gpos_chaining1_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[0|20@1500,0|21@3000,0|22@4520,0|23@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0]
+../fonts/gpos_chaining1_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+0000,U+0000;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0|0@10500,0|0@12000,0]
+../fonts/gpos_chaining1_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0]
+../fonts/gpos_chaining1_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0]
+../fonts/gpos_chaining1_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0000,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[0|0@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0]
+../fonts/gpos_chaining1_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[21|22@1500,0|23@3000,0|24@4500,0|25@6000,0|26@7500,0|0@9000,0]
+../fonts/gpos_chaining1_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[22|23@1500,0|24@3000,0|25@4500,0|26@6000,0|0@7500,0]
+../fonts/gpos_chaining1_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0000,U+0018,U+0019,U+001A,U+0000;[0|20@1500,0|21@3000,0|22@4500,0|0@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0]
+../fonts/gpos_chaining1_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0]
+../fonts/gpos_chaining1_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016;[0|20@1500,0|21@3000,0|22@4500,0]
diff --git a/test/shape/data/aots/tests/gpos_chaining1_successive.tests b/test/shape/data/aots/tests/gpos_chaining1_successive.tests
index dba4fc3..a869247 100644
--- a/test/shape/data/aots/tests/gpos_chaining1_successive.tests
+++ b/test/shape/data/aots/tests/gpos_chaining1_successive.tests
@@ -1 +1 @@
-../fonts/gpos_chaining1_successive_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0019,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000;[0|25@1500,0|20@3000,0|21@4520,0|22@6020,0|23@7500,0|24@9000,0|0@10500,0]
+../fonts/gpos_chaining1_successive_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0019,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000;[0|25@1500,0|20@3000,0|21@4520,0|22@6020,0|23@7500,0|24@9000,0|0@10500,0]
diff --git a/test/shape/data/aots/tests/gpos_chaining2_boundary.tests b/test/shape/data/aots/tests/gpos_chaining2_boundary.tests
index e731ad9..78195fb 100644
--- a/test/shape/data/aots/tests/gpos_chaining2_boundary.tests
+++ b/test/shape/data/aots/tests/gpos_chaining2_boundary.tests
@@ -1,4 +1,4 @@
-../fonts/gpos_chaining2_boundary_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|0@7500,0]
-../fonts/gpos_chaining2_boundary_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4500,0|23@6000,0|0@7500,0]
-../fonts/gpos_chaining2_boundary_f3.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4500,0|23@6000,0|0@7500,0]
-../fonts/gpos_chaining2_boundary_f4.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3000,0|22@4520,0|23@6000,0|0@7500,0]
+../fonts/gpos_chaining2_boundary_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|0@7500,0]
+../fonts/gpos_chaining2_boundary_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4500,0|23@6000,0|0@7500,0]
+../fonts/gpos_chaining2_boundary_f3.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4500,0|23@6000,0|0@7500,0]
+../fonts/gpos_chaining2_boundary_f4.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3000,0|22@4520,0|23@6000,0|0@7500,0]
diff --git a/test/shape/data/aots/tests/gpos_chaining2_lookupflag.tests b/test/shape/data/aots/tests/gpos_chaining2_lookupflag.tests
index 432dd9e..3f25512 100644
--- a/test/shape/data/aots/tests/gpos_chaining2_lookupflag.tests
+++ b/test/shape/data/aots/tests/gpos_chaining2_lookupflag.tests
@@ -1 +1 @@
-../fonts/gpos_chaining2_lookupflag_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+005A,U+0015,U+005B,U+0016,U+005C,U+0017,U+005D,U+005E,U+0018,U+005A,U+0019,U+005B,U+001A,U+0000;[0|20@1500,0|90@3000,0|21@3000,0|91@4500,0|22@4500,0|92@6000,0|23@6020,0|93@7500,0|94@7500,0|24@7500,0|90@9000,0|25@9000,0|91@10500,0|26@10500,0|0@12000,0]
+../fonts/gpos_chaining2_lookupflag_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+005A,U+0015,U+005B,U+0016,U+005C,U+0017,U+005D,U+005E,U+0018,U+005A,U+0019,U+005B,U+001A,U+0000;[0|20@1500,0|90@3000,0|21@3000,0|91@4500,0|22@4500,0|92@6000,0|23@6020,0|93@7500,0|94@7500,0|24@7500,0|90@9000,0|25@9000,0|91@10500,0|26@10500,0|0@12000,0]
diff --git a/test/shape/data/aots/tests/gpos_chaining2_multiple_subrules.tests b/test/shape/data/aots/tests/gpos_chaining2_multiple_subrules.tests
index d7374ad..066f53f 100644
--- a/test/shape/data/aots/tests/gpos_chaining2_multiple_subrules.tests
+++ b/test/shape/data/aots/tests/gpos_chaining2_multiple_subrules.tests
@@ -1,2 +1,2 @@
-../fonts/gpos_chaining2_multiple_subrules_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4500,0|23@6000,0|24@7500,0|0@9000,0|20@10500,0|21@12000,0|22@13520,0|23@15000,0|0@16500,0]
-../fonts/gpos_chaining2_multiple_subrules_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3000,0|22@4520,0|23@6000,0|24@7500,0|0@9000,0|20@10500,0|21@12000,0|22@13520,0|23@15000,0|0@16500,0]
+../fonts/gpos_chaining2_multiple_subrules_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4500,0|23@6000,0|24@7500,0|0@9000,0|20@10500,0|21@12000,0|22@13520,0|23@15000,0|0@16500,0]
+../fonts/gpos_chaining2_multiple_subrules_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3000,0|22@4520,0|23@6000,0|24@7500,0|0@9000,0|20@10500,0|21@12000,0|22@13520,0|23@15000,0|0@16500,0]
diff --git a/test/shape/data/aots/tests/gpos_chaining2_next_glyph.tests b/test/shape/data/aots/tests/gpos_chaining2_next_glyph.tests
index 30e9b7c..dbb353c 100644
--- a/test/shape/data/aots/tests/gpos_chaining2_next_glyph.tests
+++ b/test/shape/data/aots/tests/gpos_chaining2_next_glyph.tests
@@ -1 +1 @@
-../fonts/gpos_chaining2_next_glyph_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4520,0|23@6020,0|0@7500,0]
+../fonts/gpos_chaining2_next_glyph_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4520,0|23@6020,0|0@7500,0]
diff --git a/test/shape/data/aots/tests/gpos_chaining2_simple.tests b/test/shape/data/aots/tests/gpos_chaining2_simple.tests
index 2d10871..41303d4 100644
--- a/test/shape/data/aots/tests/gpos_chaining2_simple.tests
+++ b/test/shape/data/aots/tests/gpos_chaining2_simple.tests
@@ -1,11 +1,11 @@
-../fonts/gpos_chaining2_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4520,0|23@6000,0|0@7500,0]
-../fonts/gpos_chaining2_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[0|20@1500,0|21@3000,0|22@4520,0|23@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0]
-../fonts/gpos_chaining2_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+0000,U+0000;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0|0@10500,0|0@12000,0]
-../fonts/gpos_chaining2_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0]
-../fonts/gpos_chaining2_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0]
-../fonts/gpos_chaining2_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0000,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[0|0@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0]
-../fonts/gpos_chaining2_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[21|22@1500,0|23@3000,0|24@4500,0|25@6000,0|26@7500,0|0@9000,0]
-../fonts/gpos_chaining2_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[22|23@1500,0|24@3000,0|25@4500,0|26@6000,0|0@7500,0]
-../fonts/gpos_chaining2_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0000,U+0018,U+0019,U+001A,U+0000;[0|20@1500,0|21@3000,0|22@4500,0|0@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0]
-../fonts/gpos_chaining2_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0]
-../fonts/gpos_chaining2_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016;[0|20@1500,0|21@3000,0|22@4500,0]
+../fonts/gpos_chaining2_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4520,0|23@6000,0|0@7500,0]
+../fonts/gpos_chaining2_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[0|20@1500,0|21@3000,0|22@4520,0|23@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0]
+../fonts/gpos_chaining2_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+0000,U+0000;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0|0@10500,0|0@12000,0]
+../fonts/gpos_chaining2_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0]
+../fonts/gpos_chaining2_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0]
+../fonts/gpos_chaining2_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0000,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[0|0@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0]
+../fonts/gpos_chaining2_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[21|22@1500,0|23@3000,0|24@4500,0|25@6000,0|26@7500,0|0@9000,0]
+../fonts/gpos_chaining2_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[22|23@1500,0|24@3000,0|25@4500,0|26@6000,0|0@7500,0]
+../fonts/gpos_chaining2_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0000,U+0018,U+0019,U+001A,U+0000;[0|20@1500,0|21@3000,0|22@4500,0|0@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0]
+../fonts/gpos_chaining2_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0]
+../fonts/gpos_chaining2_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016;[0|20@1500,0|21@3000,0|22@4500,0]
diff --git a/test/shape/data/aots/tests/gpos_chaining2_successive.tests b/test/shape/data/aots/tests/gpos_chaining2_successive.tests
index 069e856..df30a0e 100644
--- a/test/shape/data/aots/tests/gpos_chaining2_successive.tests
+++ b/test/shape/data/aots/tests/gpos_chaining2_successive.tests
@@ -1 +1 @@
-../fonts/gpos_chaining2_successive_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0019,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000;[0|25@1500,0|20@3000,0|21@4520,0|22@6020,0|23@7500,0|24@9000,0|0@10500,0]
+../fonts/gpos_chaining2_successive_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0019,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000;[0|25@1500,0|20@3000,0|21@4520,0|22@6020,0|23@7500,0|24@9000,0|0@10500,0]
diff --git a/test/shape/data/aots/tests/gpos_chaining3_boundary.tests b/test/shape/data/aots/tests/gpos_chaining3_boundary.tests
index aa846d0..f93e2e6 100644
--- a/test/shape/data/aots/tests/gpos_chaining3_boundary.tests
+++ b/test/shape/data/aots/tests/gpos_chaining3_boundary.tests
@@ -1,4 +1,4 @@
-../fonts/gpos_chaining3_boundary_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|0@7500,0]
-../fonts/gpos_chaining3_boundary_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4500,0|23@6000,0|0@7500,0]
-../fonts/gpos_chaining3_boundary_f3.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4500,0|23@6000,0|0@7500,0]
-../fonts/gpos_chaining3_boundary_f4.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3000,0|22@4520,0|23@6000,0|0@7500,0]
+../fonts/gpos_chaining3_boundary_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|0@7500,0]
+../fonts/gpos_chaining3_boundary_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4500,0|23@6000,0|0@7500,0]
+../fonts/gpos_chaining3_boundary_f3.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4500,0|23@6000,0|0@7500,0]
+../fonts/gpos_chaining3_boundary_f4.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3000,0|22@4520,0|23@6000,0|0@7500,0]
diff --git a/test/shape/data/aots/tests/gpos_chaining3_lookupflag.tests b/test/shape/data/aots/tests/gpos_chaining3_lookupflag.tests
index 53b61b1..ea0f57e 100644
--- a/test/shape/data/aots/tests/gpos_chaining3_lookupflag.tests
+++ b/test/shape/data/aots/tests/gpos_chaining3_lookupflag.tests
@@ -1 +1 @@
-../fonts/gpos_chaining3_lookupflag_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+005A,U+0015,U+005B,U+0016,U+005C,U+0017,U+005D,U+005E,U+0018,U+005A,U+0019,U+005B,U+001A,U+0000;[0|20@1500,0|90@3000,0|21@3000,0|91@4500,0|22@4500,0|92@6000,0|23@6020,0|93@7500,0|94@7500,0|24@7500,0|90@9000,0|25@9000,0|91@10500,0|26@10500,0|0@12000,0]
+../fonts/gpos_chaining3_lookupflag_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+005A,U+0015,U+005B,U+0016,U+005C,U+0017,U+005D,U+005E,U+0018,U+005A,U+0019,U+005B,U+001A,U+0000;[0|20@1500,0|90@3000,0|21@3000,0|91@4500,0|22@4500,0|92@6000,0|23@6020,0|93@7500,0|94@7500,0|24@7500,0|90@9000,0|25@9000,0|91@10500,0|26@10500,0|0@12000,0]
diff --git a/test/shape/data/aots/tests/gpos_chaining3_next_glyph.tests b/test/shape/data/aots/tests/gpos_chaining3_next_glyph.tests
index 29eb1ab..ea985a6 100644
--- a/test/shape/data/aots/tests/gpos_chaining3_next_glyph.tests
+++ b/test/shape/data/aots/tests/gpos_chaining3_next_glyph.tests
@@ -1 +1 @@
-../fonts/gpos_chaining3_next_glyph_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0016,U+0015,U+0016,U+0015,U+0016,U+0015,U+0000;[0|22@1500,0|21@3020,0|22@4500,0|21@6020,0|22@7500,0|21@9000,0|0@10500,0]
+../fonts/gpos_chaining3_next_glyph_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0016,U+0015,U+0016,U+0015,U+0016,U+0015,U+0000;[0|22@1500,0|21@3020,0|22@4500,0|21@6020,0|22@7500,0|21@9000,0|0@10500,0]
diff --git a/test/shape/data/aots/tests/gpos_chaining3_simple.tests b/test/shape/data/aots/tests/gpos_chaining3_simple.tests
index 3a96de7..648a4d5 100644
--- a/test/shape/data/aots/tests/gpos_chaining3_simple.tests
+++ b/test/shape/data/aots/tests/gpos_chaining3_simple.tests
@@ -1,11 +1,11 @@
-../fonts/gpos_chaining3_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4520,0|23@6000,0|0@7500,0]
-../fonts/gpos_chaining3_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[0|20@1500,0|21@3000,0|22@4520,0|23@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0]
-../fonts/gpos_chaining3_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+0000,U+0000;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0|0@10500,0|0@12000,0]
-../fonts/gpos_chaining3_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0]
-../fonts/gpos_chaining3_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0]
-../fonts/gpos_chaining3_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0000,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[0|0@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0]
-../fonts/gpos_chaining3_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[21|22@1500,0|23@3000,0|24@4500,0|25@6000,0|26@7500,0|0@9000,0]
-../fonts/gpos_chaining3_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[22|23@1500,0|24@3000,0|25@4500,0|26@6000,0|0@7500,0]
-../fonts/gpos_chaining3_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0000,U+0018,U+0019,U+001A,U+0000;[0|20@1500,0|21@3000,0|22@4500,0|0@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0]
-../fonts/gpos_chaining3_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0]
-../fonts/gpos_chaining3_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016;[0|20@1500,0|21@3000,0|22@4500,0]
+../fonts/gpos_chaining3_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4520,0|23@6000,0|0@7500,0]
+../fonts/gpos_chaining3_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[0|20@1500,0|21@3000,0|22@4520,0|23@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0]
+../fonts/gpos_chaining3_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+0000,U+0000;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0|0@10500,0|0@12000,0]
+../fonts/gpos_chaining3_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0]
+../fonts/gpos_chaining3_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0]
+../fonts/gpos_chaining3_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0000,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[0|0@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0]
+../fonts/gpos_chaining3_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[21|22@1500,0|23@3000,0|24@4500,0|25@6000,0|26@7500,0|0@9000,0]
+../fonts/gpos_chaining3_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[22|23@1500,0|24@3000,0|25@4500,0|26@6000,0|0@7500,0]
+../fonts/gpos_chaining3_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0000,U+0018,U+0019,U+001A,U+0000;[0|20@1500,0|21@3000,0|22@4500,0|0@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0]
+../fonts/gpos_chaining3_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017;[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0]
+../fonts/gpos_chaining3_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016;[0|20@1500,0|21@3000,0|22@4500,0]
diff --git a/test/shape/data/aots/tests/gpos_chaining3_successive.tests b/test/shape/data/aots/tests/gpos_chaining3_successive.tests
index ddddf47..d98d6fe 100644
--- a/test/shape/data/aots/tests/gpos_chaining3_successive.tests
+++ b/test/shape/data/aots/tests/gpos_chaining3_successive.tests
@@ -1 +1 @@
-../fonts/gpos_chaining3_successive_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0019,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000;[0|25@1500,0|20@3000,0|21@4520,0|22@6020,0|23@7500,0|24@9000,0|0@10500,0]
+../fonts/gpos_chaining3_successive_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0019,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000;[0|25@1500,0|20@3000,0|21@4520,0|22@6020,0|23@7500,0|24@9000,0|0@10500,0]
diff --git a/test/shape/data/aots/tests/gpos_context1_boundary.tests b/test/shape/data/aots/tests/gpos_context1_boundary.tests
index 39e2749..ea4c351 100644
--- a/test/shape/data/aots/tests/gpos_context1_boundary.tests
+++ b/test/shape/data/aots/tests/gpos_context1_boundary.tests
@@ -1,2 +1,2 @@
-../fonts/gpos_context1_boundary_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20@1500,0|20@3000,0|20@4500,0|20@6000,0|20@7500,0|0@9000,0]
-../fonts/gpos_context1_boundary_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20@1520,0|20@3020,0|20@4520,0|20@6020,0|20@7520,0|0@9000,0]
+../fonts/gpos_context1_boundary_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20@1500,0|20@3000,0|20@4500,0|20@6000,0|20@7500,0|0@9000,0]
+../fonts/gpos_context1_boundary_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20@1520,0|20@3020,0|20@4520,0|20@6020,0|20@7520,0|0@9000,0]
diff --git a/test/shape/data/aots/tests/gpos_context1_expansion.tests b/test/shape/data/aots/tests/gpos_context1_expansion.tests
index e8105d3..63681e9 100644
--- a/test/shape/data/aots/tests/gpos_context1_expansion.tests
+++ b/test/shape/data/aots/tests/gpos_context1_expansion.tests
@@ -1 +1 @@
-../fonts/gpos_context1_expansion_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0000;[0|20@1500,0|21@3000,0|22@4500,0|0@6000,0]
+../fonts/gpos_context1_expansion_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0000;[0|20@1500,0|21@3000,0|22@4500,0|0@6000,0]
diff --git a/test/shape/data/aots/tests/gpos_context1_lookupflag.tests b/test/shape/data/aots/tests/gpos_context1_lookupflag.tests
index 2120eb3..4082840 100644
--- a/test/shape/data/aots/tests/gpos_context1_lookupflag.tests
+++ b/test/shape/data/aots/tests/gpos_context1_lookupflag.tests
@@ -1,2 +1,2 @@
-../fonts/gpos_context1_lookupflag_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000;[0|20@1520,0|90@3000,0|21@3020,0|91@4500,0|92@4500,0|22@4520,0|0@6000,0]
-../fonts/gpos_context1_lookupflag_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000;[0|20@1500,0|90@3000,0|21@3020,0|91@4500,0|92@4500,0|22@4500,0|0@6000,0]
+../fonts/gpos_context1_lookupflag_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000;[0|20@1520,0|90@3000,0|21@3020,0|91@4500,0|92@4500,0|22@4520,0|0@6000,0]
+../fonts/gpos_context1_lookupflag_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000;[0|20@1500,0|90@3000,0|21@3020,0|91@4500,0|92@4500,0|22@4500,0|0@6000,0]
diff --git a/test/shape/data/aots/tests/gpos_context1_multiple_subrules.tests b/test/shape/data/aots/tests/gpos_context1_multiple_subrules.tests
index 78e7a3b..551997b 100644
--- a/test/shape/data/aots/tests/gpos_context1_multiple_subrules.tests
+++ b/test/shape/data/aots/tests/gpos_context1_multiple_subrules.tests
@@ -1,2 +1,2 @@
-../fonts/gpos_context1_multiple_subrules_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0000,U+0014,U+0015,U+0000;[0|20@1520,0|21@3000,0|22@4500,0|0@6000,0|20@7500,0|21@9020,0|0@10500,0]
-../fonts/gpos_context1_multiple_subrules_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0000,U+0014,U+0015,U+0000;[0|20@1500,0|21@3020,0|22@4500,0|0@6000,0|20@7500,0|21@9020,0|0@10500,0]
+../fonts/gpos_context1_multiple_subrules_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0000,U+0014,U+0015,U+0000;[0|20@1520,0|21@3000,0|22@4500,0|0@6000,0|20@7500,0|21@9020,0|0@10500,0]
+../fonts/gpos_context1_multiple_subrules_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0000,U+0014,U+0015,U+0000;[0|20@1500,0|21@3020,0|22@4500,0|0@6000,0|20@7500,0|21@9020,0|0@10500,0]
diff --git a/test/shape/data/aots/tests/gpos_context1_next_glyph.tests b/test/shape/data/aots/tests/gpos_context1_next_glyph.tests
index 4bcd327..b3d7cf2 100644
--- a/test/shape/data/aots/tests/gpos_context1_next_glyph.tests
+++ b/test/shape/data/aots/tests/gpos_context1_next_glyph.tests
@@ -1 +1 @@
-../fonts/gpos_context1_next_glyph_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20@1520,0|20@3000,0|20@4520,0|20@6000,0|20@7500,0|0@9000,0]
+../fonts/gpos_context1_next_glyph_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20@1520,0|20@3000,0|20@4520,0|20@6000,0|20@7500,0|0@9000,0]
diff --git a/test/shape/data/aots/tests/gpos_context1_simple.tests b/test/shape/data/aots/tests/gpos_context1_simple.tests
index 5353a54..9b3c28b 100644
--- a/test/shape/data/aots/tests/gpos_context1_simple.tests
+++ b/test/shape/data/aots/tests/gpos_context1_simple.tests
@@ -1,3 +1,3 @@
-../fonts/gpos_context1_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0000;[0|20@1520,0|21@3020,0|22@4520,0|0@6000,0]
-../fonts/gpos_context1_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0000,U+0014,U+0015,U+0000;[0|20@1500,0|0@3000,0|20@4500,0|21@6000,0|0@7500,0]
-../fonts/gpos_context1_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20@1500,0|20@3020,0|20@4500,0|20@6000,0|20@7500,0|0@9000,0]
+../fonts/gpos_context1_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0000;[0|20@1520,0|21@3020,0|22@4520,0|0@6000,0]
+../fonts/gpos_context1_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0000,U+0014,U+0015,U+0000;[0|20@1500,0|0@3000,0|20@4500,0|21@6000,0|0@7500,0]
+../fonts/gpos_context1_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20@1500,0|20@3020,0|20@4500,0|20@6000,0|20@7500,0|0@9000,0]
diff --git a/test/shape/data/aots/tests/gpos_context1_successive.tests b/test/shape/data/aots/tests/gpos_context1_successive.tests
index 285e143..33a8c80 100644
--- a/test/shape/data/aots/tests/gpos_context1_successive.tests
+++ b/test/shape/data/aots/tests/gpos_context1_successive.tests
@@ -1 +1 @@
-../fonts/gpos_context1_successive_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4520,0|23@6000,0|0@7500,0]
+../fonts/gpos_context1_successive_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4520,0|23@6000,0|0@7500,0]
diff --git a/test/shape/data/aots/tests/gpos_context2_boundary.tests b/test/shape/data/aots/tests/gpos_context2_boundary.tests
index e93aa74..d46d963 100644
--- a/test/shape/data/aots/tests/gpos_context2_boundary.tests
+++ b/test/shape/data/aots/tests/gpos_context2_boundary.tests
@@ -1,2 +1,2 @@
-../fonts/gpos_context2_boundary_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20@1500,0|20@3000,0|20@4500,0|20@6000,0|20@7500,0|0@9000,0]
-../fonts/gpos_context2_boundary_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20@1520,0|20@3020,0|20@4520,0|20@6020,0|20@7520,0|0@9000,0]
+../fonts/gpos_context2_boundary_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20@1500,0|20@3000,0|20@4500,0|20@6000,0|20@7500,0|0@9000,0]
+../fonts/gpos_context2_boundary_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20@1520,0|20@3020,0|20@4520,0|20@6020,0|20@7520,0|0@9000,0]
diff --git a/test/shape/data/aots/tests/gpos_context2_classes.tests b/test/shape/data/aots/tests/gpos_context2_classes.tests
index d0fbc0d..77884ed 100644
--- a/test/shape/data/aots/tests/gpos_context2_classes.tests
+++ b/test/shape/data/aots/tests/gpos_context2_classes.tests
@@ -1,2 +1,2 @@
-../fonts/gpos_context2_classes_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+001A,U+001C,U+0018,U+0000,U+0015,U+001B,U+001A,U+0018,U+0000,U+0016,U+001B,U+001A,U+0018;[0|20@1500,0|26@3020,0|28@4500,0|24@6000,0|0@7500,0|21@9000,0|27@10520,0|26@12000,0|24@13500,0|0@15000,0|22@16500,0|27@18000,0|26@19500,0|24@21000,0]
-../fonts/gpos_context2_classes_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0016,U+001B,U+001A,U+0018,U+0000,U+0018,U+0018,U+001D,U+0016,U+0000,U+0016,U+001B,U+001A,U+0018;[0|22@1500,0|27@3020,0|26@4500,0|24@6000,0|0@7500,0|24@9000,0|24@10500,0|29@12020,0|22@13500,0|0@15000,0|22@16500,0|27@18020,0|26@19500,0|24@21000,0]
+../fonts/gpos_context2_classes_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+001A,U+001C,U+0018,U+0000,U+0015,U+001B,U+001A,U+0018,U+0000,U+0016,U+001B,U+001A,U+0018;[0|20@1500,0|26@3020,0|28@4500,0|24@6000,0|0@7500,0|21@9000,0|27@10520,0|26@12000,0|24@13500,0|0@15000,0|22@16500,0|27@18000,0|26@19500,0|24@21000,0]
+../fonts/gpos_context2_classes_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0016,U+001B,U+001A,U+0018,U+0000,U+0018,U+0018,U+001D,U+0016,U+0000,U+0016,U+001B,U+001A,U+0018;[0|22@1500,0|27@3020,0|26@4500,0|24@6000,0|0@7500,0|24@9000,0|24@10500,0|29@12020,0|22@13500,0|0@15000,0|22@16500,0|27@18020,0|26@19500,0|24@21000,0]
diff --git a/test/shape/data/aots/tests/gpos_context2_expansion.tests b/test/shape/data/aots/tests/gpos_context2_expansion.tests
index 74eb5ef..10ef83e 100644
--- a/test/shape/data/aots/tests/gpos_context2_expansion.tests
+++ b/test/shape/data/aots/tests/gpos_context2_expansion.tests
@@ -1 +1 @@
-../fonts/gpos_context2_expansion_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0000;[0|20@1500,0|21@3000,0|22@4500,0|0@6000,0]
+../fonts/gpos_context2_expansion_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0000;[0|20@1500,0|21@3000,0|22@4500,0|0@6000,0]
diff --git a/test/shape/data/aots/tests/gpos_context2_lookupflag.tests b/test/shape/data/aots/tests/gpos_context2_lookupflag.tests
index a9432a3..be7c1f3 100644
--- a/test/shape/data/aots/tests/gpos_context2_lookupflag.tests
+++ b/test/shape/data/aots/tests/gpos_context2_lookupflag.tests
@@ -1,2 +1,2 @@
-../fonts/gpos_context2_lookupflag_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000;[0|20@1520,0|90@3000,0|21@3020,0|91@4500,0|92@4500,0|22@4520,0|0@6000,0]
-../fonts/gpos_context2_lookupflag_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000;[0|20@1500,0|90@3000,0|21@3020,0|91@4500,0|92@4500,0|22@4500,0|0@6000,0]
+../fonts/gpos_context2_lookupflag_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000;[0|20@1520,0|90@3000,0|21@3020,0|91@4500,0|92@4500,0|22@4520,0|0@6000,0]
+../fonts/gpos_context2_lookupflag_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000;[0|20@1500,0|90@3000,0|21@3020,0|91@4500,0|92@4500,0|22@4500,0|0@6000,0]
diff --git a/test/shape/data/aots/tests/gpos_context2_multiple_subrules.tests b/test/shape/data/aots/tests/gpos_context2_multiple_subrules.tests
index d02cdde..4df79f5 100644
--- a/test/shape/data/aots/tests/gpos_context2_multiple_subrules.tests
+++ b/test/shape/data/aots/tests/gpos_context2_multiple_subrules.tests
@@ -1,2 +1,2 @@
-../fonts/gpos_context2_multiple_subrules_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0000,U+0014,U+0015,U+0000;[0|20@1520,0|21@3000,0|22@4500,0|0@6000,0|20@7500,0|21@9020,0|0@10500,0]
-../fonts/gpos_context2_multiple_subrules_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0000,U+0014,U+0015,U+0000;[0|20@1500,0|21@3020,0|22@4500,0|0@6000,0|20@7500,0|21@9020,0|0@10500,0]
+../fonts/gpos_context2_multiple_subrules_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0000,U+0014,U+0015,U+0000;[0|20@1520,0|21@3000,0|22@4500,0|0@6000,0|20@7500,0|21@9020,0|0@10500,0]
+../fonts/gpos_context2_multiple_subrules_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0000,U+0014,U+0015,U+0000;[0|20@1500,0|21@3020,0|22@4500,0|0@6000,0|20@7500,0|21@9020,0|0@10500,0]
diff --git a/test/shape/data/aots/tests/gpos_context2_next_glyph.tests b/test/shape/data/aots/tests/gpos_context2_next_glyph.tests
index 57855bd..501fa81 100644
--- a/test/shape/data/aots/tests/gpos_context2_next_glyph.tests
+++ b/test/shape/data/aots/tests/gpos_context2_next_glyph.tests
@@ -1 +1 @@
-../fonts/gpos_context2_next_glyph_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20@1520,0|20@3000,0|20@4520,0|20@6000,0|20@7500,0|0@9000,0]
+../fonts/gpos_context2_next_glyph_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20@1520,0|20@3000,0|20@4520,0|20@6000,0|20@7500,0|0@9000,0]
diff --git a/test/shape/data/aots/tests/gpos_context2_simple.tests b/test/shape/data/aots/tests/gpos_context2_simple.tests
index 15c65c2..4922d3e 100644
--- a/test/shape/data/aots/tests/gpos_context2_simple.tests
+++ b/test/shape/data/aots/tests/gpos_context2_simple.tests
@@ -1,3 +1,3 @@
-../fonts/gpos_context2_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0000;[0|20@1520,0|21@3020,0|22@4520,0|0@6000,0]
-../fonts/gpos_context2_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0000,U+0014,U+0015,U+0000;[0|20@1500,0|0@3000,0|20@4500,0|21@6000,0|0@7500,0]
-../fonts/gpos_context2_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20@1500,0|20@3020,0|20@4500,0|20@6000,0|20@7500,0|0@9000,0]
+../fonts/gpos_context2_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0000;[0|20@1520,0|21@3020,0|22@4520,0|0@6000,0]
+../fonts/gpos_context2_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0000,U+0014,U+0015,U+0000;[0|20@1500,0|0@3000,0|20@4500,0|21@6000,0|0@7500,0]
+../fonts/gpos_context2_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20@1500,0|20@3020,0|20@4500,0|20@6000,0|20@7500,0|0@9000,0]
diff --git a/test/shape/data/aots/tests/gpos_context2_successive.tests b/test/shape/data/aots/tests/gpos_context2_successive.tests
index 9aba57f..75478b4 100644
--- a/test/shape/data/aots/tests/gpos_context2_successive.tests
+++ b/test/shape/data/aots/tests/gpos_context2_successive.tests
@@ -1 +1 @@
-../fonts/gpos_context2_successive_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4520,0|23@6000,0|0@7500,0]
+../fonts/gpos_context2_successive_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4520,0|23@6000,0|0@7500,0]
diff --git a/test/shape/data/aots/tests/gpos_context3_boundary.tests b/test/shape/data/aots/tests/gpos_context3_boundary.tests
index 29f0ec5..02fa351 100644
--- a/test/shape/data/aots/tests/gpos_context3_boundary.tests
+++ b/test/shape/data/aots/tests/gpos_context3_boundary.tests
@@ -1,2 +1,2 @@
-../fonts/gpos_context3_boundary_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20@1500,0|20@3000,0|20@4500,0|20@6000,0|20@7500,0|0@9000,0]
-../fonts/gpos_context3_boundary_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20@1520,0|20@3020,0|20@4520,0|20@6020,0|20@7520,0|0@9000,0]
+../fonts/gpos_context3_boundary_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20@1500,0|20@3000,0|20@4500,0|20@6000,0|20@7500,0|0@9000,0]
+../fonts/gpos_context3_boundary_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20@1520,0|20@3020,0|20@4520,0|20@6020,0|20@7520,0|0@9000,0]
diff --git a/test/shape/data/aots/tests/gpos_context3_lookupflag.tests b/test/shape/data/aots/tests/gpos_context3_lookupflag.tests
index e1cb329..39144b0 100644
--- a/test/shape/data/aots/tests/gpos_context3_lookupflag.tests
+++ b/test/shape/data/aots/tests/gpos_context3_lookupflag.tests
@@ -1,2 +1,2 @@
-../fonts/gpos_context3_lookupflag_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000;[0|20@1520,0|90@3000,0|21@3020,0|91@4500,0|92@4500,0|22@4520,0|0@6000,0]
-../fonts/gpos_context3_lookupflag_f2.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000;[0|20@1500,0|90@3000,0|21@3020,0|91@4500,0|92@4500,0|22@4500,0|0@6000,0]
+../fonts/gpos_context3_lookupflag_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000;[0|20@1520,0|90@3000,0|21@3020,0|91@4500,0|92@4500,0|22@4520,0|0@6000,0]
+../fonts/gpos_context3_lookupflag_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000;[0|20@1500,0|90@3000,0|21@3020,0|91@4500,0|92@4500,0|22@4500,0|0@6000,0]
diff --git a/test/shape/data/aots/tests/gpos_context3_next_glyph.tests b/test/shape/data/aots/tests/gpos_context3_next_glyph.tests
index b5e70ba..98b40a8 100644
--- a/test/shape/data/aots/tests/gpos_context3_next_glyph.tests
+++ b/test/shape/data/aots/tests/gpos_context3_next_glyph.tests
@@ -1 +1 @@
-../fonts/gpos_context3_next_glyph_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20@1520,0|20@3000,0|20@4520,0|20@6000,0|20@7500,0|0@9000,0]
+../fonts/gpos_context3_next_glyph_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20@1520,0|20@3000,0|20@4520,0|20@6000,0|20@7500,0|0@9000,0]
diff --git a/test/shape/data/aots/tests/gpos_context3_simple.tests b/test/shape/data/aots/tests/gpos_context3_simple.tests
index 228afc1..4ac7be6 100644
--- a/test/shape/data/aots/tests/gpos_context3_simple.tests
+++ b/test/shape/data/aots/tests/gpos_context3_simple.tests
@@ -1,2 +1,2 @@
-../fonts/gpos_context3_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0000;[0|20@1520,0|21@3020,0|22@4520,0|0@6000,0]
-../fonts/gpos_context3_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0000,U+0014,U+0015,U+0000,U+0014,U+0015,U+0016,U+0000;[0|20@1500,0|0@3000,0|20@4500,0|21@6000,0|0@7500,0|20@9020,0|21@10520,0|22@12020,0|0@13500,0]
+../fonts/gpos_context3_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0000;[0|20@1520,0|21@3020,0|22@4520,0|0@6000,0]
+../fonts/gpos_context3_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0000,U+0014,U+0015,U+0000,U+0014,U+0015,U+0016,U+0000;[0|20@1500,0|0@3000,0|20@4500,0|21@6000,0|0@7500,0|20@9020,0|21@10520,0|22@12020,0|0@13500,0]
diff --git a/test/shape/data/aots/tests/gpos_context3_successive.tests b/test/shape/data/aots/tests/gpos_context3_successive.tests
index 658222d..a761f3c 100644
--- a/test/shape/data/aots/tests/gpos_context3_successive.tests
+++ b/test/shape/data/aots/tests/gpos_context3_successive.tests
@@ -1 +1 @@
-../fonts/gpos_context3_successive_f1.otf;--features="test" --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4520,0|23@6000,0|0@7500,0]
+../fonts/gpos_context3_successive_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20@1500,0|21@3020,0|22@4520,0|23@6000,0|0@7500,0]
diff --git a/test/shape/data/aots/tests/gsub1_1_lookupflag.tests b/test/shape/data/aots/tests/gsub1_1_lookupflag.tests
index 3f5722b..bdb0775 100644
--- a/test/shape/data/aots/tests/gsub1_1_lookupflag.tests
+++ b/test/shape/data/aots/tests/gsub1_1_lookupflag.tests
@@ -1 +1 @@
-../fonts/gsub1_1_lookupflag_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18|24|20|21]
+../fonts/gsub1_1_lookupflag_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18|24|20|21]
diff --git a/test/shape/data/aots/tests/gsub1_1_modulo.tests b/test/shape/data/aots/tests/gsub1_1_modulo.tests
index d716f18..933a16f 100644
--- a/test/shape/data/aots/tests/gsub1_1_modulo.tests
+++ b/test/shape/data/aots/tests/gsub1_1_modulo.tests
@@ -1 +1 @@
-../fonts/gsub1_1_modulo_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015,U+0016,U+0017,U+0018;[17|18|17|24|23|18|23|24]
+../fonts/gsub1_1_modulo_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015,U+0016,U+0017,U+0018;[17|18|17|24|23|18|23|24]
diff --git a/test/shape/data/aots/tests/gsub1_1_simple.tests b/test/shape/data/aots/tests/gsub1_1_simple.tests
index 11649be..038bffc 100644
--- a/test/shape/data/aots/tests/gsub1_1_simple.tests
+++ b/test/shape/data/aots/tests/gsub1_1_simple.tests
@@ -1 +1 @@
-../fonts/gsub1_1_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|23|24|20|21]
+../fonts/gsub1_1_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|23|24|20|21]
diff --git a/test/shape/data/aots/tests/gsub1_2_lookupflag.tests b/test/shape/data/aots/tests/gsub1_2_lookupflag.tests
index 13e523d..1ec5169 100644
--- a/test/shape/data/aots/tests/gsub1_2_lookupflag.tests
+++ b/test/shape/data/aots/tests/gsub1_2_lookupflag.tests
@@ -1 +1 @@
-../fonts/gsub1_2_lookupflag_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18|19|25|21]
+../fonts/gsub1_2_lookupflag_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|18|19|25|21]
diff --git a/test/shape/data/aots/tests/gsub1_2_simple.tests b/test/shape/data/aots/tests/gsub1_2_simple.tests
index 372c3e6..1b64506 100644
--- a/test/shape/data/aots/tests/gsub1_2_simple.tests
+++ b/test/shape/data/aots/tests/gsub1_2_simple.tests
@@ -1 +1 @@
-../fonts/gsub1_2_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|22|19|25|21]
+../fonts/gsub1_2_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|22|19|25|21]
diff --git a/test/shape/data/aots/tests/gsub2_1_lookupflag.tests b/test/shape/data/aots/tests/gsub2_1_lookupflag.tests
index 178d5d6..30a9888 100644
--- a/test/shape/data/aots/tests/gsub2_1_lookupflag.tests
+++ b/test/shape/data/aots/tests/gsub2_1_lookupflag.tests
@@ -1 +1 @@
-../fonts/gsub2_1_lookupflag_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0011;[17|18|22|23|17]
+../fonts/gsub2_1_lookupflag_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0011;[17|18|22|23|17]
diff --git a/test/shape/data/aots/tests/gsub2_1_multiple_sequences.tests b/test/shape/data/aots/tests/gsub2_1_multiple_sequences.tests
index 394a9a7..e14e8be 100644
--- a/test/shape/data/aots/tests/gsub2_1_multiple_sequences.tests
+++ b/test/shape/data/aots/tests/gsub2_1_multiple_sequences.tests
@@ -1 +1 @@
-../fonts/gsub2_1_multiple_sequences_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0011;[17|20|21|22|23|17]
+../fonts/gsub2_1_multiple_sequences_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0011;[17|20|21|22|23|17]
diff --git a/test/shape/data/aots/tests/gsub2_1_simple.tests b/test/shape/data/aots/tests/gsub2_1_simple.tests
index 817d92e..ca9b85c 100644
--- a/test/shape/data/aots/tests/gsub2_1_simple.tests
+++ b/test/shape/data/aots/tests/gsub2_1_simple.tests
@@ -1,2 +1,2 @@
-../fonts/gsub2_1_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013;[17|20|21|22|19]
-../fonts/gsub2_1_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0012;[17|20|21|22|19|20|21|22]
+../fonts/gsub2_1_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013;[17|20|21|22|19]
+../fonts/gsub2_1_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0012;[17|20|21|22|19|20|21|22]
diff --git a/test/shape/data/aots/tests/gsub3_1_lookupflag.tests b/test/shape/data/aots/tests/gsub3_1_lookupflag.tests
index 8233f0e..4789bb7 100644
--- a/test/shape/data/aots/tests/gsub3_1_lookupflag.tests
+++ b/test/shape/data/aots/tests/gsub3_1_lookupflag.tests
@@ -1 +1 @@
-../fonts/gsub3_1_lookupflag_f1.otf;--features="-test[4],test[5],test[6]=2,-test[7]" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0012,U+0012,U+0013,U+0013,U+0013,U+0013,U+0011;[17|18|18|18|19|22|23|19|17]
+../fonts/gsub3_1_lookupflag_f1.otf;--features="-test[4],test[5],test[6]=2,-test[7]" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0012,U+0012,U+0013,U+0013,U+0013,U+0013,U+0011;[17|18|18|18|19|22|23|19|17]
diff --git a/test/shape/data/aots/tests/gsub3_1_multiple.tests b/test/shape/data/aots/tests/gsub3_1_multiple.tests
index 47311aa..5f82cce 100644
--- a/test/shape/data/aots/tests/gsub3_1_multiple.tests
+++ b/test/shape/data/aots/tests/gsub3_1_multiple.tests
@@ -1 +1 @@
-../fonts/gsub3_1_multiple_f1.otf;--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;U+0011,U+0012,U+0012,U+0012,U+0012,U+0013,U+0013,U+0013,U+0013,U+0011;[17|18|20|21|18|19|22|23|19|17]
+../fonts/gsub3_1_multiple_f1.otf;--features="-test[1],test[2],test[3]=2,-test[4],-test[5],test[6],test[7]=2,-test[8]" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0012,U+0012,U+0012,U+0013,U+0013,U+0013,U+0013,U+0011;[17|18|20|21|18|19|22|23|19|17]
diff --git a/test/shape/data/aots/tests/gsub3_1_simple.tests b/test/shape/data/aots/tests/gsub3_1_simple.tests
index 2b9d7d1..ee92051 100644
--- a/test/shape/data/aots/tests/gsub3_1_simple.tests
+++ b/test/shape/data/aots/tests/gsub3_1_simple.tests
@@ -1 +1 @@
-../fonts/gsub3_1_simple_f1.otf;--features="-test[1],test[3],test[5]=2,test[7]=3,-test[9],test[11]" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0011,U+0012,U+0011,U+0012,U+0011,U+0012,U+0011,U+0012,U+0011,U+0012,U+0011;[17|18|17|20|17|21|17|22|17|18|17|20|17]
+../fonts/gsub3_1_simple_f1.otf;--features="-test[1],test[3],test[5]=2,test[7]=3,-test[9],test[11]" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0011,U+0012,U+0011,U+0012,U+0011,U+0012,U+0011,U+0012,U+0011,U+0012,U+0011;[17|18|17|20|17|21|17|22|17|18|17|20|17]
diff --git a/test/shape/data/aots/tests/gsub4_1_lookupflag.tests b/test/shape/data/aots/tests/gsub4_1_lookupflag.tests
index d65a59a..e54d9fb 100644
--- a/test/shape/data/aots/tests/gsub4_1_lookupflag.tests
+++ b/test/shape/data/aots/tests/gsub4_1_lookupflag.tests
@@ -1 +1 @@
-../fonts/gsub4_1_lookupflag_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0018,U+0012,U+0018,U+0013,U+0018,U+0018,U+0014,U+0018,U+0011,U+0012,U+0013,U+0016,U+0014;[17|24|23|24|24|24|24|17|18|19|22|20]
+../fonts/gsub4_1_lookupflag_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0018,U+0012,U+0018,U+0013,U+0018,U+0018,U+0014,U+0018,U+0011,U+0012,U+0013,U+0016,U+0014;[17|24|23|24|24|24|24|17|18|19|22|20]
diff --git a/test/shape/data/aots/tests/gsub4_1_multiple_ligatures.tests b/test/shape/data/aots/tests/gsub4_1_multiple_ligatures.tests
index c96d722..c1a82a7 100644
--- a/test/shape/data/aots/tests/gsub4_1_multiple_ligatures.tests
+++ b/test/shape/data/aots/tests/gsub4_1_multiple_ligatures.tests
@@ -1,2 +1,2 @@
-../fonts/gsub4_1_multiple_ligatures_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0011,U+0012,U+0013,U+0016,U+0014;[17|23|17|24|22|20]
-../fonts/gsub4_1_multiple_ligatures_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0011,U+0012,U+0013,U+0016,U+0014;[17|24|20|17|24|22|20]
+../fonts/gsub4_1_multiple_ligatures_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0011,U+0012,U+0013,U+0016,U+0014;[17|23|17|24|22|20]
+../fonts/gsub4_1_multiple_ligatures_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0011,U+0012,U+0013,U+0016,U+0014;[17|24|20|17|24|22|20]
diff --git a/test/shape/data/aots/tests/gsub4_1_multiple_ligsets.tests b/test/shape/data/aots/tests/gsub4_1_multiple_ligsets.tests
index e3f2437..58a874f 100644
--- a/test/shape/data/aots/tests/gsub4_1_multiple_ligsets.tests
+++ b/test/shape/data/aots/tests/gsub4_1_multiple_ligsets.tests
@@ -1 +1 @@
-../fonts/gsub4_1_multiple_ligsets_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0015,U+0014,U+0013,U+0016;[17|23|21|24|22]
+../fonts/gsub4_1_multiple_ligsets_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0015,U+0014,U+0013,U+0016;[17|23|21|24|22]
diff --git a/test/shape/data/aots/tests/gsub4_1_simple.tests b/test/shape/data/aots/tests/gsub4_1_simple.tests
index 0e56383..c5d6e90 100644
--- a/test/shape/data/aots/tests/gsub4_1_simple.tests
+++ b/test/shape/data/aots/tests/gsub4_1_simple.tests
@@ -1 +1 @@
-../fonts/gsub4_1_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0011,U+0012,U+0013,U+0016,U+0014;[17|23|17|18|19|22|20]
+../fonts/gsub4_1_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0011,U+0012,U+0013,U+0016,U+0014;[17|23|17|18|19|22|20]
diff --git a/test/shape/data/aots/tests/gsub7.tests b/test/shape/data/aots/tests/gsub7.tests
index 46bba7f..c40c3af 100644
--- a/test/shape/data/aots/tests/gsub7.tests
+++ b/test/shape/data/aots/tests/gsub7.tests
@@ -1,2 +1,2 @@
-../fonts/gsub7_font1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|23|24|20|21]
-../fonts/gsub7_font2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|23|29|20|21]
+../fonts/gsub7_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|23|24|20|21]
+../fonts/gsub7_font2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|23|29|20|21]
diff --git a/test/shape/data/aots/tests/gsub_chaining1_boundary.tests b/test/shape/data/aots/tests/gsub_chaining1_boundary.tests
index 43f37be..34408ef 100644
--- a/test/shape/data/aots/tests/gsub_chaining1_boundary.tests
+++ b/test/shape/data/aots/tests/gsub_chaining1_boundary.tests
@@ -1,4 +1,4 @@
-../fonts/gsub_chaining1_boundary_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|21|22|23|0]
-../fonts/gsub_chaining1_boundary_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|22|23|0]
-../fonts/gsub_chaining1_boundary_f3.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|22|23|0]
-../fonts/gsub_chaining1_boundary_f4.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|21|62|23|0]
+../fonts/gsub_chaining1_boundary_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|21|22|23|0]
+../fonts/gsub_chaining1_boundary_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|22|23|0]
+../fonts/gsub_chaining1_boundary_f3.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|22|23|0]
+../fonts/gsub_chaining1_boundary_f4.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|21|62|23|0]
diff --git a/test/shape/data/aots/tests/gsub_chaining1_lookupflag.tests b/test/shape/data/aots/tests/gsub_chaining1_lookupflag.tests
index 685cf19..a999517 100644
--- a/test/shape/data/aots/tests/gsub_chaining1_lookupflag.tests
+++ b/test/shape/data/aots/tests/gsub_chaining1_lookupflag.tests
@@ -1 +1 @@
-../fonts/gsub_chaining1_lookupflag_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+005A,U+0015,U+005B,U+0016,U+005C,U+0017,U+005D,U+005E,U+0018,U+005A,U+0019,U+005B,U+001A,U+0000;[0|20|90|21|91|22|92|63|93|94|24|90|25|91|26|0]
+../fonts/gsub_chaining1_lookupflag_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+005A,U+0015,U+005B,U+0016,U+005C,U+0017,U+005D,U+005E,U+0018,U+005A,U+0019,U+005B,U+001A,U+0000;[0|20|90|21|91|22|92|63|93|94|24|90|25|91|26|0]
diff --git a/test/shape/data/aots/tests/gsub_chaining1_multiple_subrules.tests b/test/shape/data/aots/tests/gsub_chaining1_multiple_subrules.tests
index 6a0993a..39a1564 100644
--- a/test/shape/data/aots/tests/gsub_chaining1_multiple_subrules.tests
+++ b/test/shape/data/aots/tests/gsub_chaining1_multiple_subrules.tests
@@ -1,2 +1,2 @@
-../fonts/gsub_chaining1_multiple_subrules_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|22|23|24|0|20|21|62|23|0]
-../fonts/gsub_chaining1_multiple_subrules_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|21|62|23|24|0|20|21|62|23|0]
+../fonts/gsub_chaining1_multiple_subrules_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|22|23|24|0|20|21|62|23|0]
+../fonts/gsub_chaining1_multiple_subrules_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|21|62|23|24|0|20|21|62|23|0]
diff --git a/test/shape/data/aots/tests/gsub_chaining1_next_glyph.tests b/test/shape/data/aots/tests/gsub_chaining1_next_glyph.tests
index f66f5e2..859acba 100644
--- a/test/shape/data/aots/tests/gsub_chaining1_next_glyph.tests
+++ b/test/shape/data/aots/tests/gsub_chaining1_next_glyph.tests
@@ -1 +1 @@
-../fonts/gsub_chaining1_next_glyph_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|62|63|0]
+../fonts/gsub_chaining1_next_glyph_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|62|63|0]
diff --git a/test/shape/data/aots/tests/gsub_chaining1_simple.tests b/test/shape/data/aots/tests/gsub_chaining1_simple.tests
index f812b55..757845d 100644
--- a/test/shape/data/aots/tests/gsub_chaining1_simple.tests
+++ b/test/shape/data/aots/tests/gsub_chaining1_simple.tests
@@ -1,11 +1,11 @@
-../fonts/gsub_chaining1_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|62|23|0]
-../fonts/gsub_chaining1_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[0|20|21|62|23|24|25|26|0]
-../fonts/gsub_chaining1_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+0000,U+0000;[0|20|21|22|23|24|25|0|0]
-../fonts/gsub_chaining1_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019;[0|20|21|22|23|24|25]
-../fonts/gsub_chaining1_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018;[0|20|21|22|23|24]
-../fonts/gsub_chaining1_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0000,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[0|0|21|22|23|24|25|26|0]
-../fonts/gsub_chaining1_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[21|22|23|24|25|26|0]
-../fonts/gsub_chaining1_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[22|23|24|25|26|0]
-../fonts/gsub_chaining1_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0000,U+0018,U+0019,U+001A,U+0000;[0|20|21|22|0|24|25|26|0]
-../fonts/gsub_chaining1_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017;[0|20|21|22|23]
-../fonts/gsub_chaining1_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016;[0|20|21|22]
+../fonts/gsub_chaining1_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|62|23|0]
+../fonts/gsub_chaining1_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[0|20|21|62|23|24|25|26|0]
+../fonts/gsub_chaining1_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+0000,U+0000;[0|20|21|22|23|24|25|0|0]
+../fonts/gsub_chaining1_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019;[0|20|21|22|23|24|25]
+../fonts/gsub_chaining1_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018;[0|20|21|22|23|24]
+../fonts/gsub_chaining1_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0000,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[0|0|21|22|23|24|25|26|0]
+../fonts/gsub_chaining1_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[21|22|23|24|25|26|0]
+../fonts/gsub_chaining1_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[22|23|24|25|26|0]
+../fonts/gsub_chaining1_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0000,U+0018,U+0019,U+001A,U+0000;[0|20|21|22|0|24|25|26|0]
+../fonts/gsub_chaining1_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017;[0|20|21|22|23]
+../fonts/gsub_chaining1_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016;[0|20|21|22]
diff --git a/test/shape/data/aots/tests/gsub_chaining1_successive.tests b/test/shape/data/aots/tests/gsub_chaining1_successive.tests
index 1dce9a1..80650e2 100644
--- a/test/shape/data/aots/tests/gsub_chaining1_successive.tests
+++ b/test/shape/data/aots/tests/gsub_chaining1_successive.tests
@@ -1 +1 @@
-../fonts/gsub_chaining1_successive_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0019,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000;[0|25|20|61|63|24|0]
+../fonts/gsub_chaining1_successive_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0019,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000;[0|25|20|61|63|24|0]
diff --git a/test/shape/data/aots/tests/gsub_chaining2_boundary.tests b/test/shape/data/aots/tests/gsub_chaining2_boundary.tests
index eacd1d5..f7796d8 100644
--- a/test/shape/data/aots/tests/gsub_chaining2_boundary.tests
+++ b/test/shape/data/aots/tests/gsub_chaining2_boundary.tests
@@ -1,4 +1,4 @@
-../fonts/gsub_chaining2_boundary_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|21|22|23|0]
-../fonts/gsub_chaining2_boundary_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|22|23|0]
-../fonts/gsub_chaining2_boundary_f3.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|22|23|0]
-../fonts/gsub_chaining2_boundary_f4.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|21|62|23|0]
+../fonts/gsub_chaining2_boundary_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|21|22|23|0]
+../fonts/gsub_chaining2_boundary_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|22|23|0]
+../fonts/gsub_chaining2_boundary_f3.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|22|23|0]
+../fonts/gsub_chaining2_boundary_f4.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|21|62|23|0]
diff --git a/test/shape/data/aots/tests/gsub_chaining2_lookupflag.tests b/test/shape/data/aots/tests/gsub_chaining2_lookupflag.tests
index a368e23..4296f8f 100644
--- a/test/shape/data/aots/tests/gsub_chaining2_lookupflag.tests
+++ b/test/shape/data/aots/tests/gsub_chaining2_lookupflag.tests
@@ -1 +1 @@
-../fonts/gsub_chaining2_lookupflag_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+005A,U+0015,U+005B,U+0016,U+005C,U+0017,U+005D,U+005E,U+0018,U+005A,U+0019,U+005B,U+001A,U+0000;[0|20|90|21|91|22|92|63|93|94|24|90|25|91|26|0]
+../fonts/gsub_chaining2_lookupflag_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+005A,U+0015,U+005B,U+0016,U+005C,U+0017,U+005D,U+005E,U+0018,U+005A,U+0019,U+005B,U+001A,U+0000;[0|20|90|21|91|22|92|63|93|94|24|90|25|91|26|0]
diff --git a/test/shape/data/aots/tests/gsub_chaining2_multiple_subrules.tests b/test/shape/data/aots/tests/gsub_chaining2_multiple_subrules.tests
index 7e54033..47a725c 100644
--- a/test/shape/data/aots/tests/gsub_chaining2_multiple_subrules.tests
+++ b/test/shape/data/aots/tests/gsub_chaining2_multiple_subrules.tests
@@ -1,2 +1,2 @@
-../fonts/gsub_chaining2_multiple_subrules_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|22|23|24|0|20|21|62|23|0]
-../fonts/gsub_chaining2_multiple_subrules_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|21|62|23|24|0|20|21|62|23|0]
+../fonts/gsub_chaining2_multiple_subrules_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|22|23|24|0|20|21|62|23|0]
+../fonts/gsub_chaining2_multiple_subrules_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|21|62|23|24|0|20|21|62|23|0]
diff --git a/test/shape/data/aots/tests/gsub_chaining2_next_glyph.tests b/test/shape/data/aots/tests/gsub_chaining2_next_glyph.tests
index 350902b..f986b46 100644
--- a/test/shape/data/aots/tests/gsub_chaining2_next_glyph.tests
+++ b/test/shape/data/aots/tests/gsub_chaining2_next_glyph.tests
@@ -1 +1 @@
-../fonts/gsub_chaining2_next_glyph_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|62|63|0]
+../fonts/gsub_chaining2_next_glyph_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|62|63|0]
diff --git a/test/shape/data/aots/tests/gsub_chaining2_simple.tests b/test/shape/data/aots/tests/gsub_chaining2_simple.tests
index 1cdb9f8..a3c392b 100644
--- a/test/shape/data/aots/tests/gsub_chaining2_simple.tests
+++ b/test/shape/data/aots/tests/gsub_chaining2_simple.tests
@@ -1,11 +1,11 @@
-../fonts/gsub_chaining2_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|62|23|0]
-../fonts/gsub_chaining2_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[0|20|21|62|23|24|25|26|0]
-../fonts/gsub_chaining2_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+0000,U+0000;[0|20|21|22|23|24|25|0|0]
-../fonts/gsub_chaining2_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019;[0|20|21|22|23|24|25]
-../fonts/gsub_chaining2_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018;[0|20|21|22|23|24]
-../fonts/gsub_chaining2_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0000,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[0|0|21|22|23|24|25|26|0]
-../fonts/gsub_chaining2_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[21|22|23|24|25|26|0]
-../fonts/gsub_chaining2_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[22|23|24|25|26|0]
-../fonts/gsub_chaining2_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0000,U+0018,U+0019,U+001A,U+0000;[0|20|21|22|0|24|25|26|0]
-../fonts/gsub_chaining2_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017;[0|20|21|22|23]
-../fonts/gsub_chaining2_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016;[0|20|21|22]
+../fonts/gsub_chaining2_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|62|23|0]
+../fonts/gsub_chaining2_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[0|20|21|62|23|24|25|26|0]
+../fonts/gsub_chaining2_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+0000,U+0000;[0|20|21|22|23|24|25|0|0]
+../fonts/gsub_chaining2_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019;[0|20|21|22|23|24|25]
+../fonts/gsub_chaining2_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018;[0|20|21|22|23|24]
+../fonts/gsub_chaining2_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0000,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[0|0|21|22|23|24|25|26|0]
+../fonts/gsub_chaining2_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[21|22|23|24|25|26|0]
+../fonts/gsub_chaining2_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[22|23|24|25|26|0]
+../fonts/gsub_chaining2_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0000,U+0018,U+0019,U+001A,U+0000;[0|20|21|22|0|24|25|26|0]
+../fonts/gsub_chaining2_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017;[0|20|21|22|23]
+../fonts/gsub_chaining2_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016;[0|20|21|22]
diff --git a/test/shape/data/aots/tests/gsub_chaining2_successive.tests b/test/shape/data/aots/tests/gsub_chaining2_successive.tests
index ab872a4..609b2fc 100644
--- a/test/shape/data/aots/tests/gsub_chaining2_successive.tests
+++ b/test/shape/data/aots/tests/gsub_chaining2_successive.tests
@@ -1 +1 @@
-../fonts/gsub_chaining2_successive_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0019,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000;[0|25|20|61|63|24|0]
+../fonts/gsub_chaining2_successive_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0019,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000;[0|25|20|61|63|24|0]
diff --git a/test/shape/data/aots/tests/gsub_chaining3_boundary.tests b/test/shape/data/aots/tests/gsub_chaining3_boundary.tests
index a9ce264..ec12f5e 100644
--- a/test/shape/data/aots/tests/gsub_chaining3_boundary.tests
+++ b/test/shape/data/aots/tests/gsub_chaining3_boundary.tests
@@ -1,4 +1,4 @@
-../fonts/gsub_chaining3_boundary_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|21|22|23|0]
-../fonts/gsub_chaining3_boundary_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|22|23|0]
-../fonts/gsub_chaining3_boundary_f3.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|22|23|0]
-../fonts/gsub_chaining3_boundary_f4.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|21|62|23|0]
+../fonts/gsub_chaining3_boundary_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|21|22|23|0]
+../fonts/gsub_chaining3_boundary_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|22|23|0]
+../fonts/gsub_chaining3_boundary_f3.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|22|23|0]
+../fonts/gsub_chaining3_boundary_f4.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|21|62|23|0]
diff --git a/test/shape/data/aots/tests/gsub_chaining3_lookupflag.tests b/test/shape/data/aots/tests/gsub_chaining3_lookupflag.tests
index ef6682e..12632f7 100644
--- a/test/shape/data/aots/tests/gsub_chaining3_lookupflag.tests
+++ b/test/shape/data/aots/tests/gsub_chaining3_lookupflag.tests
@@ -1 +1 @@
-../fonts/gsub_chaining3_lookupflag_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+005A,U+0015,U+005B,U+0016,U+005C,U+0017,U+005D,U+005E,U+0018,U+005A,U+0019,U+005B,U+001A,U+0000;[0|20|90|21|91|22|92|63|93|94|24|90|25|91|26|0]
+../fonts/gsub_chaining3_lookupflag_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+005A,U+0015,U+005B,U+0016,U+005C,U+0017,U+005D,U+005E,U+0018,U+005A,U+0019,U+005B,U+001A,U+0000;[0|20|90|21|91|22|92|63|93|94|24|90|25|91|26|0]
diff --git a/test/shape/data/aots/tests/gsub_chaining3_next_glyph.tests b/test/shape/data/aots/tests/gsub_chaining3_next_glyph.tests
index 6245fa9..22f7fde 100644
--- a/test/shape/data/aots/tests/gsub_chaining3_next_glyph.tests
+++ b/test/shape/data/aots/tests/gsub_chaining3_next_glyph.tests
@@ -1 +1 @@
-../fonts/gsub_chaining3_next_glyph_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0016,U+0015,U+0016,U+0015,U+0016,U+0015,U+0000;[0|22|61|22|61|22|21|0]
+../fonts/gsub_chaining3_next_glyph_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0016,U+0015,U+0016,U+0015,U+0016,U+0015,U+0000;[0|22|61|22|61|22|21|0]
diff --git a/test/shape/data/aots/tests/gsub_chaining3_simple.tests b/test/shape/data/aots/tests/gsub_chaining3_simple.tests
index b930260..8201338 100644
--- a/test/shape/data/aots/tests/gsub_chaining3_simple.tests
+++ b/test/shape/data/aots/tests/gsub_chaining3_simple.tests
@@ -1,11 +1,11 @@
-../fonts/gsub_chaining3_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|62|23|0]
-../fonts/gsub_chaining3_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[0|20|21|62|23|24|25|26|0]
-../fonts/gsub_chaining3_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+0000,U+0000;[0|20|21|22|23|24|25|0|0]
-../fonts/gsub_chaining3_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019;[0|20|21|22|23|24|25]
-../fonts/gsub_chaining3_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018;[0|20|21|22|23|24]
-../fonts/gsub_chaining3_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0000,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[0|0|21|22|23|24|25|26|0]
-../fonts/gsub_chaining3_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[21|22|23|24|25|26|0]
-../fonts/gsub_chaining3_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[22|23|24|25|26|0]
-../fonts/gsub_chaining3_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0000,U+0018,U+0019,U+001A,U+0000;[0|20|21|22|0|24|25|26|0]
-../fonts/gsub_chaining3_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017;[0|20|21|22|23]
-../fonts/gsub_chaining3_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016;[0|20|21|22]
+../fonts/gsub_chaining3_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|62|23|0]
+../fonts/gsub_chaining3_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[0|20|21|62|23|24|25|26|0]
+../fonts/gsub_chaining3_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+0000,U+0000;[0|20|21|22|23|24|25|0|0]
+../fonts/gsub_chaining3_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019;[0|20|21|22|23|24|25]
+../fonts/gsub_chaining3_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0018;[0|20|21|22|23|24]
+../fonts/gsub_chaining3_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0000,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[0|0|21|22|23|24|25|26|0]
+../fonts/gsub_chaining3_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[21|22|23|24|25|26|0]
+../fonts/gsub_chaining3_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0016,U+0017,U+0018,U+0019,U+001A,U+0000;[22|23|24|25|26|0]
+../fonts/gsub_chaining3_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0000,U+0018,U+0019,U+001A,U+0000;[0|20|21|22|0|24|25|26|0]
+../fonts/gsub_chaining3_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017;[0|20|21|22|23]
+../fonts/gsub_chaining3_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016;[0|20|21|22]
diff --git a/test/shape/data/aots/tests/gsub_chaining3_successive.tests b/test/shape/data/aots/tests/gsub_chaining3_successive.tests
index d8d34df..1776858 100644
--- a/test/shape/data/aots/tests/gsub_chaining3_successive.tests
+++ b/test/shape/data/aots/tests/gsub_chaining3_successive.tests
@@ -1 +1 @@
-../fonts/gsub_chaining3_successive_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0019,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000;[0|25|20|61|63|24|0]
+../fonts/gsub_chaining3_successive_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0019,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000;[0|25|20|61|63|24|0]
diff --git a/test/shape/data/aots/tests/gsub_context1_boundary.tests b/test/shape/data/aots/tests/gsub_context1_boundary.tests
index 22de4e0..2244b91 100644
--- a/test/shape/data/aots/tests/gsub_context1_boundary.tests
+++ b/test/shape/data/aots/tests/gsub_context1_boundary.tests
@@ -1,2 +1,2 @@
-../fonts/gsub_context1_boundary_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20|20|20|20|20|0]
-../fonts/gsub_context1_boundary_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|60|60|60|60|60|0]
+../fonts/gsub_context1_boundary_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20|20|20|20|20|0]
+../fonts/gsub_context1_boundary_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|60|60|60|60|60|0]
diff --git a/test/shape/data/aots/tests/gsub_context1_expansion.tests b/test/shape/data/aots/tests/gsub_context1_expansion.tests
index c31f515..98d6f1f 100644
--- a/test/shape/data/aots/tests/gsub_context1_expansion.tests
+++ b/test/shape/data/aots/tests/gsub_context1_expansion.tests
@@ -1 +1 @@
-../fonts/gsub_context1_expansion_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0000;[0|20|61|62|63|22|0]
+../fonts/gsub_context1_expansion_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0000;[0|20|61|62|63|22|0]
diff --git a/test/shape/data/aots/tests/gsub_context1_lookupflag.tests b/test/shape/data/aots/tests/gsub_context1_lookupflag.tests
index 57cd900..2795b9d 100644
--- a/test/shape/data/aots/tests/gsub_context1_lookupflag.tests
+++ b/test/shape/data/aots/tests/gsub_context1_lookupflag.tests
@@ -1,2 +1,2 @@
-../fonts/gsub_context1_lookupflag_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000;[0|60|90|61|91|92|62|0]
-../fonts/gsub_context1_lookupflag_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000;[0|20|90|61|91|92|0]
+../fonts/gsub_context1_lookupflag_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000;[0|60|90|61|91|92|62|0]
+../fonts/gsub_context1_lookupflag_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000;[0|20|90|61|91|92|0]
diff --git a/test/shape/data/aots/tests/gsub_context1_multiple_subrules.tests b/test/shape/data/aots/tests/gsub_context1_multiple_subrules.tests
index 6ade722..0c3b06d 100644
--- a/test/shape/data/aots/tests/gsub_context1_multiple_subrules.tests
+++ b/test/shape/data/aots/tests/gsub_context1_multiple_subrules.tests
@@ -1,2 +1,2 @@
-../fonts/gsub_context1_multiple_subrules_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0000,U+0014,U+0015,U+0000;[0|60|21|22|0|20|61|0]
-../fonts/gsub_context1_multiple_subrules_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0000,U+0014,U+0015,U+0000;[0|20|61|22|0|20|61|0]
+../fonts/gsub_context1_multiple_subrules_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0000,U+0014,U+0015,U+0000;[0|60|21|22|0|20|61|0]
+../fonts/gsub_context1_multiple_subrules_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0000,U+0014,U+0015,U+0000;[0|20|61|22|0|20|61|0]
diff --git a/test/shape/data/aots/tests/gsub_context1_next_glyph.tests b/test/shape/data/aots/tests/gsub_context1_next_glyph.tests
index 824f068..2b97147 100644
--- a/test/shape/data/aots/tests/gsub_context1_next_glyph.tests
+++ b/test/shape/data/aots/tests/gsub_context1_next_glyph.tests
@@ -1 +1 @@
-../fonts/gsub_context1_next_glyph_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|60|20|60|20|20|0]
+../fonts/gsub_context1_next_glyph_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|60|20|60|20|20|0]
diff --git a/test/shape/data/aots/tests/gsub_context1_simple.tests b/test/shape/data/aots/tests/gsub_context1_simple.tests
index 496eee6..55ae682 100644
--- a/test/shape/data/aots/tests/gsub_context1_simple.tests
+++ b/test/shape/data/aots/tests/gsub_context1_simple.tests
@@ -1,3 +1,3 @@
-../fonts/gsub_context1_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0000;[0|60|61|62|0]
-../fonts/gsub_context1_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0000,U+0014,U+0015,U+0000;[0|20|0|20|21|0]
-../fonts/gsub_context1_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20|60|20|20|20|0]
+../fonts/gsub_context1_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0000;[0|60|61|62|0]
+../fonts/gsub_context1_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0000,U+0014,U+0015,U+0000;[0|20|0|20|21|0]
+../fonts/gsub_context1_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20|60|20|20|20|0]
diff --git a/test/shape/data/aots/tests/gsub_context1_successive.tests b/test/shape/data/aots/tests/gsub_context1_successive.tests
index a04b437..9e8793a 100644
--- a/test/shape/data/aots/tests/gsub_context1_successive.tests
+++ b/test/shape/data/aots/tests/gsub_context1_successive.tests
@@ -1 +1 @@
-../fonts/gsub_context1_successive_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|63|0]
+../fonts/gsub_context1_successive_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|63|0]
diff --git a/test/shape/data/aots/tests/gsub_context2_boundary.tests b/test/shape/data/aots/tests/gsub_context2_boundary.tests
index 65963af..cd6319b 100644
--- a/test/shape/data/aots/tests/gsub_context2_boundary.tests
+++ b/test/shape/data/aots/tests/gsub_context2_boundary.tests
@@ -1,2 +1,2 @@
-../fonts/gsub_context2_boundary_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20|20|20|20|20|0]
-../fonts/gsub_context2_boundary_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|60|60|60|60|60|0]
+../fonts/gsub_context2_boundary_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20|20|20|20|20|0]
+../fonts/gsub_context2_boundary_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|60|60|60|60|60|0]
diff --git a/test/shape/data/aots/tests/gsub_context2_classes.tests b/test/shape/data/aots/tests/gsub_context2_classes.tests
index eac17b1..b392a8c2 100644
--- a/test/shape/data/aots/tests/gsub_context2_classes.tests
+++ b/test/shape/data/aots/tests/gsub_context2_classes.tests
@@ -1,2 +1,2 @@
-../fonts/gsub_context2_classes_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+001A,U+001C,U+0018,U+0000,U+0015,U+001B,U+001A,U+0018,U+0000,U+0016,U+001B,U+001A,U+0018;[0|20|66|28|24|0|21|67|26|24|0|22|27|26|24]
-../fonts/gsub_context2_classes_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0016,U+001B,U+001A,U+0018,U+0000,U+0018,U+0018,U+001D,U+0016,U+0000,U+0016,U+001B,U+001A,U+0018;[0|22|67|26|24|0|24|24|69|22|0|22|67|26|24]
+../fonts/gsub_context2_classes_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+001A,U+001C,U+0018,U+0000,U+0015,U+001B,U+001A,U+0018,U+0000,U+0016,U+001B,U+001A,U+0018;[0|20|66|28|24|0|21|67|26|24|0|22|27|26|24]
+../fonts/gsub_context2_classes_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0016,U+001B,U+001A,U+0018,U+0000,U+0018,U+0018,U+001D,U+0016,U+0000,U+0016,U+001B,U+001A,U+0018;[0|22|67|26|24|0|24|24|69|22|0|22|67|26|24]
diff --git a/test/shape/data/aots/tests/gsub_context2_expansion.tests b/test/shape/data/aots/tests/gsub_context2_expansion.tests
index 4c37118..b95ee0a 100644
--- a/test/shape/data/aots/tests/gsub_context2_expansion.tests
+++ b/test/shape/data/aots/tests/gsub_context2_expansion.tests
@@ -1 +1 @@
-../fonts/gsub_context2_expansion_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0000;[0|20|61|62|63|22|0]
+../fonts/gsub_context2_expansion_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0000;[0|20|61|62|63|22|0]
diff --git a/test/shape/data/aots/tests/gsub_context2_lookupflag.tests b/test/shape/data/aots/tests/gsub_context2_lookupflag.tests
index a4d229d..8c4bbb1 100644
--- a/test/shape/data/aots/tests/gsub_context2_lookupflag.tests
+++ b/test/shape/data/aots/tests/gsub_context2_lookupflag.tests
@@ -1,2 +1,2 @@
-../fonts/gsub_context2_lookupflag_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000;[0|60|90|61|91|92|62|0]
-../fonts/gsub_context2_lookupflag_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000;[0|20|90|61|91|92|0]
+../fonts/gsub_context2_lookupflag_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000;[0|60|90|61|91|92|62|0]
+../fonts/gsub_context2_lookupflag_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000;[0|20|90|61|91|92|0]
diff --git a/test/shape/data/aots/tests/gsub_context2_multiple_subrules.tests b/test/shape/data/aots/tests/gsub_context2_multiple_subrules.tests
index 22495b8..74d248f 100644
--- a/test/shape/data/aots/tests/gsub_context2_multiple_subrules.tests
+++ b/test/shape/data/aots/tests/gsub_context2_multiple_subrules.tests
@@ -1,2 +1,2 @@
-../fonts/gsub_context2_multiple_subrules_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0000,U+0014,U+0015,U+0000;[0|60|21|22|0|20|61|0]
-../fonts/gsub_context2_multiple_subrules_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0000,U+0014,U+0015,U+0000;[0|20|61|22|0|20|61|0]
+../fonts/gsub_context2_multiple_subrules_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0000,U+0014,U+0015,U+0000;[0|60|21|22|0|20|61|0]
+../fonts/gsub_context2_multiple_subrules_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0000,U+0014,U+0015,U+0000;[0|20|61|22|0|20|61|0]
diff --git a/test/shape/data/aots/tests/gsub_context2_next_glyph.tests b/test/shape/data/aots/tests/gsub_context2_next_glyph.tests
index ea2fad2..dbd6f7a 100644
--- a/test/shape/data/aots/tests/gsub_context2_next_glyph.tests
+++ b/test/shape/data/aots/tests/gsub_context2_next_glyph.tests
@@ -1 +1 @@
-../fonts/gsub_context2_next_glyph_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|60|20|60|20|20|0]
+../fonts/gsub_context2_next_glyph_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|60|20|60|20|20|0]
diff --git a/test/shape/data/aots/tests/gsub_context2_simple.tests b/test/shape/data/aots/tests/gsub_context2_simple.tests
index c58947b..f7d6e10 100644
--- a/test/shape/data/aots/tests/gsub_context2_simple.tests
+++ b/test/shape/data/aots/tests/gsub_context2_simple.tests
@@ -1,3 +1,3 @@
-../fonts/gsub_context2_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0000;[0|60|61|62|0]
-../fonts/gsub_context2_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0000,U+0014,U+0015,U+0000;[0|20|0|20|21|0]
-../fonts/gsub_context2_simple_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20|60|20|20|20|0]
+../fonts/gsub_context2_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0000;[0|60|61|62|0]
+../fonts/gsub_context2_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0000,U+0014,U+0015,U+0000;[0|20|0|20|21|0]
+../fonts/gsub_context2_simple_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20|60|20|20|20|0]
diff --git a/test/shape/data/aots/tests/gsub_context2_successive.tests b/test/shape/data/aots/tests/gsub_context2_successive.tests
index 7ccdecf..7b19b53 100644
--- a/test/shape/data/aots/tests/gsub_context2_successive.tests
+++ b/test/shape/data/aots/tests/gsub_context2_successive.tests
@@ -1 +1 @@
-../fonts/gsub_context2_successive_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|63|0]
+../fonts/gsub_context2_successive_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|63|0]
diff --git a/test/shape/data/aots/tests/gsub_context3_boundary.tests b/test/shape/data/aots/tests/gsub_context3_boundary.tests
index 7ad6fcb..4a14b13 100644
--- a/test/shape/data/aots/tests/gsub_context3_boundary.tests
+++ b/test/shape/data/aots/tests/gsub_context3_boundary.tests
@@ -1,2 +1,2 @@
-../fonts/gsub_context3_boundary_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20|20|20|20|20|0]
-../fonts/gsub_context3_boundary_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|60|60|60|60|60|0]
+../fonts/gsub_context3_boundary_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|20|20|20|20|20|0]
+../fonts/gsub_context3_boundary_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|60|60|60|60|60|0]
diff --git a/test/shape/data/aots/tests/gsub_context3_lookupflag.tests b/test/shape/data/aots/tests/gsub_context3_lookupflag.tests
index 3cdc87e..c47ace9 100644
--- a/test/shape/data/aots/tests/gsub_context3_lookupflag.tests
+++ b/test/shape/data/aots/tests/gsub_context3_lookupflag.tests
@@ -1,2 +1,2 @@
-../fonts/gsub_context3_lookupflag_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000;[0|60|90|61|91|92|62|0]
-../fonts/gsub_context3_lookupflag_f2.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000;[0|20|90|61|91|92|0]
+../fonts/gsub_context3_lookupflag_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000;[0|60|90|61|91|92|62|0]
+../fonts/gsub_context3_lookupflag_f2.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000;[0|20|90|61|91|92|0]
diff --git a/test/shape/data/aots/tests/gsub_context3_next_glyph.tests b/test/shape/data/aots/tests/gsub_context3_next_glyph.tests
index 462019a..15b10fc 100644
--- a/test/shape/data/aots/tests/gsub_context3_next_glyph.tests
+++ b/test/shape/data/aots/tests/gsub_context3_next_glyph.tests
@@ -1 +1 @@
-../fonts/gsub_context3_next_glyph_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|60|20|60|20|20|0]
+../fonts/gsub_context3_next_glyph_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000;[0|60|20|60|20|20|0]
diff --git a/test/shape/data/aots/tests/gsub_context3_simple.tests b/test/shape/data/aots/tests/gsub_context3_simple.tests
index d1b628a..7b9ee74 100644
--- a/test/shape/data/aots/tests/gsub_context3_simple.tests
+++ b/test/shape/data/aots/tests/gsub_context3_simple.tests
@@ -1,2 +1,2 @@
-../fonts/gsub_context3_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0000;[0|60|61|62|0]
-../fonts/gsub_context3_simple_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0000,U+0014,U+0015,U+0000,U+0014,U+0015,U+0016,U+0000;[0|20|0|20|21|0|60|61|62|0]
+../fonts/gsub_context3_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0000;[0|60|61|62|0]
+../fonts/gsub_context3_simple_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0000,U+0014,U+0015,U+0000,U+0014,U+0015,U+0016,U+0000;[0|20|0|20|21|0|60|61|62|0]
diff --git a/test/shape/data/aots/tests/gsub_context3_successive.tests b/test/shape/data/aots/tests/gsub_context3_successive.tests
index 99ec256..f10a22d 100644
--- a/test/shape/data/aots/tests/gsub_context3_successive.tests
+++ b/test/shape/data/aots/tests/gsub_context3_successive.tests
@@ -1 +1 @@
-../fonts/gsub_context3_successive_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|63|0]
+../fonts/gsub_context3_successive_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0000,U+0014,U+0015,U+0016,U+0017,U+0000;[0|20|61|63|0]
diff --git a/test/shape/data/aots/tests/lookupflag_ignore_attach.tests b/test/shape/data/aots/tests/lookupflag_ignore_attach.tests
index 16a22e0..8544114 100644
--- a/test/shape/data/aots/tests/lookupflag_ignore_attach.tests
+++ b/test/shape/data/aots/tests/lookupflag_ignore_attach.tests
@@ -1,5 +1,5 @@
-../fonts/lookupflag_ignore_attach_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+000A,U+000B,U+000D,U+001A,U+000A;[10|15|10]
-../fonts/lookupflag_ignore_attach_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+000A,U+000B,U+0015,U+000D,U+0016,U+0017,U+001D,U+001A,U+000A;[10|15|21|22|23|29|10]
-../fonts/lookupflag_ignore_attach_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+000A,U+000B,U+0015,U+000D,U+0016,U+001B,U+001A,U+000A;[10|11|21|13|22|27|26|10]
-../fonts/lookupflag_ignore_attach_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+000A,U+000B,U+001B,U+000D,U+0016,U+0017,U+001A,U+000A;[10|11|27|13|22|23|26|10]
-../fonts/lookupflag_ignore_attach_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+000A,U+000B,U+001B,U+000D,U+000E,U+0017,U+001A,U+000A;[10|11|27|13|14|23|26|10]
+../fonts/lookupflag_ignore_attach_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+000A,U+000B,U+000D,U+001A,U+000A;[10|15|10]
+../fonts/lookupflag_ignore_attach_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+000A,U+000B,U+0015,U+000D,U+0016,U+0017,U+001D,U+001A,U+000A;[10|15|21|22|23|29|10]
+../fonts/lookupflag_ignore_attach_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+000A,U+000B,U+0015,U+000D,U+0016,U+001B,U+001A,U+000A;[10|11|21|13|22|27|26|10]
+../fonts/lookupflag_ignore_attach_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+000A,U+000B,U+001B,U+000D,U+0016,U+0017,U+001A,U+000A;[10|11|27|13|22|23|26|10]
+../fonts/lookupflag_ignore_attach_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+000A,U+000B,U+001B,U+000D,U+000E,U+0017,U+001A,U+000A;[10|11|27|13|14|23|26|10]
diff --git a/test/shape/data/aots/tests/lookupflag_ignore_base.tests b/test/shape/data/aots/tests/lookupflag_ignore_base.tests
index ba4f730..bf4c5cd 100644
--- a/test/shape/data/aots/tests/lookupflag_ignore_base.tests
+++ b/test/shape/data/aots/tests/lookupflag_ignore_base.tests
@@ -1,2 +1,2 @@
-../fonts/lookupflag_ignore_base_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|23|21]
-../fonts/lookupflag_ignore_base_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0018,U+0018,U+0013,U+0019,U+0014,U+0015;[17|23|24|24|25|21]
+../fonts/lookupflag_ignore_base_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0013,U+0014,U+0015;[17|23|21]
+../fonts/lookupflag_ignore_base_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+0018,U+0018,U+0013,U+0019,U+0014,U+0015;[17|23|24|24|25|21]
diff --git a/test/shape/data/aots/tests/lookupflag_ignore_combination.tests b/test/shape/data/aots/tests/lookupflag_ignore_combination.tests
index 08b5b48..062618d 100644
--- a/test/shape/data/aots/tests/lookupflag_ignore_combination.tests
+++ b/test/shape/data/aots/tests/lookupflag_ignore_combination.tests
@@ -1,3 +1,3 @@
-../fonts/lookupflag_ignore_combination_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+001A,U+0013,U+0014,U+0015;[17|23|26|21]
-../fonts/lookupflag_ignore_combination_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+001A,U+0013,U+0018,U+001E,U+001F,U+0014,U+0015;[17|23|26|24|30|31|21]
-../fonts/lookupflag_ignore_combination_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+001A,U+0013,U+0018,U+001E,U+0020,U+0014,U+0015;[17|18|26|19|24|30|32|20|21]
+../fonts/lookupflag_ignore_combination_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+001A,U+0013,U+0014,U+0015;[17|23|26|21]
+../fonts/lookupflag_ignore_combination_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+001A,U+0013,U+0018,U+001E,U+001F,U+0014,U+0015;[17|23|26|24|30|31|21]
+../fonts/lookupflag_ignore_combination_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+001A,U+0013,U+0018,U+001E,U+0020,U+0014,U+0015;[17|18|26|19|24|30|32|20|21]
diff --git a/test/shape/data/aots/tests/lookupflag_ignore_ligatures.tests b/test/shape/data/aots/tests/lookupflag_ignore_ligatures.tests
index b523815..ef7e377 100644
--- a/test/shape/data/aots/tests/lookupflag_ignore_ligatures.tests
+++ b/test/shape/data/aots/tests/lookupflag_ignore_ligatures.tests
@@ -1,3 +1,3 @@
-../fonts/lookupflag_ignore_ligatures_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+001A,U+001B,U+0013,U+001B,U+0014,U+0015;[17|23|26|27|27|21]
-../fonts/lookupflag_ignore_ligatures_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+001A,U+0018,U+0013,U+001B,U+0014,U+0015;[17|18|26|24|19|27|20|21]
-../fonts/lookupflag_ignore_ligatures_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+001A,U+002A,U+0013,U+001B,U+0014,U+0015;[17|18|26|42|19|27|20|21]
+../fonts/lookupflag_ignore_ligatures_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+001A,U+001B,U+0013,U+001B,U+0014,U+0015;[17|23|26|27|27|21]
+../fonts/lookupflag_ignore_ligatures_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+001A,U+0018,U+0013,U+001B,U+0014,U+0015;[17|18|26|24|19|27|20|21]
+../fonts/lookupflag_ignore_ligatures_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+001A,U+002A,U+0013,U+001B,U+0014,U+0015;[17|18|26|42|19|27|20|21]
diff --git a/test/shape/data/aots/tests/lookupflag_ignore_marks.tests b/test/shape/data/aots/tests/lookupflag_ignore_marks.tests
index de1ccf2..df7faa4 100644
--- a/test/shape/data/aots/tests/lookupflag_ignore_marks.tests
+++ b/test/shape/data/aots/tests/lookupflag_ignore_marks.tests
@@ -1 +1 @@
-../fonts/lookupflag_ignore_marks_f1.otf;--features="test" --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+001C,U+001D,U+0013,U+001D,U+0014,U+0015;[17|23|28|29|29|21]
+../fonts/lookupflag_ignore_marks_f1.otf;--features="test" --single-par --no-clusters --no-glyph-names --no-positions;U+0011,U+0012,U+001C,U+001D,U+0013,U+001D,U+0014,U+0015;[17|23|28|29|29|21]
diff --git a/util/text-options.hh b/util/text-options.hh
index d55c066..5ea0a2d 100644
--- a/util/text-options.hh
+++ b/util/text-options.hh
@@ -84,6 +84,7 @@
   GString *gs = nullptr;
   char *line = nullptr;
   unsigned line_len = UINT_MAX;
+  hb_bool_t single_par = false;
 };
 
 struct shape_text_options_t : text_options_t
@@ -290,7 +291,7 @@
     }
 
     const char *ret = line;
-    const char *p = (const char *) memchr (line, '\n', line_len);
+    const char *p = single_par ? nullptr : (const char *) memchr (line, '\n', line_len);
     unsigned int ret_len;
     if (!p)
     {
@@ -314,7 +315,7 @@
   while (fgets (buf, sizeof (buf), in_fp))
   {
     unsigned bytes = strlen (buf);
-    if (bytes && buf[bytes - 1] == '\n')
+    if (!single_par && bytes && buf[bytes - 1] == '\n')
     {
       bytes--;
       g_string_append_len (gs, buf, bytes);
@@ -335,12 +336,13 @@
   {
     {"text",		0, 0, G_OPTION_ARG_CALLBACK,	(gpointer) &parse_text,		"Set input text",			"string"},
     {"text-file",	0, 0, G_OPTION_ARG_STRING,	&this->text_file,		"Set input text file-name",		"filename"},
-    {"unicodes",      'u', 0, G_OPTION_ARG_CALLBACK,	(gpointer) &parse_unicodes,	"Set input Unicode codepoints\n\n    If no text is provided, standard input is used for input.",		"list of hex numbers"},
+    {"unicodes",      'u', 0, G_OPTION_ARG_CALLBACK,	(gpointer) &parse_unicodes,	"Set input Unicode codepoints",		"list of hex numbers"},
+    {"single-par",	0, 0, G_OPTION_ARG_NONE,	&this->single_par,		"Treat text as single paragraph",	nullptr},
     {nullptr}
   };
   parser->add_group (entries,
 		     "text",
-		     "Text options:",
+		     "Text options:\n\nIf no text is provided, standard input is used for input.\n",
 		     "Options for the input text",
 		     this);
 }