Support splitting PairPosFormat1 tables

Fixes https://github.com/googlei18n/fontmake/issues/143
This commit is contained in:
Behdad Esfahbod 2016-11-01 18:14:55 -07:00
parent 16f0fd2259
commit 904b1c5942

View File

@ -788,7 +788,31 @@ def splitPairPos(oldSubTable, newSubTable, overflowRecord):
st = oldSubTable
ok = False
newSubTable.Format = oldSubTable.Format
if oldSubTable.Format == 2 and len(oldSubTable.Class1Record) > 1:
if oldSubTable.Format == 1 and len(oldSubTable.PairSet) > 1:
for name in 'ValueFormat1', 'ValueFormat2':
setattr(newSubTable, name, getattr(oldSubTable, name))
# Move top half of coverage to new subtable
newSubTable.Coverage = oldSubTable.Coverage.__class__()
coverage = oldSubTable.Coverage.glyphs
records = oldSubTable.PairSet
oldCount = len(oldSubTable.PairSet) // 2
oldSubTable.Coverage.glyphs = coverage[:oldCount]
oldSubTable.PairSet = records[:oldCount]
newSubTable.Coverage.glyphs = coverage[oldCount:]
newSubTable.PairSet = records[oldCount:]
oldSubTable.PairSetCount = len(oldSubTable.PairSet)
newSubTable.PairSetCount = len(newSubTable.PairSet)
ok = True
elif oldSubTable.Format == 2 and len(oldSubTable.Class1Record) > 1:
if not hasattr(oldSubTable, 'Class2Count'):
oldSubTable.Class2Count = len(oldSubTable.Class1Record[0].Class2Record)
for name in 'Class2Count', 'ClassDef2', 'ValueFormat1', 'ValueFormat2':