From 97fce155adb7013b6777c8a050f01ed69e2003ee Mon Sep 17 00:00:00 2001 From: Cosimo Lupo Date: Tue, 26 Nov 2019 16:16:48 +0000 Subject: [PATCH] ttGlyphPen: always round float coordinates and offsets to integers Fixes googlefonts/fontmake#593 --- Lib/fontTools/pens/ttGlyphPen.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Lib/fontTools/pens/ttGlyphPen.py b/Lib/fontTools/pens/ttGlyphPen.py index 3996e3cd8..f7b1483b2 100644 --- a/Lib/fontTools/pens/ttGlyphPen.py +++ b/Lib/fontTools/pens/ttGlyphPen.py @@ -1,6 +1,6 @@ from fontTools.misc.py23 import * from array import array -from fontTools.misc.fixedTools import MAX_F2DOT14 +from fontTools.misc.fixedTools import MAX_F2DOT14, otRound from fontTools.pens.basePen import LoggingPen from fontTools.pens.transformPen import TransformPen from fontTools.ttLib.tables import ttProgram @@ -118,7 +118,7 @@ class TTGlyphPen(LoggingPen): component = GlyphComponent() component.glyphName = glyphName - component.x, component.y = transformation[4:] + component.x, component.y = (otRound(v) for v in transformation[4:]) transformation = transformation[:4] if transformation != (1, 0, 0, 1): if (self.handleOverflowingTransforms and @@ -138,6 +138,7 @@ class TTGlyphPen(LoggingPen): glyph = Glyph() glyph.coordinates = GlyphCoordinates(self.points) + glyph.coordinates.toInt() glyph.endPtsOfContours = self.endPts glyph.flags = array("B", self.types) self.init()