[glyf/VarComponent] Scale rotation values
This commit is contained in:
parent
828a407846
commit
76802fbd92
@ -406,6 +406,7 @@ class table__g_l_y_f(DefaultTable.DefaultTable):
|
|||||||
controls.append(i)
|
controls.append(i)
|
||||||
coords.append((v, 0))
|
coords.append((v, 0))
|
||||||
|
|
||||||
|
# Err; convert to integers. Ugh.
|
||||||
if component.flags & (VarComponentFlags.HAVE_TRANSLATE_X | VarComponentFlags.HAVE_TRANSLATE_Y):
|
if component.flags & (VarComponentFlags.HAVE_TRANSLATE_X | VarComponentFlags.HAVE_TRANSLATE_Y):
|
||||||
controls.append("translate")
|
controls.append("translate")
|
||||||
coords.append((component.translateX, component.translateY))
|
coords.append((component.translateX, component.translateY))
|
||||||
@ -1697,20 +1698,20 @@ class VarComponentFlags (IntFlag):
|
|||||||
|
|
||||||
|
|
||||||
VarComponentTransformMappingValues = namedtuple(
|
VarComponentTransformMappingValues = namedtuple(
|
||||||
"VarComponentTransformMappingValues", ["flag", "fractionalBits", "defaultValue"]
|
"VarComponentTransformMappingValues", ["flag", "fractionalBits", "scale", "defaultValue"]
|
||||||
)
|
)
|
||||||
|
|
||||||
namedtuple
|
namedtuple
|
||||||
var_component_transform_mapping = {
|
var_component_transform_mapping = {
|
||||||
"translateX": VarComponentTransformMappingValues(VarComponentFlags.HAVE_TRANSLATE_X, 0, 0),
|
"translateX": VarComponentTransformMappingValues(VarComponentFlags.HAVE_TRANSLATE_X, 0, 1, 0),
|
||||||
"translateY": VarComponentTransformMappingValues(VarComponentFlags.HAVE_TRANSLATE_Y, 0, 0),
|
"translateY": VarComponentTransformMappingValues(VarComponentFlags.HAVE_TRANSLATE_Y, 0, 1, 0),
|
||||||
"rotation": VarComponentTransformMappingValues(VarComponentFlags.HAVE_ROTATION, 12, 0),
|
"rotation": VarComponentTransformMappingValues(VarComponentFlags.HAVE_ROTATION, 12, 180, 0),
|
||||||
"scaleX": VarComponentTransformMappingValues(VarComponentFlags.HAVE_SCALE_X, 10, 1),
|
"scaleX": VarComponentTransformMappingValues(VarComponentFlags.HAVE_SCALE_X, 10, 1, 1),
|
||||||
"scaleY": VarComponentTransformMappingValues(VarComponentFlags.HAVE_SCALE_Y, 10, 1),
|
"scaleY": VarComponentTransformMappingValues(VarComponentFlags.HAVE_SCALE_Y, 10, 1, 1),
|
||||||
"skewX": VarComponentTransformMappingValues(VarComponentFlags.HAVE_SKEW_X, 12, 0),
|
"skewX": VarComponentTransformMappingValues(VarComponentFlags.HAVE_SKEW_X, 12, 180, 0),
|
||||||
"skewY": VarComponentTransformMappingValues(VarComponentFlags.HAVE_SKEW_Y, 12, 0),
|
"skewY": VarComponentTransformMappingValues(VarComponentFlags.HAVE_SKEW_Y, 12, 180, 0),
|
||||||
"tCenterX": VarComponentTransformMappingValues(VarComponentFlags.HAVE_TCENTER_X, 0, 0),
|
"tCenterX": VarComponentTransformMappingValues(VarComponentFlags.HAVE_TCENTER_X, 0, 1, 0),
|
||||||
"tCenterY": VarComponentTransformMappingValues(VarComponentFlags.HAVE_TCENTER_Y, 0, 0),
|
"tCenterY": VarComponentTransformMappingValues(VarComponentFlags.HAVE_TCENTER_Y, 0, 1, 0),
|
||||||
}
|
}
|
||||||
|
|
||||||
class GlyphVarComponent(object):
|
class GlyphVarComponent(object):
|
||||||
@ -1758,7 +1759,7 @@ class GlyphVarComponent(object):
|
|||||||
|
|
||||||
def read_transform_component(data, values):
|
def read_transform_component(data, values):
|
||||||
if flags & values.flag:
|
if flags & values.flag:
|
||||||
return data[2:], fi2fl(struct.unpack(">h", data[:2])[0], values.fractionalBits)
|
return data[2:], fi2fl(struct.unpack(">h", data[:2])[0], values.fractionalBits) * values.scale
|
||||||
else:
|
else:
|
||||||
return data, values.defaultValue
|
return data, values.defaultValue
|
||||||
|
|
||||||
@ -1780,7 +1781,7 @@ class GlyphVarComponent(object):
|
|||||||
|
|
||||||
attrs = attrs + [("flags", hex(self.flags))]
|
attrs = attrs + [("flags", hex(self.flags))]
|
||||||
|
|
||||||
for attr_name, (_, _, defaultValue) in var_component_transform_mapping.items():
|
for attr_name, (_, _, _, defaultValue) in var_component_transform_mapping.items():
|
||||||
v = getattr(self, attr_name, defaultValue)
|
v = getattr(self, attr_name, defaultValue)
|
||||||
if v != defaultValue:
|
if v != defaultValue:
|
||||||
attrs.append((attr_name, v))
|
attrs.append((attr_name, v))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user