diff --git a/Lib/fontTools/ttLib/scaleUpem.py b/Lib/fontTools/ttLib/scaleUpem.py index aeea692e3..ccf3aa781 100644 --- a/Lib/fontTools/ttLib/scaleUpem.py +++ b/Lib/fontTools/ttLib/scaleUpem.py @@ -167,71 +167,69 @@ def visit(visitor, obj, attr, varc): varIdx = component.locationVarIndex # TODO Move this code duplicated below to MultiVarStore.__getitem__, # or a getDeltasAndSupports(). - if varIdx == otTables.NO_VARIATION_INDEX: - continue - major = varIdx >> 16 - minor = varIdx & 0xFFFF - varData = store.MultiVarData[major] - vec = varData.Item[minor] - storeBuilder.setSupports(store.get_supports(major, fvar.axes)) - if vec.values: - m = len(vec.values) // varData.VarRegionCount - vec = list(batched(vec.values, m)) - vec = [Vector(v) for v in vec] - component.locationVarIndex = storeBuilder.storeDeltas(vec) - else: - component.transformVarIndex = otTables.NO_VARIATION_INDEX + if varIdx != otTables.NO_VARIATION_INDEX: + major = varIdx >> 16 + minor = varIdx & 0xFFFF + varData = store.MultiVarData[major] + vec = varData.Item[minor] + storeBuilder.setSupports(store.get_supports(major, fvar.axes)) + if vec.values: + m = len(vec.values) // varData.VarRegionCount + vec = list(batched(vec.values, m)) + vec = [Vector(v) for v in vec] + component.locationVarIndex = storeBuilder.storeDeltas(vec) + else: + component.transformVarIndex = otTables.NO_VARIATION_INDEX if component.flags & otTables.VarComponentFlags.TRANSFORM_HAS_VARIATION: varIdx = component.transformVarIndex - if varIdx == otTables.NO_VARIATION_INDEX: - continue - major = varIdx >> 16 - minor = varIdx & 0xFFFF - vec = varData.Item[varIdx & 0xFFFF] - major = varIdx >> 16 - minor = varIdx & 0xFFFF - varData = store.MultiVarData[major] - vec = varData.Item[minor] - storeBuilder.setSupports(store.get_supports(major, fvar.axes)) - if vec.values: - m = len(vec.values) // varData.VarRegionCount - flags = component.flags - vec = list(batched(vec.values, m)) - newVec = [] - for v in vec: - v = list(v) - i = 0 - ## Scale translate & tCenter - if flags & otTables.VarComponentFlags.HAVE_TRANSLATE_X: - v[i] = visitor.scale(v[i]) - i += 1 - if flags & otTables.VarComponentFlags.HAVE_TRANSLATE_Y: - v[i] = visitor.scale(v[i]) - i += 1 - if flags & otTables.VarComponentFlags.HAVE_ROTATION: - i += 1 - if flags & otTables.VarComponentFlags.HAVE_SCALE_X: - i += 1 - if flags & otTables.VarComponentFlags.HAVE_SCALE_Y: - i += 1 - if flags & otTables.VarComponentFlags.HAVE_SKEW_X: - i += 1 - if flags & otTables.VarComponentFlags.HAVE_SKEW_Y: - i += 1 - if flags & otTables.VarComponentFlags.HAVE_TCENTER_X: - v[i] = visitor.scale(v[i]) - i += 1 - if flags & otTables.VarComponentFlags.HAVE_TCENTER_Y: - v[i] = visitor.scale(v[i]) - i += 1 + if varIdx != otTables.NO_VARIATION_INDEX: + major = varIdx >> 16 + minor = varIdx & 0xFFFF + vec = varData.Item[varIdx & 0xFFFF] + major = varIdx >> 16 + minor = varIdx & 0xFFFF + varData = store.MultiVarData[major] + vec = varData.Item[minor] + storeBuilder.setSupports(store.get_supports(major, fvar.axes)) + if vec.values: + m = len(vec.values) // varData.VarRegionCount + flags = component.flags + vec = list(batched(vec.values, m)) + newVec = [] + for v in vec: + v = list(v) + i = 0 + ## Scale translate & tCenter + if flags & otTables.VarComponentFlags.HAVE_TRANSLATE_X: + v[i] = visitor.scale(v[i]) + i += 1 + if flags & otTables.VarComponentFlags.HAVE_TRANSLATE_Y: + v[i] = visitor.scale(v[i]) + i += 1 + if flags & otTables.VarComponentFlags.HAVE_ROTATION: + i += 1 + if flags & otTables.VarComponentFlags.HAVE_SCALE_X: + i += 1 + if flags & otTables.VarComponentFlags.HAVE_SCALE_Y: + i += 1 + if flags & otTables.VarComponentFlags.HAVE_SKEW_X: + i += 1 + if flags & otTables.VarComponentFlags.HAVE_SKEW_Y: + i += 1 + if flags & otTables.VarComponentFlags.HAVE_TCENTER_X: + v[i] = visitor.scale(v[i]) + i += 1 + if flags & otTables.VarComponentFlags.HAVE_TCENTER_Y: + v[i] = visitor.scale(v[i]) + i += 1 - newVec.append(Vector(v)) - vec = newVec + newVec.append(Vector(v)) + vec = newVec - component.transformVarIndex = storeBuilder.storeDeltas(vec) - else: - component.transformVarIndex = otTables.NO_VARIATION_INDEX + component.transformVarIndex = storeBuilder.storeDeltas(vec) + else: + component.transformVarIndex = otTables.NO_VARIATION_INDEX varc.MultiVarStore = storeBuilder.finish()