diff --git a/test/shape/data/in-house/tests/aat-trak.tests b/test/shape/data/in-house/tests/aat-trak.tests index 808b935d6..ad6637415 100644 --- a/test/shape/data/in-house/tests/aat-trak.tests +++ b/test/shape/data/in-house/tests/aat-trak.tests @@ -1,3 +1,4 @@ +@font-funcs=ot,coretext ../fonts/TRAK.ttf;;U+0041,U+0042,U+0043;[A.alt=0+1000|B=1+1000|C.alt=2+1000] ../fonts/TRAK.ttf;--font-ptem=.5;U+0041,U+0042,U+0043;[A.alt=0+1200|B=1+1200|C.alt=2+1200] ../fonts/TRAK.ttf;--font-ptem=1;U+0041,U+0042,U+0043;[A.alt=0+1200|B=1+1200|C.alt=2+1200] diff --git a/test/shape/data/in-house/tests/arabic-fallback-shaping.tests b/test/shape/data/in-house/tests/arabic-fallback-shaping.tests index ac087899c..e85afc1f9 100644 --- a/test/shape/data/in-house/tests/arabic-fallback-shaping.tests +++ b/test/shape/data/in-house/tests/arabic-fallback-shaping.tests @@ -1,3 +1,4 @@ +@font-funcs=ot,ft,directwrite,uniscribe ../fonts/df768b9c257e0c9c35786c47cae15c46571d56be.ttf;;U+0633,U+064F,U+0644,U+064E,U+0651,U+0627,U+0651,U+0650,U+0645,U+062A,U+06CC;[uni06CC.fina=10+1655|uni062A.medi=9+868|uni0645.init=8+1098|uni0650=2@148,0+0|uni0651=2@187,736+0|uni064E=2@883,1259+0|uni0651=2@922,736+0|uni06440627.fina=2+1470|uni064F=0@629,-10+0|uni0633.init=0+1585] ../fonts/SimpArabicTest.ttf;--no-positions;U+0628,U+0650,U+0633,U+0652,U+0645,U+0650,U+0020,U+0020,U+0627,U+0644,U+0644,U+0647,U+0020,U+0627,U+0644,U+0631,U+0651,U+064E,U+062D,U+0652,U+0645,U+064E,U+0646,U+0650,U+0020,U+0627,U+0644,U+0631,U+062D,U+0650,U+064A,U+0645;[daggerdbl=31|c142=30|twosuperior=28|bracketleft=28|c=27|quotedblbase=26|J=25|parenright=24|twosuperior=22|Eacute=22|logicalnot=20|dagger=20|registered=18|bracketleft=18|logicalnot=15|plusminus=15|c=15|quotedblbase=14|J=13|parenright=12|guilsinglleft=11|quotedblbase=10|quotedblbase=9|J=8|parenright=7|parenright=6|twosuperior=4|daggerdbl=4|registered=2|j=2|twosuperior=0|R=0] ../fonts/SimpArabicTest.ttf;;U+0020,U+0644,U+0627,U+0020,U+0644,U+0623,U+0020,U+0644,U+064E,U+0623,U+064E,U+0020,U+0623,U+064E,U+0646,U+062A;[U=15+693|DEL=14+227|logicalnot=12@17,307+0|L=12+289|parenright=11+391|logicalnot=7@41,267+0|logicalnot=7@378,267+0|brokenbar=7+674|parenright=6+391|brokenbar=4+674|parenright=3+391|yen=1+709|parenright=0+391] diff --git a/test/shape/data/in-house/tests/color-fonts.tests b/test/shape/data/in-house/tests/color-fonts.tests index 42636ed22..d1ba1638d 100644 --- a/test/shape/data/in-house/tests/color-fonts.tests +++ b/test/shape/data/in-house/tests/color-fonts.tests @@ -1,2 +1,3 @@ -../fonts/ee39587d13b2afa5499cc79e45780aa79293bbd4.ttf;--font-funcs=ot --show-extents;U+1F42F;[gid1=0+2963<0,2179,2963,-2789>] -../fonts/fcbaa518d3cce441ed37ae3b1fed6a19e9b54efd.ttf;--font-funcs=ot --show-extents;U+1F600;[gid4=0+2550<0,1898,2555,-2405>] +@font-funcs=ot,ft +../fonts/ee39587d13b2afa5499cc79e45780aa79293bbd4.ttf;--show-extents;U+1F42F;[gid1=0+2963<0,2179,2963,-2789>] +../fonts/fcbaa518d3cce441ed37ae3b1fed6a19e9b54efd.ttf;--show-extents;U+1F600;[gid4=0+2550<0,1898,2555,-2405>] diff --git a/test/shape/run-tests.py b/test/shape/run-tests.py index f1533e8c2..2359ed92e 100755 --- a/test/shape/run-tests.py +++ b/test/shape/run-tests.py @@ -61,6 +61,15 @@ def supported_whats(what): return globals()[supported_whats_var_name(what)] +def all_whats_var_name(what): + whats = whats_var_name(what) + return "all_" + whats + + +def all_whats(what): + return globals()[all_whats_var_name(what)] + + # Collect supported backends for what in ["shaper", "face-loader", "font-funcs"]: subcommand = "--list-" + plural(what) @@ -97,6 +106,10 @@ for filename in args: else: f = open(filename, encoding="utf8") + for what in ["shaper", "face-loader", "font-funcs"]: + all_var_name = all_whats_var_name(what) + globals()[all_var_name] = supported_whats(what) + for line in f: comment = False if line.startswith("#"): @@ -111,6 +124,27 @@ for filename in args: if not line: continue + if line.startswith("@"): + # Directive + for what in ["shaper", "face-loader", "font-funcs"]: + whats = plural(what) + if line.startswith("@" + whats): + command, values = line.split("=") + values = values.strip().split(",") + + supported = supported_whats(what) + if command[-1] == "-": + # Exclude + values = [v for v in supported if v not in values] + else: + # Specify + values = [v for v in values if v in supported] + + var_name = all_whats_var_name(what) + print(f"Setting {var_name} to {values}") + globals()[var_name] = values + continue + fontfile, options, unicodes, glyphs_expected = line.split(";") options = options.split() if fontfile.startswith("/") or fontfile.startswith('"/'): @@ -174,7 +208,7 @@ for filename in args: continue options = new_options - for font_funcs in [font_funcs] if font_funcs else supported_font_funcs: + for font_funcs in [font_funcs] if font_funcs else all_whats("font-funcs"): extra_options = []