diff --git a/Lib/fontTools/ttLib/tables/otTables.py b/Lib/fontTools/ttLib/tables/otTables.py index 1a5fb39c7..d385a7510 100644 --- a/Lib/fontTools/ttLib/tables/otTables.py +++ b/Lib/fontTools/ttLib/tables/otTables.py @@ -49,27 +49,28 @@ log = logging.getLogger(__name__) class VarComponentFlags(IntFlag): - USE_MY_METRICS = 0x0001 - RESET_UNSPECIFIED_AXES = 0x0002 + RESET_UNSPECIFIED_AXES = 0x0001 - GID_IS_24BIT = 0x0004 + HAVE_AXES = 0x0002 - HAVE_AXES = 0x0008 + AXIS_VALUES_HAVE_VARIATION = 0x0004 + TRANSFORM_HAS_VARIATION = 0x0008 - AXIS_VALUES_HAVE_VARIATION = 0x0010 - TRANSFORM_HAS_VARIATION = 0x0020 + HAVE_TRANSLATE_X = 0x0010 + HAVE_TRANSLATE_Y = 0x0020 + HAVE_ROTATION = 0x0040 - HAVE_TRANSLATE_X = 0x0040 - HAVE_TRANSLATE_Y = 0x0080 - HAVE_ROTATION = 0x0100 - HAVE_SCALE_X = 0x0200 - HAVE_SCALE_Y = 0x0400 - HAVE_SKEW_X = 0x0800 - HAVE_SKEW_Y = 0x1000 - HAVE_TCENTER_X = 0x2000 - HAVE_TCENTER_Y = 0x4000 + USE_MY_METRICS = 0x0080 - RESERVED = 0x8000 + HAVE_SCALE_X = 0x0100 + HAVE_SCALE_Y = 0x0200 + HAVE_TCENTER_X = 0x0400 + HAVE_TCENTER_Y = 0x0800 + + GID_IS_24BIT = 0x4000 + + HAVE_SKEW_X = 0x1000 + HAVE_SKEW_Y = 0x2000 VarTransformMappingValues = namedtuple( @@ -160,8 +161,8 @@ class VarComponent: def decompile(self, data, font, localState): i = 0 - self.flags = flags = _unpacker[2](data[i : i + 2]) - i += 2 + self.flags, i = _readVarInt32(data, i) + flags = self.flags gidSize = 3 if flags & VarComponentFlags.GID_IS_24BIT else 2 glyphID = _unpacker[gidSize](data[i : i + gidSize]) @@ -262,7 +263,7 @@ class VarComponent: value = getattr(self.transform, attr_name) data.append(write_transform_component(value, mapping_values)) - return struct.pack(">H", flags) + bytesjoin(data) + return _writeVarInt32(flags) + bytesjoin(data) def toXML(self, writer, ttFont, attrs): attrs.append(("glyphName", self.glyphName)) diff --git a/Tests/ttLib/data/varc-6868.ttf b/Tests/ttLib/data/varc-6868.ttf index 400619188..47f85e9b7 100644 Binary files a/Tests/ttLib/data/varc-6868.ttf and b/Tests/ttLib/data/varc-6868.ttf differ diff --git a/Tests/ttLib/data/varc-ac00-ac01-500upem.ttx b/Tests/ttLib/data/varc-ac00-ac01-500upem.ttx index a4d572ed4..1c1d49ee2 100644 --- a/Tests/ttLib/data/varc-ac00-ac01-500upem.ttx +++ b/Tests/ttLib/data/varc-ac00-ac01-500upem.ttx @@ -313,19 +313,19 @@ - + - + - + - + - + diff --git a/Tests/ttLib/data/varc-ac00-ac01.ttf b/Tests/ttLib/data/varc-ac00-ac01.ttf index 2cccc232f..4b81eb6a8 100644 Binary files a/Tests/ttLib/data/varc-ac00-ac01.ttf and b/Tests/ttLib/data/varc-ac00-ac01.ttf differ