[avar] Adjust avar header to OpenType 1.8.1 erratum

https://www.microsoft.com/typography/otspec/errata.htm

No behavioral changes, no changes in API, no changes in binary format.
Resolves https://github.com/fonttools/fonttools/issues/807
This commit is contained in:
Sascha Brawer 2017-01-13 15:46:20 +01:00
parent c63fea0f8f
commit 849734d5b5

View File

@ -18,9 +18,12 @@ log = logging.getLogger(__name__)
AVAR_HEADER_FORMAT = """
> # big endian
version: L
axisCount: L
majorVersion: H
minorVersion: H
reserved: H
axisCount: H
"""
assert sstruct.calcsize(AVAR_HEADER_FORMAT) == 8, sstruct.calcsize(AVAR_HEADER_FORMAT)
class table__a_v_a_r(DefaultTable.DefaultTable):
@ -33,7 +36,12 @@ class table__a_v_a_r(DefaultTable.DefaultTable):
def compile(self, ttFont):
axisTags = [axis.axisTag for axis in ttFont["fvar"].axes]
header = {"version": 0x00010000, "axisCount": len(axisTags)}
header = {
"majorVersion": 1,
"minorVersion": 0,
"reserved": 0,
"axisCount": len(axisTags)
}
result = [sstruct.pack(AVAR_HEADER_FORMAT, header)]
for axis in axisTags:
mappings = sorted(self.segments[axis].items())
@ -49,8 +57,9 @@ class table__a_v_a_r(DefaultTable.DefaultTable):
header = {}
headerSize = sstruct.calcsize(AVAR_HEADER_FORMAT)
header = sstruct.unpack(AVAR_HEADER_FORMAT, data[0:headerSize])
if header["version"] != 0x00010000:
raise TTLibError("unsupported 'avar' version %04x" % header["version"])
majorVersion = header["majorVersion"]
if majorVersion != 1:
raise TTLibError("unsupported 'avar' version %d" % majorVersion)
pos = headerSize
for axis in axisTags:
segments = self.segments[axis] = {}