diff --git a/Lib/fontTools/ttLib/sfnt.py b/Lib/fontTools/ttLib/sfnt.py index 9be149e40..9c45305d5 100644 --- a/Lib/fontTools/ttLib/sfnt.py +++ b/Lib/fontTools/ttLib/sfnt.py @@ -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. diff --git a/Lib/fontTools/ttLib/woff2.py b/Lib/fontTools/ttLib/woff2.py index 849bf0ff7..07d1f95e5 100644 --- a/Lib/fontTools/ttLib/woff2.py +++ b/Lib/fontTools/ttLib/woff2.py @@ -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