diff options
Diffstat (limited to 'Lib/fontTools/varLib/mutator.py')
-rw-r--r-- | Lib/fontTools/varLib/mutator.py | 10 |
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 |