From b2825ff6b3e98cb5c36363e4c88d8e075366f08b Mon Sep 17 00:00:00 2001 From: Cosimo Lupo Date: Fri, 10 Mar 2017 12:38:50 +0000 Subject: [PATCH] [varLib.builder] fix calculation of VarData.NumShorts The problem was that `break` statement: we stopped searching for SHORT columns in each delta set after finding the first, but rows can contain more than one in any order. Fixes https://github.com/googlei18n/fontmake/issues/271 --- Lib/fontTools/varLib/builder.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Lib/fontTools/varLib/builder.py b/Lib/fontTools/varLib/builder.py index c2509755d..8afa41237 100644 --- a/Lib/fontTools/varLib/builder.py +++ b/Lib/fontTools/varLib/builder.py @@ -44,10 +44,8 @@ def calculateNumShorts(self, optimize=True): items = self.Item narrows = set(range(count)) for item in items: - for i in narrows: - if not (-128 <= item[i] <= 127): - narrows.remove(i) - break + wides = [i for i in narrows if not (-128 <= item[i] <= 127)] + narrows.difference_update(wides) if not narrows: break if optimize: