Use inheritance to avoid repeated code in WOFF2FlavorData initializer

This commit is contained in:
Simon Cozens 2020-05-07 21:04:52 +01:00
parent 63df810c5e
commit 253de13377
2 changed files with 9 additions and 21 deletions

View File

@ -553,8 +553,7 @@ class WOFFFlavorData():
reader.file.seek(reader.metaOffset)
rawData = reader.file.read(reader.metaLength)
assert len(rawData) == reader.metaLength
import zlib
data = zlib.decompress(rawData)
data = self._decompress(rawData)
assert len(data) == reader.metaOrigLength
self.metaData = data
if reader.privLength:
@ -563,6 +562,10 @@ class WOFFFlavorData():
assert len(data) == reader.privLength
self.privData = data
def _decompress(self, rawData):
import zlib
return zlib.decompress(rawData)
def calcChecksum(data):
"""Calculate the checksum for an arbitrary block of data.

View File

@ -1168,26 +1168,8 @@ class WOFF2FlavorData(WOFFFlavorData):
raise ValueError(
"'glyf' and 'loca' must be transformed (or not) together"
)
self.majorVersion = None
self.minorVersion = None
self.metaData = None
self.privData = None
super(WOFF2FlavorData, self).__init__(reader=reader)
if reader:
self.majorVersion = reader.majorVersion
self.minorVersion = reader.minorVersion
if reader.metaLength:
reader.file.seek(reader.metaOffset)
rawData = reader.file.read(reader.metaLength)
assert len(rawData) == reader.metaLength
metaData = brotli.decompress(rawData)
assert len(metaData) == reader.metaOrigLength
self.metaData = metaData
if reader.privLength:
reader.file.seek(reader.privOffset)
privData = reader.file.read(reader.privLength)
assert len(privData) == reader.privLength
self.privData = privData
transformedTables = [
tag
for tag, entry in reader.tables.items()
@ -1206,6 +1188,9 @@ class WOFF2FlavorData(WOFFFlavorData):
self.transformedTables = set(transformedTables)
def _decompress(self, rawData):
return brotli.decompress(rawData)
def unpackBase128(data):
r""" Read one to five bytes from UIntBase128-encoded input string, and return