Esempio n. 1
0
    def __init__(self, namespace, rPr=None):
        self.namespace = namespace
        self.linked_style = None
        if rPr is None:
            for p in self.all_properties:
                setattr(self, p, inherit)
        else:
            X, g = namespace.XPath, namespace.get
            for p in (
                'b', 'bCs', 'caps', 'cs', 'dstrike', 'emboss', 'i', 'iCs', 'imprint', 'rtl', 'shadow',
                'smallCaps', 'strike', 'vanish', 'webHidden',
            ):
                setattr(self, p, binary_property(rPr, p, X, g))

            read_font(rPr, self, X, g)
            read_text_border(rPr, self, X, g)
            read_color(rPr, self, X, g)
            read_highlight(rPr, self, X, g)
            read_shd(rPr, self, X, g)
            read_letter_spacing(rPr, self, X, g)
            read_underline(rPr, self, X, g)
            read_vert_align(rPr, self, X, g)
            read_position(rPr, self, X, g)
            read_lang(rPr, self, X, g)

            for s in X('./w:rStyle[@w:val]')(rPr):
                self.linked_style = g(s, 'w:val')

        self._css = None
Esempio n. 2
0
 def __init__(self, namespace, tblPr=None):
     self.namespace = namespace
     if tblPr is None:
         for p in self.all_properties:
             setattr(self, p, inherit)
     else:
         self.overrides = inherit
         self.bidi = binary_property(tblPr, 'bidiVisual', namespace.XPath, namespace.get)
         for x in ('width', 'float', 'padding', 'shd', 'justification', 'spacing', 'indent', 'borders', 'band_size', 'look'):
             f = globals()['read_%s' % x]
             f(tblPr, self, self.namespace.XPath, self.namespace.get)
         parent = tblPr.getparent()
         if self.namespace.is_tag(parent, 'w:style'):
             self.overrides = {}
             for tblStylePr in self.namespace.XPath('./w:tblStylePr[@w:type]')(parent):
                 otype = self.namespace.get(tblStylePr, 'w:type')
                 orides = self.overrides[otype] = {}
                 for tblPr in self.namespace.XPath('./w:tblPr')(tblStylePr):
                     orides['table'] = TableStyle(self.namespace, tblPr)
                 for trPr in self.namespace.XPath('./w:trPr')(tblStylePr):
                     orides['row'] = RowStyle(self.namespace, trPr)
                 for tcPr in self.namespace.XPath('./w:tcPr')(tblStylePr):
                     orides['cell'] = CellStyle(self.namespace, tcPr)
                 for pPr in self.namespace.XPath('./w:pPr')(tblStylePr):
                     orides['para'] = ParagraphStyle(self.namespace, pPr)
                 for rPr in self.namespace.XPath('./w:rPr')(tblStylePr):
                     orides['run'] = RunStyle(self.namespace, rPr)
     self._css = None
Esempio n. 3
0
 def __init__(self, trPr=None):
     if trPr is None:
         for p in self.all_properties:
             setattr(self, p, inherit)
     else:
         for p in ('hidden', 'cantSplit'):
             setattr(self, p, binary_property(trPr, p))
         for p in ('spacing', 'height'):
             f = globals()['read_%s' % p]
             f(trPr, self)
     self._css = None
Esempio n. 4
0
 def __init__(self, namespace, trPr=None):
     self.namespace = namespace
     if trPr is None:
         for p in self.all_properties:
             setattr(self, p, inherit)
     else:
         for p in ("hidden", "cantSplit"):
             setattr(self, p, binary_property(trPr, p, namespace.XPath, namespace.get))
         for p in ("spacing", "height"):
             f = globals()["read_%s" % p]
             f(trPr, self, namespace.XPath, namespace.get)
     self._css = None
Esempio n. 5
0
 def __init__(self, namespace, trPr=None):
     self.namespace = namespace
     if trPr is None:
         for p in self.all_properties:
             setattr(self, p, inherit)
     else:
         for p in ('hidden', 'cantSplit'):
             setattr(
                 self, p,
                 binary_property(trPr, p, namespace.XPath, namespace.get))
         for p in ('spacing', 'height'):
             f = globals()['read_%s' % p]
             f(trPr, self, namespace.XPath, namespace.get)
     self._css = None
Esempio n. 6
0
    def __init__(self, elem, embed_relationships, XPath, get):
        self.name = self.family_name = get(elem, 'w:name')
        self.alt_names = tuple(
            get(x, 'w:val') for x in XPath('./w:altName')(elem))
        if self.alt_names and not has_system_fonts(self.name):
            for x in self.alt_names:
                if has_system_fonts(x):
                    self.family_name = x
                    break

        self.embedded = {}
        for x in ('Regular', 'Bold', 'Italic', 'BoldItalic'):
            for y in XPath('./w:embed%s[@r:id]' % x)(elem):
                rid = get(y, 'r:id')
                key = get(y, 'w:fontKey')
                subsetted = get(y, 'w:subsetted') in {'1', 'true', 'on'}
                if rid in embed_relationships:
                    self.embedded[x] = Embed(embed_relationships[rid], key,
                                             subsetted)

        self.generic_family = 'auto'
        for x in XPath('./w:family[@w:val]')(elem):
            self.generic_family = get(x, 'w:val', 'auto')

        ntt = binary_property(elem, 'notTrueType', XPath, get)
        self.is_ttf = ntt is inherit or not ntt

        self.panose1 = None
        self.panose_name = None
        for x in XPath('./w:panose1[@w:val]')(elem):
            try:
                v = get(x, 'w:val')
                v = tuple(int(v[i:i + 2], 16) for i in range(0, len(v), 2))
            except (TypeError, ValueError, IndexError):
                pass
            else:
                self.panose1 = v
                self.panose_name = panose_to_css_generic_family(v)

        self.css_generic_family = {
            'roman': 'serif',
            'swiss': 'sans-serif',
            'modern': 'monospace',
            'decorative': 'fantasy',
            'script': 'cursive'
        }.get(self.generic_family, None)
        self.css_generic_family = self.css_generic_family or self.panose_name or 'serif'
Esempio n. 7
0
    def __init__(self, rPr=None):
        self.linked_style = None
        if rPr is None:
            for p in self.all_properties:
                setattr(self, p, inherit)
        else:
            for p in (
                "b",
                "bCs",
                "caps",
                "cs",
                "dstrike",
                "emboss",
                "i",
                "iCs",
                "imprint",
                "rtl",
                "shadow",
                "smallCaps",
                "strike",
                "vanish",
                "webHidden",
            ):
                setattr(self, p, binary_property(rPr, p))

            for x in (
                "text_border",
                "color",
                "highlight",
                "shd",
                "letter_spacing",
                "sz",
                "underline",
                "vert_align",
                "lang",
                "font_family",
            ):
                f = globals()["read_%s" % x]
                f(rPr, self)

            for s in XPath("./w:rStyle[@w:val]")(rPr):
                self.linked_style = get(s, "w:val")

        self._css = None
    def __init__(self, namespace, rPr=None):
        self.namespace = namespace
        self.linked_style = None
        if rPr is None:
            for p in self.all_properties:
                setattr(self, p, inherit)
        else:
            X, g = namespace.XPath, namespace.get
            for p in (
                    'b',
                    'bCs',
                    'caps',
                    'cs',
                    'dstrike',
                    'emboss',
                    'i',
                    'iCs',
                    'imprint',
                    'rtl',
                    'shadow',
                    'smallCaps',
                    'strike',
                    'vanish',
                    'webHidden',
            ):
                setattr(self, p, binary_property(rPr, p, X, g))

            read_font(rPr, self, X, g)
            read_font_cs(rPr, self, X, g)
            read_text_border(rPr, self, X, g)
            read_color(rPr, self, X, g)
            read_highlight(rPr, self, X, g)
            read_shd(rPr, self, X, g)
            read_letter_spacing(rPr, self, X, g)
            read_underline(rPr, self, X, g)
            read_vert_align(rPr, self, X, g)
            read_position(rPr, self, X, g)
            read_lang(rPr, self, X, g)

            for s in X('./w:rStyle[@w:val]')(rPr):
                self.linked_style = g(s, 'w:val')

        self._css = None
Esempio n. 9
0
    def __init__(self, rPr=None):
        self.linked_style = None
        if rPr is None:
            for p in self.all_properties:
                setattr(self, p, inherit)
        else:
            for p in (
                'b', 'bCs', 'caps', 'cs', 'dstrike', 'emboss', 'i', 'iCs', 'imprint', 'rtl', 'shadow',
                'smallCaps', 'strike', 'vanish', 'webHidden',
            ):
                setattr(self, p, binary_property(rPr, p))

            for x in ('text_border', 'color', 'highlight', 'shd', 'letter_spacing', 'sz', 'underline', 'vert_align', 'lang', 'font_family'):
                f = globals()['read_%s' % x]
                f(rPr, self)

            for s in XPath('./w:rStyle[@w:val]')(rPr):
                self.linked_style = get(s, 'w:val')

        self._css = None
Esempio n. 10
0
    def __init__(self, rPr=None):
        self.linked_style = None
        if rPr is None:
            for p in self.all_properties:
                setattr(self, p, inherit)
        else:
            for p in (
                'b', 'bCs', 'caps', 'cs', 'dstrike', 'emboss', 'i', 'iCs', 'imprint', 'rtl', 'shadow',
                'smallCaps', 'strike', 'vanish', 'webHidden',
            ):
                setattr(self, p, binary_property(rPr, p))

            for x in ('text_border', 'color', 'highlight', 'shd', 'letter_spacing', 'sz', 'underline', 'vert_align', 'lang', 'font_family'):
                f = globals()['read_%s' % x]
                f(rPr, self)

            for s in XPath('./w:rStyle[@w:val]')(rPr):
                self.linked_style = get(s, 'w:val')

        self._css = None
Esempio n. 11
0
    def __init__(self, elem, embed_relationships, XPath, get):
        self.name = self.family_name = get(elem, 'w:name')
        self.alt_names = tuple(get(x, 'w:val') for x in XPath('./w:altName')(elem))
        if self.alt_names and not has_system_fonts(self.name):
            for x in self.alt_names:
                if has_system_fonts(x):
                    self.family_name = x
                    break

        self.embedded = {}
        for x in ('Regular', 'Bold', 'Italic', 'BoldItalic'):
            for y in XPath('./w:embed%s[@r:id]' % x)(elem):
                rid = get(y, 'r:id')
                key = get(y, 'w:fontKey')
                subsetted = get(y, 'w:subsetted') in {'1', 'true', 'on'}
                if rid in embed_relationships:
                    self.embedded[x] = Embed(embed_relationships[rid], key, subsetted)

        self.generic_family = 'auto'
        for x in XPath('./w:family[@w:val]')(elem):
            self.generic_family = get(x, 'w:val', 'auto')

        ntt = binary_property(elem, 'notTrueType', XPath, get)
        self.is_ttf = ntt is inherit or not ntt

        self.panose1 = None
        self.panose_name = None
        for x in XPath('./w:panose1[@w:val]')(elem):
            try:
                v = get(x, 'w:val')
                v = tuple(int(v[i:i+2], 16) for i in xrange(0, len(v), 2))
            except (TypeError, ValueError, IndexError):
                pass
            else:
                self.panose1 = v
                self.panose_name = panose_to_css_generic_family(v)

        self.css_generic_family = {'roman':'serif', 'swiss':'sans-serif', 'modern':'monospace',
                                   'decorative':'fantasy', 'script':'cursive'}.get(self.generic_family, None)
        self.css_generic_family = self.css_generic_family or self.panose_name or 'serif'