From 58bb96be91bd0e83a08c38ee7e5eb5ea3ea549b8 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Wed, 20 Dec 2023 05:20:32 -0700 Subject: [PATCH] [VARC] Use a DeltaSetIndexMap --- Lib/fontTools/ttLib/tables/otData.py | 6 +----- Lib/fontTools/ttLib/ttGlyphSet.py | 4 ++-- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/Lib/fontTools/ttLib/tables/otData.py b/Lib/fontTools/ttLib/tables/otData.py index d31e64769..3e1dc8f29 100644 --- a/Lib/fontTools/ttLib/tables/otData.py +++ b/Lib/fontTools/ttLib/tables/otData.py @@ -3392,11 +3392,7 @@ otData = [ ( "AxisValuesList", [ - # A hack here would be to encode the VarIndex as the first member - # of the tuple to stored. But I find that ugly. The current - # design is not ideal but cleaner. - ("uint32", "VarIndicesCount", None, None, ""), - ("VarIndex", "VarIndices", "VarIndicesCount", 0, ""), + ("LOffsetTo(DeltaSetIndexMap)", "VarIndices", None, None, ""), ("TupleList", "Item", "", 0, ""), ], ), diff --git a/Lib/fontTools/ttLib/ttGlyphSet.py b/Lib/fontTools/ttLib/ttGlyphSet.py index 1af88a7fa..0ea895b9b 100644 --- a/Lib/fontTools/ttLib/ttGlyphSet.py +++ b/Lib/fontTools/ttLib/ttGlyphSet.py @@ -306,8 +306,8 @@ class _TTGlyphVARC(_TTGlyph): axisValues = Vector(varc.AxisValuesList.Item[comp.AxisValuesIndex]) # Apply variations varIdx = NO_VARIATION_INDEX - if comp.AxisValuesIndex < varc.AxisValuesList.VarIndicesCount: - varIdx = varc.AxisValuesList.VarIndices[comp.AxisValuesIndex] + if comp.AxisValuesIndex < len(varc.AxisValuesList.VarIndices.mapping): + varIdx = varc.AxisValuesList.VarIndices.mapping[comp.AxisValuesIndex] if varIdx != NO_VARIATION_INDEX: axisValues = ( axisValues + instancer[varIdx]