Repository: harfbuzz/rustybuzz
Pull request #157: Add tests for COLRv1 glyph extents
Author: login: valadaptive
Created: 2025-03-06T17:23:09Z | Merged: 2025-03-08T20:26:04Z

About half of them currently fail.


Diff:
diff --git a/scripts/gen-shaping-tests.py b/scripts/gen-shaping-tests.py
index 6175dc14..9545ea65 100755
--- a/scripts/gen-shaping-tests.py
+++ b/scripts/gen-shaping-tests.py
@@ -47,6 +47,20 @@
     # This custom test fails because harfbuzz uses a set digest in AAT to abort early
     # which we don't do yet. Is basically the same as morx_20_005, but with `--show-flags`
     "glyph_flags_002",
+
+    # These currently return different results from harfbuzz.
+    "colr_003",
+    "colr_006",
+    "colr_007",
+    "colr_008",
+    "colr_009",
+    "colr_010",
+    "colr_011",
+    "colr_012",
+    "colr_014",
+    "colr_015",
+    "colr_016",
+    "colr_018",
 ]
 
 
@@ -222,6 +236,8 @@ def convert_test_files(root_dir, hb_shape_exe, tests_dir, tests_name, files, cus
                 root_dir, hb_shape_exe, tests_name, file, idx + 1, test, fonts, custom
             )
 
+    # Strip the extra trailing newline to avoid formatting churn
+    rust_code = rust_code[:-1]
     tests_name_snake_case = tests_name.replace("-", "_")
     with open(f"../tests/shaping/{tests_name_snake_case}.rs", "w") as f:
         f.write(rust_code)
diff --git a/src/hb/face.rs b/src/hb/face.rs
index 2025dbed..1198913a 100644
--- a/src/hb/face.rs
+++ b/src/hb/face.rs
@@ -266,9 +266,6 @@ impl<'a> hb_font_t<'a> {
                 glyph_extents.height = (-f32::from(img.height) * scale).round() as i32;
                 return true;
             }
-        // TODO: Add tests for this. We should use all glyphs from
-        // https://github.com/googlefonts/color-fonts/blob/main/fonts/test_glyphs-glyf_colr_1_no_cliplist.ttf
-        // and test their output against harfbuzz.
         } else if let Some(colr) = self.ttfp_face.tables().colr {
             if colr.is_simple() {
                 return false;
diff --git a/tests/custom/colr.tests b/tests/custom/colr.tests
new file mode 100644
index 00000000..9759744b
--- /dev/null
+++ b/tests/custom/colr.tests
@@ -0,0 +1,20 @@
+tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0100,U+F0101,U+F0102,U+F0103;
+tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0200,U+F0201,U+F0202,U+F0203,U+F0204,U+F0205,U+F0206,U+F0207,U+F0208,U+F0209,U+F020A,U+F020B,U+F020C,U+F020D,U+F020E,U+F020F,U+F0210,U+F0211,U+F0212,U+F0213,U+F0214,U+F0215,U+F0216,U+F0217,U+F0218,U+F0219,U+F021A,U+F021B,U+F021C,U+F021D,U+F021E,U+F021F,U+F0220,U+F0221,U+F0222,U+F0223,U+F0224,U+F0225,U+F0226,U+F0227,U+F0228,U+F0229,U+F022A,U+F022B,U+F022C,U+F022D,U+F022E,U+F022F,U+F0230,U+F0231,U+F0232,U+F0233,U+F0234,U+F0235,U+F0236,U+F0237,U+F0238,U+F0239,U+F023A,U+F023B,U+F023C,U+F023D,U+F023E,U+F023F,U+F0240,U+F0241,U+F0242,U+F0243,U+F0244,U+F0245,U+F0246,U+F0247;
+tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0300,U+F0301,U+F0302,U+F0303,U+F0304,U+F0305;
+tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0500,U+F0501,U+F0502;
+tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0503,U+F0504,U+F0505,U+F0506,U+F0507,U+F0508;
+tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0600,U+F0601,U+F0602,U+F0603;
+tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0700,U+F0701,U+F0702,U+F0703,U+F0704,U+F0705;
+tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0800,U+F0801,U+F0802,U+F0803;
+tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0900,U+F0901,U+F0902,U+F0903,U+F0904,U+F0905,U+F0906;
+tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0A00,U+F0A01,U+F0A02,U+F0A03,U+F0A04,U+F0A05,U+F0A06,U+F0A07,U+F0A08,U+F0A09,U+F0A0A,U+F0A0B,U+F0A0C,U+F0A0D,U+F0A0E,U+F0A0F,U+F0A10,U+F0A11,U+F0A12,U+F0A13,U+F0A14,U+F0A15,U+F0A16,U+F0A17,U+F0A18,U+F0A19,U+F0A1A,U+F0A1B;
+tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0B00,U+F0B01,U+F0B02,U+F0B03,U+F0B04,U+F0B05,U+F0B06,U+F0B07;
+tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0C00,U+F0C01,U+F0C02,U+F0C03,U+F0C04,U+F0C05,U+F0C06,U+F0C07,U+F0C08,U+F0C09,U+F0C0A;
+tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0D00;
+tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0E00,U+F0E01;
+tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0F00,U+F0F01,U+F0F02,U+F0F03,U+F0F04,U+F0F05,U+F0F06;
+tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F1000;
+tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F1100,U+F1101;
+tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F1200;
+tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F1300,U+F1301,U+F1302,U+F1303,U+F1304,U+F1305,U+F1306,U+F1307,U+F1308,U+F1309,U+F130A,U+F130B,U+F130C,U+F130D,U+F130E,U+F130F,U+F1310,U+F1311,U+F1312,U+F1313,U+F1314,U+F1315,U+F1316,U+F1317;
+tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F1400,U+F1401,U+F1402,U+F1403,U+F1404,U+F1405,U+F1406,U+F1407,U+F1408,U+F1409,U+F140A,U+F140B,U+F140C,U+F140D,U+F140E,U+F140F;
\ No newline at end of file
diff --git a/tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf b/tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf
new file mode 100644
index 00000000..addc0527
Binary files /dev/null and b/tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf differ
diff --git a/tests/shaping/custom.rs b/tests/shaping/custom.rs
index 685c0dbd..ed968451 100644
--- a/tests/shaping/custom.rs
+++ b/tests/shaping/custom.rs
@@ -40,6 +40,232 @@ fn bugs_003() {
     );
 }
 
+#[test]
+fn colr_001() {
+    assert_eq!(
+        shape(
+            "tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf",
+            "\u{F0100}\u{F0101}\u{F0102}\u{F0103}",
+            "--show-extents",
+        ),
+        "linear_repeat_0_1=0+1000<100,950,800,-700>|\
+         linear_repeat_0.2_0.8=1+1000<100,950,800,-700>|\
+         linear_repeat_0_1.5=2+1000<100,950,800,-700>|\
+         linear_repeat_0.5_1.5=3+1000<100,950,800,-700>"
+    );
+}
+
+#[test]
+fn colr_002() {
+    assert_eq!(
+        shape(
+            "tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf",
+            "\u{F0200}\u{F0201}\u{F0202}\u{F0203}\u{F0204}\u{F0205}\u{F0206}\u{F0207}\u{F0208}\u{F0209}\
+             \u{F020A}\u{F020B}\u{F020C}\u{F020D}\u{F020E}\u{F020F}\u{F0210}\u{F0211}\u{F0212}\u{F0213}\
+             \u{F0214}\u{F0215}\u{F0216}\u{F0217}\u{F0218}\u{F0219}\u{F021A}\u{F021B}\u{F021C}\u{F021D}\
+             \u{F021E}\u{F021F}\u{F0220}\u{F0221}\u{F0222}\u{F0223}\u{F0224}\u{F0225}\u{F0226}\u{F0227}\
+             \u{F0228}\u{F0229}\u{F022A}\u{F022B}\u{F022C}\u{F022D}\u{F022E}\u{F022F}\u{F0230}\u{F0231}\
+             \u{F0232}\u{F0233}\u{F0234}\u{F0235}\u{F0236}\u{F0237}\u{F0238}\u{F0239}\u{F023A}\u{F023B}\
+             \u{F023C}\u{F023D}\u{F023E}\u{F023F}\u{F0240}\u{F0241}\u{F0242}\u{F0243}\u{F0244}\u{F0245}\
+             \u{F0246}\u{F0247}",
+            "--show-extents",
+        ),
+        "sweep_0_360_pad_narrow=0+1000<150,950,700,-700>|\
+         sweep_60_300_pad_narrow=1+1000<150,950,700,-700>|\
+         sweep_0_90_pad_narrow=2+1000<150,950,700,-700>|\
+         sweep_90_0_pad_narrow=3+1000<150,950,700,-700>|\
+         sweep_45_90_pad_narrow=4+1000<150,950,700,-700>|\
+         sweep_90_45_pad_narrow=5+1000<150,950,700,-700>|\
+         sweep_247.5_292.5_pad_narrow=6+1000<150,950,700,-700>|\
+         sweep_-45_45_pad_narrow=7+1000<150,950,700,-700>|\
+         sweep_45_-45_pad_narrow=8+1000<150,950,700,-700>|\
+         sweep_270_440_pad_narrow=9+1000<150,950,700,-700>|\
+         sweep_440_270_pad_narrow=10+1000<150,950,700,-700>|\
+         sweep_-180_540_pad_narrow=11+1000<150,950,700,-700>|\
+         sweep_0_360_reflect_narrow=12+1000<150,950,700,-700>|\
+         sweep_60_300_reflect_narrow=13+1000<150,950,700,-700>|\
+         sweep_0_90_reflect_narrow=14+1000<150,950,700,-700>|\
+         sweep_90_0_reflect_narrow=15+1000<150,950,700,-700>|\
+         sweep_45_90_reflect_narrow=16+1000<150,950,700,-700>|\
+         sweep_90_45_reflect_narrow=17+1000<150,950,700,-700>|\
+         sweep_247.5_292.5_reflect_narrow=18+1000<150,950,700,-700>|\
+         sweep_-45_45_reflect_narrow=19+1000<150,950,700,-700>|\
+         sweep_45_-45_reflect_narrow=20+1000<150,950,700,-700>|\
+         sweep_270_440_reflect_narrow=21+1000<150,950,700,-700>|\
+         sweep_440_270_reflect_narrow=22+1000<150,950,700,-700>|\
+         sweep_-180_540_reflect_narrow=23+1000<150,950,700,-700>|\
+         sweep_0_360_repeat_narrow=24+1000<150,950,700,-700>|\
+         sweep_60_300_repeat_narrow=25+1000<150,950,700,-700>|\
+         sweep_0_90_repeat_narrow=26+1000<150,950,700,-700>|\
+         sweep_90_0_repeat_narrow=27+1000<150,950,700,-700>|\
+         sweep_45_90_repeat_narrow=28+1000<150,950,700,-700>|\
+         sweep_90_45_repeat_narrow=29+1000<150,950,700,-700>|\
+         sweep_247.5_292.5_repeat_narrow=30+1000<150,950,700,-700>|\
+         sweep_-45_45_repeat_narrow=31+1000<150,950,700,-700>|\
+         sweep_45_-45_repeat_narrow=32+1000<150,950,700,-700>|\
+         sweep_270_440_repeat_narrow=33+1000<150,950,700,-700>|\
+         sweep_440_270_repeat_narrow=34+1000<150,950,700,-700>|\
+         sweep_-180_540_repeat_narrow=35+1000<150,950,700,-700>|\
+         sweep_0_360_pad_wide=36+1000<150,950,700,-700>|\
+         sweep_60_300_pad_wide=37+1000<150,950,700,-700>|\
+         sweep_0_90_pad_wide=38+1000<150,950,700,-700>|\
+         sweep_90_0_pad_wide=39+1000<150,950,700,-700>|\
+         sweep_45_90_pad_wide=40+1000<150,950,700,-700>|\
+         sweep_90_45_pad_wide=41+1000<150,950,700,-700>|\
+         sweep_247.5_292.5_pad_wide=42+1000<150,950,700,-700>|\
+         sweep_-45_45_pad_wide=43+1000<150,950,700,-700>|\
+         sweep_45_-45_pad_wide=44+1000<150,950,700,-700>|\
+         sweep_270_440_pad_wide=45+1000<150,950,700,-700>|\
+         sweep_440_270_pad_wide=46+1000<150,950,700,-700>|\
+         sweep_-180_540_pad_wide=47+1000<150,950,700,-700>|\
+         sweep_0_360_reflect_wide=48+1000<150,950,700,-700>|\
+         sweep_60_300_reflect_wide=49+1000<150,950,700,-700>|\
+         sweep_0_90_reflect_wide=50+1000<150,950,700,-700>|\
+         sweep_90_0_reflect_wide=51+1000<150,950,700,-700>|\
+         sweep_45_90_reflect_wide=52+1000<150,950,700,-700>|\
+         sweep_90_45_reflect_wide=53+1000<150,950,700,-700>|\
+         sweep_247.5_292.5_reflect_wide=54+1000<150,950,700,-700>|\
+         sweep_-45_45_reflect_wide=55+1000<150,950,700,-700>|\
+         sweep_45_-45_reflect_wide=56+1000<150,950,700,-700>|\
+         sweep_270_440_reflect_wide=57+1000<150,950,700,-700>|\
+         sweep_440_270_reflect_wide=58+1000<150,950,700,-700>|\
+         sweep_-180_540_reflect_wide=59+1000<150,950,700,-700>|\
+         sweep_0_360_repeat_wide=60+1000<150,950,700,-700>|\
+         sweep_60_300_repeat_wide=61+1000<150,950,700,-700>|\
+         sweep_0_90_repeat_wide=62+1000<150,950,700,-700>|\
+         sweep_90_0_repeat_wide=63+1000<150,950,700,-700>|\
+         sweep_45_90_repeat_wide=64+1000<150,950,700,-700>|\
+         sweep_90_45_repeat_wide=65+1000<150,950,700,-700>|\
+         sweep_247.5_292.5_repeat_wide=66+1000<150,950,700,-700>|\
+         sweep_-45_45_repeat_wide=67+1000<150,950,700,-700>|\
+         sweep_45_-45_repeat_wide=68+1000<150,950,700,-700>|\
+         sweep_270_440_repeat_wide=69+1000<150,950,700,-700>|\
+         sweep_440_270_repeat_wide=70+1000<150,950,700,-700>|\
+         sweep_-180_540_repeat_wide=71+1000<150,950,700,-700>"
+    );
+}
+
+#[test]
+fn colr_004() {
+    assert_eq!(
+        shape(
+            "tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf",
+            "\u{F0500}\u{F0501}\u{F0502}",
+            "--show-extents",
+        ),
+        "linear_gradient_extend_mode_pad=0+1000<0,1000,1000,-1000>|\
+         linear_gradient_extend_mode_repeat=1+1000<0,1000,1000,-1000>|\
+         linear_gradient_extend_mode_reflect=2+1000<0,1000,1000,-1000>"
+    );
+}
+
+#[test]
+fn colr_005() {
+    assert_eq!(
+        shape(
+            "tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf",
+            "\u{F0503}\u{F0504}\u{F0505}\u{F0506}\u{F0507}\u{F0508}",
+            "--show-extents",
+        ),
+        "radial_contained_gradient_extend_mode_pad=0+1000<0,1000,1000,-1000>|\
+         radial_contained_gradient_extend_mode_repeat=1+1000<0,1000,1000,-1000>|\
+         radial_contained_gradient_extend_mode_reflect=2+1000<0,1000,1000,-1000>|\
+         radial_horizontal_gradient_extend_mode_pad=3+1000<0,1000,1000,-1000>|\
+         radial_horizontal_gradient_extend_mode_repeat=4+1000<0,1000,1000,-1000>|\
+         radial_horizontal_gradient_extend_mode_reflect=5+1000<0,1000,1000,-1000>"
+    );
+}
+
+#[test]
+fn colr_013() {
+    assert_eq!(
+        shape(
+            "tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf",
+            "\u{F0D00}",
+            "--show-extents",
+        ),
+        "gradient_p2_skewed=0+1250<100,950,1100,-700>"
+    );
+}
+
+#[test]
+fn colr_017() {
+    assert_eq!(
+        shape(
+            "tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf",
+            "\u{F1100}\u{F1101}",
+            "--show-extents",
+        ),
+        "paintcolrglyph_cycle_first=0+1000<0,0,0,0>|\
+         paintcolrglyph_cycle_second=1+1000<0,0,0,0>"
+    );
+}
+
+#[test]
+fn colr_019() {
+    assert_eq!(
+        shape(
+            "tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf",
+            "\u{F1300}\u{F1301}\u{F1302}\u{F1303}\u{F1304}\u{F1305}\u{F1306}\u{F1307}\u{F1308}\u{F1309}\
+             \u{F130A}\u{F130B}\u{F130C}\u{F130D}\u{F130E}\u{F130F}\u{F1310}\u{F1311}\u{F1312}\u{F1313}\
+             \u{F1314}\u{F1315}\u{F1316}\u{F1317}",
+            "--show-extents",
+        ),
+        "sweep_coincident_angles_forward_blue_red_pad=0+1000<150,950,700,-700>|\
+         sweep_coincident_angles_forward_blue_red_reflect=1+1000<150,950,700,-700>|\
+         sweep_coincident_angles_forward_blue_red_repeat=2+1000<150,950,700,-700>|\
+         sweep_coincident_angles_forward_linen_gray_pad=3+1000<150,950,700,-700>|\
+         sweep_coincident_angles_forward_linen_gray_reflect=4+1000<150,950,700,-700>|\
+         sweep_coincident_angles_forward_linen_gray_repeat=5+1000<150,950,700,-700>|\
+         sweep_coincident_angles_reverse_blue_red_pad=6+1000<150,950,700,-700>|\
+         sweep_coincident_angles_reverse_blue_red_reflect=7+1000<150,950,700,-700>|\
+         sweep_coincident_angles_reverse_blue_red_repeat=8+1000<150,950,700,-700>|\
+         sweep_coincident_angles_reverse_linen_gray_pad=9+1000<150,950,700,-700>|\
+         sweep_coincident_angles_reverse_linen_gray_reflect=10+1000<150,950,700,-700>|\
+         sweep_coincident_angles_reverse_linen_gray_repeat=11+1000<150,950,700,-700>|\
+         sweep_coincident_stops_forward_blue_red_pad=12+1000<150,950,700,-700>|\
+         sweep_coincident_stops_forward_blue_red_reflect=13+1000<150,950,700,-700>|\
+         sweep_coincident_stops_forward_blue_red_repeat=14+1000<150,950,700,-700>|\
+         sweep_coincident_stops_forward_linen_gray_pad=15+1000<150,950,700,-700>|\
+         sweep_coincident_stops_forward_linen_gray_reflect=16+1000<150,950,700,-700>|\
+         sweep_coincident_stops_forward_linen_gray_repeat=17+1000<150,950,700,-700>|\
+         sweep_coincident_stops_reverse_blue_red_pad=18+1000<150,950,700,-700>|\
+         sweep_coincident_stops_reverse_blue_red_reflect=19+1000<150,950,700,-700>|\
+         sweep_coincident_stops_reverse_blue_red_repeat=20+1000<150,950,700,-700>|\
+         sweep_coincident_stops_reverse_linen_gray_pad=21+1000<150,950,700,-700>|\
+         sweep_coincident_stops_reverse_linen_gray_reflect=22+1000<150,950,700,-700>|\
+         sweep_coincident_stops_reverse_linen_gray_repeat=23+1000<150,950,700,-700>"
+    );
+}
+
+#[test]
+fn colr_020() {
+    assert_eq!(
+        shape(
+            "tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf",
+            "\u{F1400}\u{F1401}\u{F1402}\u{F1403}\u{F1404}\u{F1405}\u{F1406}\u{F1407}\u{F1408}\u{F1409}\
+             \u{F140A}\u{F140B}\u{F140C}\u{F140D}\u{F140E}\u{F140F}",
+            "--show-extents",
+        ),
+        "paint_glyph_nested_identity_identity=0+1000<200,770,600,-520>|\
+         paint_glyph_nested_identity_translate=1+1000<200,770,600,-520>|\
+         paint_glyph_nested_identity_rotate_origin=2+1000<200,770,600,-520>|\
+         paint_glyph_nested_identity_rotate_center=3+1000<200,770,600,-520>|\
+         paint_glyph_nested_translate_identity=4+1000<320,890,600,-520>|\
+         paint_glyph_nested_translate_translate=5+1000<320,890,600,-520>|\
+         paint_glyph_nested_translate_rotate_origin=6+1000<320,890,600,-520>|\
+         paint_glyph_nested_translate_rotate_center=7+1000<320,890,600,-520>|\
+         paint_glyph_nested_rotate_origin_identity=8+1000<63,897,681,-616>|\
+         paint_glyph_nested_rotate_origin_translate=9+1000<63,897,681,-616>|\
+         paint_glyph_nested_rotate_origin_rotate_origin=10+1000<63,897,681,-616>|\
+         paint_glyph_nested_rotate_origin_rotate_center=11+1000<63,897,681,-616>|\
+         paint_glyph_nested_rotate_center_identity=12+1000<124,899,750,-779>|\
+         paint_glyph_nested_rotate_center_translate=13+1000<124,899,750,-779>|\
+         paint_glyph_nested_rotate_center_rotate_origin=14+1000<124,899,750,-779>|\
+         paint_glyph_nested_rotate_center_rotate_center=15+1000<124,899,750,-779>"
+    );
+}
+
 #[test]
 fn fuzzer_001() {
     assert_eq!(


Reviews:
user: login: LaurenzV
state: CHANGES_REQUESTED
author_association: COLLABORATOR
submitted_at: 2025-03-07T21:53:41Z
user: login: valadaptive
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-07T23:13:36Z
user: login: LaurenzV
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-08T09:43:04Z
user: login: valadaptive
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-08T20:14:29Z

Review comments:
diff_hunk: @@ -0,0 +1,20 @@
+tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0100,U+F0101,U+F0102,U+F0103;[linear_repeat_0_1=0+1000<100,950,800,-700>|linear_repeat_0.2_0.8=1+1000<100,950,800,-700>|linear_repeat_0_1.5=2+1000<100,950,800,-700>|linear_repeat_0.5_1.5=3+1000<100,950,800,-700>]
path: tests/custom/colr.tests
user: login: LaurenzV
body: Could you remove the expected glyphs from each line? Since they are generated manually by running them against harfbuzz, they shouldn't be necessary for generating the shaping tests, IIRC.
created_at: 2025-03-07T21:53:02Z
author_association: COLLABORATOR
diff_hunk: @@ -0,0 +1,20 @@
+tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0100,U+F0101,U+F0102,U+F0103;[linear_repeat_0_1=0+1000<100,950,800,-700>|linear_repeat_0.2_0.8=1+1000<100,950,800,-700>|linear_repeat_0_1.5=2+1000<100,950,800,-700>|linear_repeat_0.5_1.5=3+1000<100,950,800,-700>]
path: tests/custom/colr.tests
user: login: valadaptive
body: I've added `--no-glyph-names` to the test arguments.
created_at: 2025-03-07T23:13:35Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,20 @@
+tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0100,U+F0101,U+F0102,U+F0103;[linear_repeat_0_1=0+1000<100,950,800,-700>|linear_repeat_0.2_0.8=1+1000<100,950,800,-700>|linear_repeat_0_1.5=2+1000<100,950,800,-700>|linear_repeat_0.5_1.5=3+1000<100,950,800,-700>]
path: tests/custom/colr.tests
user: login: LaurenzV
body: Ah no, I meant completely removing the last part from each line. For example, the first line should be changed from
`tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents --no-glyph-names;U+F0100,U+F0101,U+F0102,U+F0103;[8=0+1000<100,950,800,-700>|9=1+1000<100,950,800,-700>|10=2+1000<100,950,800,-700>|11=3+1000<100,950,800,-700>]`
to
`tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents --no-glyph-names;U+F0100,U+F0101,U+F0102,U+F0103;` (with trailing semicolon)

The expected glyphs are generated by invoking hb-shape from the CLI, so there is no need to add them to `colr.tests`, see for example also `bugs.tests` or `fuzzer.tests`.
created_at: 2025-03-08T09:43:04Z
author_association: COLLABORATOR
diff_hunk: @@ -0,0 +1,20 @@
+tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0100,U+F0101,U+F0102,U+F0103;[linear_repeat_0_1=0+1000<100,950,800,-700>|linear_repeat_0.2_0.8=1+1000<100,950,800,-700>|linear_repeat_0_1.5=2+1000<100,950,800,-700>|linear_repeat_0.5_1.5=3+1000<100,950,800,-700>]
path: tests/custom/colr.tests
user: login: valadaptive
body: Ah, I see. I've done that now. I've removed `--no-glyph-names` from the arguments again as well; it doesn't seem to be in many of the other tests and the glyph names are descriptive and could be useful for debugging why the tests are failing.
created_at: 2025-03-08T20:14:29Z
author_association: CONTRIBUTOR

PR comments:
user: login: LaurenzV
created_at: 2025-03-07T21:51:55Z
body: Thanks! I was aware that there were some failing tests as I tried the same before, but I didn't manage to look into what caused them.
author_association: COLLABORATOR
user: login: LaurenzV
created_at: 2025-03-08T20:26:13Z
body: Thanks!
author_association: COLLABORATOR