aboutsummaryrefslogtreecommitdiff
path: root/Lib/fontTools/varLib/mutator.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/fontTools/varLib/mutator.py')
-rw-r--r--Lib/fontTools/varLib/mutator.py10
1 files changed, 6 insertions, 4 deletions
diff --git a/Lib/fontTools/varLib/mutator.py b/Lib/fontTools/varLib/mutator.py
index 02ce4422..263c4e61 100644
--- a/Lib/fontTools/varLib/mutator.py
+++ b/Lib/fontTools/varLib/mutator.py
@@ -138,7 +138,7 @@ def interpolate_cff2_metrics(varfont, topDict, glyphOrder, loc):
# Happens with non-marking glyphs
lsb_delta = 0
else:
- lsb = boundsPen.bounds[0]
+ lsb = otRound(boundsPen.bounds[0])
lsb_delta = entry[1] - lsb
if lsb_delta or width_delta:
@@ -185,6 +185,8 @@ def instantiateVariableFont(varfont, location, inplace=False, overlap=True):
log.info("Mutating glyf/gvar tables")
gvar = varfont['gvar']
glyf = varfont['glyf']
+ hMetrics = varfont['hmtx'].metrics
+ vMetrics = getattr(varfont.get('vmtx'), 'metrics', None)
# get list of glyph names in gvar sorted by component depth
glyphnames = sorted(
gvar.variations.keys(),
@@ -194,7 +196,7 @@ def instantiateVariableFont(varfont, location, inplace=False, overlap=True):
name))
for glyphname in glyphnames:
variations = gvar.variations[glyphname]
- coordinates, _ = glyf.getCoordinatesAndControls(glyphname, varfont)
+ coordinates, _ = glyf._getCoordinatesAndControls(glyphname, hMetrics, vMetrics)
origCoords, endPts = None, None
for var in variations:
scalar = supportScalar(loc, var.axes)
@@ -202,10 +204,10 @@ def instantiateVariableFont(varfont, location, inplace=False, overlap=True):
delta = var.coordinates
if None in delta:
if origCoords is None:
- origCoords, g = glyf.getCoordinatesAndControls(glyphname, varfont)
+ origCoords, g = glyf._getCoordinatesAndControls(glyphname, hMetrics, vMetrics)
delta = iup_delta(delta, origCoords, g.endPts)
coordinates += GlyphCoordinates(delta) * scalar
- glyf.setCoordinates(glyphname, coordinates, varfont)
+ glyf._setCoordinates(glyphname, coordinates, hMetrics, vMetrics)
else:
glyf = None