Skip to content

Commit 5936dd4

Browse files
Merge pull request #582 from typemytype/issue-581
Make sure we specify every axis in the font to ensure we get the expected default value behavior
2 parents 4b42478 + e56d707 commit 5936dd4

File tree

1 file changed

+12
-13
lines changed

1 file changed

+12
-13
lines changed

drawBot/context/tools/variation.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -91,17 +91,16 @@ def getNamedInstancesForFont(font):
9191

9292
def getFontVariationAttributes(font, fontVariations):
9393
coreTextFontVariations = dict()
94-
if fontVariations:
95-
existingAxes = getVariationAxesForFont(font)
96-
for axis, value in fontVariations.items():
97-
if axis in existingAxes:
98-
existinsAxis = existingAxes[axis]
99-
# clip variation value within the min max value
100-
if value < existinsAxis["minValue"]:
101-
value = existinsAxis["minValue"]
102-
if value > existinsAxis["maxValue"]:
103-
value = existinsAxis["maxValue"]
104-
coreTextFontVariations[convertVariationTagToInt(axis)] = value
105-
else:
106-
warnings.warn("variation axis '%s' not available for '%s'" % (axis, font.fontName()))
94+
axes = getVariationAxesForFont(font)
95+
96+
for axisTag, axis in axes.items():
97+
value = min(
98+
max(fontVariations.get(axisTag, axis["defaultValue"]), axis["minValue"]),
99+
axis["maxValue"],
100+
)
101+
coreTextFontVariations[convertVariationTagToInt(axisTag)] = value
102+
103+
for axisTag in sorted(set(fontVariations) - set(axes)):
104+
warnings.warn("variation axis '%s' not available for '%s'" % (axisTag, font.fontName()))
105+
107106
return coreTextFontVariations

0 commit comments

Comments
 (0)