Fix up regression in promoting lookups to extensions

Was broken by 6ed2eb409231a7fe3e0c2a135f9a89796206f639

Fixes https://github.com/behdad/fonttools/issues/110
This commit is contained in:
Behdad Esfahbod 2014-02-20 16:31:15 -05:00
parent 5080331251
commit 319643ade2

View File

@ -548,7 +548,7 @@ def fixLookupOverFlows(ttf, overflowRecord):
lookups = ttf[overflowRecord.tableType].table.LookupList.Lookup lookups = ttf[overflowRecord.tableType].table.LookupList.Lookup
lookup = lookups[lookupIndex] lookup = lookups[lookupIndex]
# If the previous lookup is an extType, look further back. Very unlikely, but possible. # If the previous lookup is an extType, look further back. Very unlikely, but possible.
while lookup.LookupType == extType: while lookup.SubTable[0].__class__.LookupType == extType:
lookupIndex = lookupIndex -1 lookupIndex = lookupIndex -1
if lookupIndex < 0: if lookupIndex < 0:
return ok return ok
@ -559,10 +559,8 @@ def fixLookupOverFlows(ttf, overflowRecord):
extSubTableClass = lookupTypes[overflowRecord.tableType][extType] extSubTableClass = lookupTypes[overflowRecord.tableType][extType]
extSubTable = extSubTableClass() extSubTable = extSubTableClass()
extSubTable.Format = 1 extSubTable.Format = 1
extSubTable.ExtensionLookupType = lookup.LookupType
extSubTable.ExtSubTable = subTable extSubTable.ExtSubTable = subTable
lookup.SubTable[si] = extSubTable lookup.SubTable[si] = extSubTable
lookup.LookupType = extType
ok = 1 ok = 1
return ok return ok
@ -662,20 +660,19 @@ def fixSubTableOverFlows(ttf, overflowRecord):
# We split the subtable of the Extension table, and add a new Extension table # We split the subtable of the Extension table, and add a new Extension table
# to contain the new subtable. # to contain the new subtable.
subTableType = subtable.ExtensionLookupType subTableType = subtable.ExtSubTable.__class__.LookupType
extSubTable = subtable extSubTable = subtable
subtable = extSubTable.ExtSubTable subtable = extSubTable.ExtSubTable
newExtSubTableClass = lookupTypes[overflowRecord.tableType][lookup.LookupType] newExtSubTableClass = lookupTypes[overflowRecord.tableType][subtable.__class__.LookupType]
newExtSubTable = newExtSubTableClass() newExtSubTable = newExtSubTableClass()
newExtSubTable.Format = extSubTable.Format newExtSubTable.Format = extSubTable.Format
newExtSubTable.ExtensionLookupType = extSubTable.ExtensionLookupType
lookup.SubTable.insert(subIndex + 1, newExtSubTable) lookup.SubTable.insert(subIndex + 1, newExtSubTable)
newSubTableClass = lookupTypes[overflowRecord.tableType][subTableType] newSubTableClass = lookupTypes[overflowRecord.tableType][subTableType]
newSubTable = newSubTableClass() newSubTable = newSubTableClass()
newExtSubTable.ExtSubTable = newSubTable newExtSubTable.ExtSubTable = newSubTable
else: else:
subTableType = lookup.LookupType subTableType = subtable.__class__.LookupType
newSubTableClass = lookupTypes[overflowRecord.tableType][subTableType] newSubTableClass = lookupTypes[overflowRecord.tableType][subTableType]
newSubTable = newSubTableClass() newSubTable = newSubTableClass()
lookup.SubTable.insert(subIndex + 1, newSubTable) lookup.SubTable.insert(subIndex + 1, newSubTable)