コード例 #1
0
    def collect_font_stats(self, container, do_embed=False):
        self.font_stats = {}
        self.font_usage_map = {}
        self.font_spec_map = {}
        self.font_rule_map = {}
        self.all_font_rules = {}

        processed_sheets = {}
        for name, is_linear in container.spine_names:
            self.font_rule_map[name] = font_face_rules = []
            resolve_property, resolve_pseudo_property, select = resolve_styles(
                container,
                name,
                sheet_callback=partial(self.collect_font_face_rules, container,
                                       processed_sheets, name))

            for rule in font_face_rules:
                self.all_font_rules[rule['src']] = rule
                if rule['src'] not in self.font_stats:
                    self.font_stats[rule['src']] = set()

            self.font_usage_map[name] = {}
            self.font_spec_map[name] = set()
            self.get_font_usage(container, name, resolve_property,
                                resolve_pseudo_property, font_face_rules,
                                do_embed)
        self.font_stats = {
            k: {safe_chr(x)
                for x in v}
            for k, v in iteritems(self.font_stats)
        }
        for fum in itervalues(self.font_usage_map):
            for v in itervalues(fum):
                v['text'] = {safe_chr(x) for x in v['text']}
コード例 #2
0
ファイル: stats.py プロジェクト: Farb/calibre
    def collect_font_stats(self, container, do_embed=False):
        self.font_stats = {}
        self.font_usage_map = {}
        self.font_spec_map = {}
        self.font_rule_map = {}
        self.all_font_rules = {}

        processed_sheets = {}
        for name, is_linear in container.spine_names:
            self.font_rule_map[name] = font_face_rules = []
            resolve_property, resolve_pseudo_property, select = resolve_styles(container, name, sheet_callback=partial(
                self.collect_font_face_rules, container, processed_sheets, name))

            for rule in font_face_rules:
                self.all_font_rules[rule['src']] = rule
                if rule['src'] not in self.font_stats:
                    self.font_stats[rule['src']] = set()

            self.font_usage_map[name] = {}
            self.font_spec_map[name] = set()
            self.get_font_usage(container, name, resolve_property, resolve_pseudo_property, font_face_rules, do_embed)
        self.font_stats = {k:{safe_chr(x) for x in v} for k, v in self.font_stats.iteritems()}
        for fum in self.font_usage_map.itervalues():
            for v in fum.itervalues():
                v['text'] = {safe_chr(x) for x in v['text']}
コード例 #3
0
 def get_maps(html, styles=None, pseudo=False):
     html = '<html><head><link href="styles.css"></head><body>{}</body></html>'.format(html)
     c = VirtualContainer({'index.html':html, 'styles.css':styles or 'body { color: red; font-family: "Kovid Goyal", sans-serif }'})
     resolve_property, resolve_pseudo_property, select = resolve_styles(c, 'index.html')
     if pseudo:
         tp = partial(test_pseudo_property, select, resolve_pseudo_property)
     else:
         tp = partial(test_property, select, resolve_property)
     return tp
コード例 #4
0
ファイル: cascade.py プロジェクト: Riva3000/calibre
 def get_maps(html, styles=None, pseudo=False):
     html = '<html><head><link href="styles.css"></head><body>{}</body></html>'.format(html)
     c = VirtualContainer({'index.html':html, 'styles.css':styles or 'body { color: red; font-family: "Kovid Goyal", sans-serif }'})
     resolve_property, resolve_pseudo_property, select = resolve_styles(c, 'index.html')
     if pseudo:
         tp = partial(test_pseudo_property, select, resolve_pseudo_property)
     else:
         tp = partial(test_property, select, resolve_property)
     return tp