Skip to content

Commit

Permalink
Move a couple of functions outline
Browse files Browse the repository at this point in the history
  • Loading branch information
behdad committed Dec 17, 2023
1 parent bc9a935 commit 6561ed7
Showing 1 changed file with 22 additions and 19 deletions.
41 changes: 22 additions & 19 deletions Lib/fontTools/ttLib/tables/otConverters.py
Expand Up @@ -140,6 +140,11 @@ def __radd__(self, other):
return other + list(self)


def _base_converter_read_item(self, i):
self.reader.seek(self.pos + i * self.recordSize)
return self.conv.read(self.reader, self.font, {})


class BaseConverter(object):

"""Base class for converter objects. Apart from the constructor, this
Expand Down Expand Up @@ -186,11 +191,7 @@ def readArray(self, reader, font, tableDict, count):
l.append(self.read(reader, font, tableDict))
return l
else:
def read_item(self, i):
self.reader.seek(self.pos + i * self.recordSize)
return self.conv.read(self.reader, self.font, {})

l = _LazyList(read_item for i in range(count))
l = _LazyList(_base_converter_read_item for i in range(count))
l.reader = reader.copy()
l.pos = l.reader.pos
l.font = font
Expand Down Expand Up @@ -1832,6 +1833,20 @@ def xmlRead(self, attrs, content, font):
return safeEval(attrs["value"])


def cff2_index_read_item(self, i):
self.reader.seek(self.offset_pos + i * self.offSize)
offsets = self.readArray(2)
self.reader.seek(self.data_pos + offsets[0])
item = self.reader.readData(offsets[1] - offsets[0])

if self.itemClass is not None:
obj = self.itemClass()
obj.decompile(item, self.font)
item = obj

return item


class CFF2Index(BaseConverter):
def __init__(
self, name, repeat, aux, tableClass=None, *, itemClass=None, description=""
Expand All @@ -1854,6 +1869,7 @@ def getReadArray(reader, offSize):
3: reader.readUInt24Array,
4: reader.readULongArray,
}[offSize]

readArray = getReadArray(reader, offSize)

lazy = font.lazy is not False and count > 8
Expand All @@ -1876,20 +1892,7 @@ def getReadArray(reader, offSize):
lastOffset = offset
return items
else:
def read_item(self, i):
self.reader.seek(self.offset_pos + i * self.offSize)
offsets = self.readArray(2)
self.reader.seek(self.data_pos + offsets[0])
item = self.reader.readData(offsets[1] - offsets[0])

if self.itemClass is not None:
obj = self.itemClass()
obj.decompile(item, self.font)
item = obj

return item

l = _LazyList([read_item] * count)
l = _LazyList([cff2_index_read_item] * count)
l.reader = reader.copy()
l.offset_pos = l.reader.pos
l.data_pos = l.offset_pos + (count + 1) * offSize
Expand Down

0 comments on commit 6561ed7

Please sign in to comment.