woff2

class fontTools.ttLib.woff2.WOFF2DirectoryEntry[source]
fromFile(file)[source]
fromString(data)[source]
toString()[source]
class fontTools.ttLib.woff2.WOFF2FlavorData(reader=None)[source]
Flavor = 'woff2'
class fontTools.ttLib.woff2.WOFF2GlyfTable(tag=None)[source]

Decoder/Encoder for WOFF2 ‘glyf’ table transform.

reconstruct(data, ttFont)[source]

Decompile transformed ‘glyf’ data.

subStreams = ('nContourStream', 'nPointsStream', 'flagStream', 'glyphStream', 'compositeStream', 'bboxStream', 'instructionStream')
transform(ttFont)[source]

Return transformed ‘glyf’ data

class fontTools.ttLib.woff2.WOFF2LocaTable(tag=None)[source]

Same as parent class. The only difference is that it attempts to preserve the ‘indexFormat’ as encoded in the WOFF2 glyf table.

compile(ttFont)[source]
class fontTools.ttLib.woff2.WOFF2Reader(file, checkChecksums=1, fontNumber=-1)[source]
flavor = 'woff2'
reconstructTable(tag)[source]

Reconstruct table named ‘tag’ from transformed data.

class fontTools.ttLib.woff2.WOFF2Writer(file, numTables, sfntVersion='x00x01x00x00', flavor=None, flavorData=None)[source]
close()[source]

All tags must have been specified. Now write the table data and directory.

flavor = 'woff2'
reordersTables()[source]
transformTable(tag)[source]

Return transformed table data.

writeMasterChecksum()[source]

Write checkSumAdjustment to the transformBuffer.

fontTools.ttLib.woff2.base128Size(n)[source]

Return the length in bytes of a UIntBase128-encoded sequence with value n.

>>> base128Size(0)
1
>>> base128Size(24567)
3
>>> base128Size(2**32-1)
5
fontTools.ttLib.woff2.getKnownTagIndex(tag)[source]

Return index of ‘tag’ in woff2KnownTags list. Return 63 if not found.

fontTools.ttLib.woff2.pack255UShort(value)[source]

Encode unsigned integer in range 0 to 65535 (inclusive) to a bytestring using 255UInt16 variable-length encoding.

>>> pack255UShort(252) == b'\xfc'
True
>>> pack255UShort(506) == b'\xfe\x00'
True
>>> pack255UShort(762) == b'\xfd\x02\xfa'
True
fontTools.ttLib.woff2.packBase128(n)[source]

Encode unsigned integer in range 0 to 2**32-1 (inclusive) to a string of bytes using UIntBase128 variable-length encoding. Produce the shortest possible encoding.

>>> packBase128(63) == b"\x3f"
True
>>> packBase128(2**32-1) == b'\x8f\xff\xff\xff\x7f'
True
fontTools.ttLib.woff2.unpack255UShort(data)[source]

Read one to three bytes from 255UInt16-encoded input string, and return a tuple containing the decoded integer plus any leftover data.

>>> unpack255UShort(bytechr(252))[0]
252

Note that some numbers (e.g. 506) can have multiple encodings: >>> unpack255UShort(struct.pack(“BB”, 254, 0))[0] 506 >>> unpack255UShort(struct.pack(“BB”, 255, 253))[0] 506 >>> unpack255UShort(struct.pack(“BBB”, 253, 1, 250))[0] 506

fontTools.ttLib.woff2.unpackBase128(data)[source]

Read one to five bytes from UIntBase128-encoded input string, and return a tuple containing the decoded integer plus any leftover data.

>>> unpackBase128(b'\x3f\x00\x00') == (63, b"\x00\x00")
True
>>> unpackBase128(b'\x8f\xff\xff\xff\x7f')[0] == 4294967295
True
>>> unpackBase128(b'\x80\x80\x3f')  
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TTLibError: UIntBase128 value must not start with leading zeros
>>> unpackBase128(b'\x8f\xff\xff\xff\xff\x7f')[0]  
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TTLibError: UIntBase128-encoded sequence is longer than 5 bytes
>>> unpackBase128(b'\x90\x80\x80\x80\x00')[0]  
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TTLibError: UIntBase128 value exceeds 2**32-1