Fix SingleSubstFormat1 modulo math
diff --git a/Lib/fontTools/ttLib/tables/otTables.py b/Lib/fontTools/ttLib/tables/otTables.py
index 8720a88..68a3180 100644
--- a/Lib/fontTools/ttLib/tables/otTables.py
+++ b/Lib/fontTools/ttLib/tables/otTables.py
@@ -140,7 +140,6 @@
if self.Format == 1:
delta = rawTable["DeltaGlyphID"]
inputGIDS = [ font.getGlyphID(name) for name in input ]
- inputGIDS = map(doModulo, inputGIDS)
outGIDS = [ glyphID + delta for glyphID in inputGIDS ]
outGIDS = map(doModulo, outGIDS)
outNames = [ font.getGlyphName(glyphID) for glyphID in outGIDS ]
@@ -160,7 +159,7 @@
mapping = self.mapping = {}
items = list(mapping.items())
getGlyphID = font.getGlyphID
- gidItems = ((getGlyphID(a), getGlyphID(b)) for a,b in items)
+ gidItems = [(getGlyphID(a), getGlyphID(b)) for a,b in items]
sortableItems = sorted(zip(gidItems, items))
# figure out format
@@ -169,6 +168,10 @@
for inID, outID in gidItems:
if delta is None:
delta = outID - inID
+ if delta < -32768:
+ delta += 65536
+ elif delta > 32767:
+ delta -= 65536
else:
if delta != outID - inID:
break