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

View File

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