diff --git a/Lib/fontTools/ttLib/tables/otBase.py b/Lib/fontTools/ttLib/tables/otBase.py index 00a7c87ab..a33d7c1ab 100644 --- a/Lib/fontTools/ttLib/tables/otBase.py +++ b/Lib/fontTools/ttLib/tables/otBase.py @@ -390,16 +390,16 @@ class OffsetToWriter(object): # only works after self._doneWriting() has been called return hash((self.subWriter, self.offsetSize)) + class OTTableWriter(object): """Helper class to gather and assemble data for OpenType tables.""" - def __init__(self, localState=None, tableTag=None, offsetSize=2): + def __init__(self, localState=None, tableTag=None): self.items = [] self.pos = None self.localState = localState self.tableTag = tableTag - self.offsetSize = offsetSize self.parent = None def __setitem__(self, name, value): @@ -515,7 +515,9 @@ class OTTableWriter(object): # seen yet. We therefore replace the subwriter object with an equivalent # object, which deduplicates the tree. if not dontShare: - items[i].subWriter = internedTables.setdefault(item.subWriter, item.subWriter) + items[i].subWriter = internedTables.setdefault( + item.subWriter, item.subWriter + ) self.items = tuple(items) def _gatherTables(self, tables, extTables, done): @@ -549,7 +551,10 @@ class OTTableWriter(object): # Find coverage table for i in range(numItems): item = self.items[i] - if hasattr(item, "subWriter") and getattr(item.subWriter, "name", None) == "Coverage": + if ( + hasattr(item, "subWriter") + and getattr(item.subWriter, "name", None) == "Coverage" + ): sortCoverageLast = True break if id(item.subWriter) not in done: @@ -704,10 +709,8 @@ class OTTableWriter(object): # interface for gathering data, as used by table.compile() - def getSubWriter(self, offsetSize=2): - subwriter = self.__class__( - self.localState, self.tableTag, offsetSize=offsetSize - ) + def getSubWriter(self): + subwriter = self.__class__(self.localState, self.tableTag) subwriter.parent = ( self # because some subtables have idential values, we discard ) @@ -779,9 +782,8 @@ class OTTableWriter(object): assert len(tag) == 4, tag self.items.append(tag) - def writeSubTable(self, subWriter): - self.items.append(OffsetToWriter(subWriter, subWriter.offsetSize)) - del subWriter.offsetSize + def writeSubTable(self, subWriter, offsetSize): + self.items.append(OffsetToWriter(subWriter, offsetSize)) def writeCountReference(self, table, name, size=2, value=None): ref = CountReference(table, name, size=size, value=value) @@ -1372,7 +1374,7 @@ class ValueRecordFactory(object): if isDevice: if value: subWriter = writer.getSubWriter() - writer.writeSubTable(subWriter) + writer.writeSubTable(subWriter, offsetSize=2) value.compile(subWriter, font) else: writer.writeUShort(0) diff --git a/Lib/fontTools/ttLib/tables/otConverters.py b/Lib/fontTools/ttLib/tables/otConverters.py index 6b2a8c396..390f1660e 100644 --- a/Lib/fontTools/ttLib/tables/otConverters.py +++ b/Lib/fontTools/ttLib/tables/otConverters.py @@ -720,7 +720,6 @@ class StructWithLength(Struct): class Table(Struct): - staticSize = 2 def readOffset(self, reader): @@ -746,16 +745,15 @@ class Table(Struct): if value is None: self.writeNullOffset(writer) else: - subWriter = writer.getSubWriter(offsetSize=self.staticSize) + subWriter = writer.getSubWriter() subWriter.name = self.name if repeatIndex is not None: subWriter.repeatIndex = repeatIndex - writer.writeSubTable(subWriter) + writer.writeSubTable(subWriter, offsetSize=self.staticSize) value.compile(subWriter, font) class LTable(Table): - staticSize = 4 def readOffset(self, reader): @@ -767,7 +765,6 @@ class LTable(Table): # Table pointed to by a 24-bit, 3-byte long offset class Table24(Table): - staticSize = 3 def readOffset(self, reader): @@ -1147,13 +1144,13 @@ class AATLookupWithDataOffset(BaseConverter): offsetByGlyph[glyph] = offset # For calculating the offsets to our AATLookup and data table, # we can use the regular OTTableWriter infrastructure. - lookupWriter = writer.getSubWriter(offsetSize=4) + lookupWriter = writer.getSubWriter() lookup = AATLookup("DataOffsets", None, None, UShort) lookup.write(lookupWriter, font, tableDict, offsetByGlyph, None) - dataWriter = writer.getSubWriter(offsetSize=4) - writer.writeSubTable(lookupWriter) - writer.writeSubTable(dataWriter) + dataWriter = writer.getSubWriter() + writer.writeSubTable(lookupWriter, offsetSize=4) + writer.writeSubTable(dataWriter, offsetSize=4) for d in compiledData: dataWriter.writeData(d) @@ -1483,9 +1480,9 @@ class STXHeader(BaseConverter): ) writer = OTTableWriter() for lookup in table.PerGlyphLookups: - lookupWriter = writer.getSubWriter(offsetSize=4) + lookupWriter = writer.getSubWriter() self.perGlyphLookup.write(lookupWriter, font, {}, lookup, None) - writer.writeSubTable(lookupWriter) + writer.writeSubTable(lookupWriter, offsetSize=4) return writer.getAllData() def _compileLigComponents(self, table, font):