示例#1
0
    def test_convert01(self):
        # with context
        parser = SVGParser()
        root = parser.create_element('svg')
        group = root.create_sub_element('g')
        group.attributes.update({
            'font-family': 'DejaVu Sans, sans-serif',
            'font-size': '16',
        })
        # 1(rem) = 16(px)
        text = group.create_sub_element('text')

        a = SVGLength('1in', context=text)
        self.assertEqual('in', a.unit)
        self.assertEqual('1in', a.tostring())

        a.convert(SVGLength.TYPE_CM)  # 1(in) = 2.54(cm)
        self.assertEqual('cm', a.unit)
        self.assertEqual('2.54cm', a.tostring())

        a.convert(SVGLength.TYPE_PX)  # 2.54(cm) = 96(px)
        self.assertEqual('px', a.unit)
        self.assertEqual('96px', a.tostring())

        a.convert(SVGLength.TYPE_NUMBER)  # 96(px) = 96
        self.assertIsNone(a.unit)
        self.assertEqual('96', a.tostring())

        a.convert(SVGLength.TYPE_MM)  # 96(px) = 25.4(mm)
        self.assertEqual('mm', a.unit)
        self.assertEqual('25.4mm', a.tostring())

        # 100(%) = 16(px)
        a.convert(SVGLength.TYPE_PERCENTAGE)  # 96(px) = 600(%)
        self.assertEqual('%', a.unit)
        self.assertEqual('600%', a.tostring())

        # 100(%) = 1(em)
        a.convert(SVGLength.TYPE_EMS)  # 600(%) = 6(em)
        self.assertEqual('em', a.unit)
        self.assertEqual('6em', a.tostring())

        # 1(ex) = x-height(px)
        # 96(px) -> x-height: 53(px)
        # 96(px) / 53(px) = 1.8113...
        a.convert(SVGLength.TYPE_EXS)
        self.assertEqual('ex', a.unit)
        self.assertEqual('1.811ex', a.tostring())

        # font-family: "DejaVu Sans", sans-serif
        # element font size: 16(px) -> 1(ex) = 9(px)
        # 1.8113(ex) = 1.8113 * 9 = 16.3017...(px)
        # 1(px) = 0.75(pt)
        # 16.3017 * 0.75 = 12.2263...(pt)
        a.convert(SVGLength.TYPE_PT)
        self.assertEqual('pt', a.unit)
        self.assertEqual('12.226pt', a.tostring())

        # 1(pt) = 1 / 12(pc)
        # 12.2263(pt) = 1.0189...(pc)
        a.convert(SVGLength.TYPE_PC)
        self.assertEqual('pc', a.unit)
        self.assertEqual('1.019pc', a.tostring())
示例#2
0
    def test_convert03(self):
        # without context
        Font.default_font_size = 20

        a = SVGLength('1em')
        self.assertEqual('em', a.unit)
        self.assertEqual('1em', a.tostring())

        # 1(em) = 2(ex)
        a.convert(SVGLength.TYPE_EXS)
        self.assertEqual('ex', a.unit)
        self.assertEqual('2ex', a.tostring())

        # 1(em) = default font size(px)
        a.convert(SVGLength.TYPE_PX)
        self.assertEqual('px', a.unit)
        self.assertEqual('20px', a.tostring())

        # 1(rem) = default font size(px)
        a.convert(SVGLength.TYPE_REMS)
        self.assertEqual('rem', a.unit)
        self.assertEqual('1rem', a.tostring())

        # 1(ch) = default font size / 2(px)
        a.convert(SVGLength.TYPE_CHS)
        self.assertEqual('ch', a.unit)
        self.assertEqual('2ch', a.tostring())

        # 100(%) = default font size(px)
        a.convert(SVGLength.TYPE_PERCENTAGE)
        self.assertEqual('%', a.unit)
        self.assertEqual('100%', a.tostring())

        # 1(ex) = 0.5(em)
        a = SVGLength('1ex')
        a.convert(SVGLength.TYPE_EMS)
        self.assertEqual('em', a.unit)
        self.assertEqual('0.5em', a.tostring())