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']}
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']}
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