diff --git a/Lib/fontTools/varLib/__init__.py b/Lib/fontTools/varLib/__init__.py index a106f2aff..2e87545d3 100644 --- a/Lib/fontTools/varLib/__init__.py +++ b/Lib/fontTools/varLib/__init__.py @@ -257,8 +257,8 @@ def _add_avar(font, axes, mappings, axisTags): varIdxes = {axis: optimized[value] for axis, value in varIdxes.items()} varIdxMap = ot.DeltaSetIndexMap() - varIdxMap.Format = 1 varIdxMap.mapping = [varIdxes[t] for t in axisTags] + varIdxMap.Format = 1 if len(varIdxMap.mapping) > 0xFFFF else 0 avar.majorVersion = 2 avar.table = ot.avar() diff --git a/Tests/varLib/data/BuildAvar2.designspace b/Tests/varLib/data/BuildAvar2.designspace new file mode 100644 index 000000000..0a22fe6aa --- /dev/null +++ b/Tests/varLib/data/BuildAvar2.designspace @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + Weight + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/varLib/data/test_results/BuildAvar2.ttx b/Tests/varLib/data/test_results/BuildAvar2.ttx new file mode 100644 index 000000000..1b16099c9 --- /dev/null +++ b/Tests/varLib/data/test_results/BuildAvar2.ttx @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/varLib/varLib_test.py b/Tests/varLib/varLib_test.py index a8f7a4574..cffd32f90 100644 --- a/Tests/varLib/varLib_test.py +++ b/Tests/varLib/varLib_test.py @@ -227,6 +227,19 @@ class BuildTest(unittest.TestCase): expected_ttx_name=test_name, ) + def test_varlib_avar2(self): + """Designspace file contains a 'weight' axis with elements + modifying the normalization mapping as well as element + modifying it post-normalization. An 'avar' table is generated. + """ + test_name = "BuildAvar2" + self._run_varlib_build_test( + designspace_name=test_name, + font_name="TestFamily3", + tables=["avar"], + expected_ttx_name=test_name, + ) + def test_varlib_build_feature_variations(self): """Designspace file contains element, used to build GSUB FeatureVariations table. @@ -912,7 +925,6 @@ Expected: kern, mark. Got: kern. """, ): - self._run_varlib_build_test( designspace_name="IncompatibleFeatures", font_name="IncompatibleFeatures",