def test_fromXML_no_transform(self): comp = GlyphComponent() for name, attrs, content in parseXML( ['<component glyphName="a" x="1" y="2" flags="0x2"/>']): comp.fromXML(name, attrs, content, ttFont=None) assert comp.glyphName == "a" assert comp.flags & ARGS_ARE_XY_VALUES != 0 assert (comp.x, comp.y) == (1, 2) assert not hasattr(comp, "transform")
def test_fromXML_reference_points(self): comp = GlyphComponent() for name, attrs, content in parseXML([ '<component glyphName="a" firstPt="1" secondPt="2" flags="0x0"/>' ]): comp.fromXML(name, attrs, content, ttFont=None) assert comp.glyphName == "a" assert comp.flags == 0 assert (comp.firstPt, comp.secondPt) == (1, 2) assert not hasattr(comp, "transform")
def test_fromXML_transform_scale(self): comp = GlyphComponent() for name, attrs, content in parseXML( ['<component glyphName="a" x="1" y="2" scale="0.3" flags="0xa"/>' ]): comp.fromXML(name, attrs, content, ttFont=None) assert comp.glyphName == "a" assert comp.flags & ARGS_ARE_XY_VALUES != 0 assert comp.flags & WE_HAVE_A_SCALE != 0 assert (comp.x, comp.y) == (1, 2) assert hasattr(comp, "transform") for value, expected in zip(itertools.chain(*comp.transform), [0.2999878, 0, 0, 0.2999878]): assert value == pytest.approx(expected)
def test_fromXML_transform_2x2_scale(self): comp = GlyphComponent() for name, attrs, content in parseXML([ '<component glyphName="a" x="1" y="2" scalex="0.6" scale01="-0.2" ' 'scale10="0.2" scaley="0.3" flags="0x82"/>' ]): comp.fromXML(name, attrs, content, ttFont=None) assert comp.glyphName == "a" assert comp.flags & ARGS_ARE_XY_VALUES != 0 assert comp.flags & WE_HAVE_A_TWO_BY_TWO != 0 assert (comp.x, comp.y) == (1, 2) assert hasattr(comp, "transform") for value, expected in zip( itertools.chain(*comp.transform), [0.5999756, -0.2000122, 0.2000122, 0.2999878]): assert value == pytest.approx(expected)