Example #1
0
 def collect_font_face_rules(self, container, processed, spine_name, sheet, sheet_name):
     if sheet_name in processed:
         sheet_rules = processed[sheet_name]
     else:
         sheet_rules = []
         if sheet_name != spine_name:
             processed[sheet_name] = sheet_rules
         for rule, base_name, rule_index in iterrules(container, sheet_name, rules=sheet, rule_type='FONT_FACE_RULE'):
             cssdict = {}
             for prop in iterdeclaration(rule.style):
                 if prop.name == 'font-family':
                     cssdict['font-family'] = [icu_lower(x) for x in parse_font_family(prop.propertyValue.cssText)]
                 elif prop.name.startswith('font-'):
                     cssdict[prop.name] = prop.propertyValue[0].value
                 elif prop.name == 'src':
                     for val in prop.propertyValue:
                         x = val.value
                         fname = container.href_to_name(x, sheet_name)
                         if container.has_name(fname):
                             cssdict['src'] = fname
                             break
                     else:
                         container.log.warn('The @font-face rule refers to a font file that does not exist in the book: %s' % prop.propertyValue.cssText)
             if 'src' not in cssdict:
                 continue
             ff = cssdict.get('font-family')
             if not ff or ff[0] in bad_fonts:
                 continue
             normalize_font_properties(cssdict)
             prepare_font_rule(cssdict)
             sheet_rules.append(cssdict)
     self.font_rule_map[spine_name].extend(sheet_rules)
Example #2
0
 def collect_font_face_rules(self, container, processed, spine_name, sheet, sheet_name):
     if sheet_name in processed:
         sheet_rules = processed[sheet_name]
     else:
         sheet_rules = []
         if sheet_name != spine_name:
             processed[sheet_name] = sheet_rules
         for rule, base_name, rule_index in iterrules(container, sheet_name, rules=sheet, rule_type='FONT_FACE_RULE'):
             cssdict = {}
             for prop in iterdeclaration(rule.style):
                 if prop.name == 'font-family':
                     cssdict['font-family'] = [icu_lower(x) for x in parse_font_family(prop.propertyValue.cssText)]
                 elif prop.name.startswith('font-'):
                     cssdict[prop.name] = prop.propertyValue[0].value
                 elif prop.name == 'src':
                     for val in prop.propertyValue:
                         x = val.value
                         fname = container.href_to_name(x, sheet_name)
                         if container.has_name(fname):
                             cssdict['src'] = fname
                             break
                     else:
                         container.log.warn('The @font-face rule refers to a font file that does not exist in the book: %s' % prop.propertyValue.cssText)
             if 'src' not in cssdict:
                 continue
             ff = cssdict.get('font-family')
             if not ff or ff[0] in bad_fonts:
                 continue
             normalize_font_properties(cssdict)
             prepare_font_rule(cssdict)
             sheet_rules.append(cssdict)
     self.font_rule_map[spine_name].extend(sheet_rules)
Example #3
0
 def get_rules(files, name='x/one.css', l=1, rule_type=None):
     c = VirtualContainer(files)
     rules = tuple(iterrules(c, name, rule_type=rule_type))
     self.assertEqual(len(rules), l)
     return rules, c
Example #4
0
 def get_rules(files, name='x/one.css', l=1, rule_type=None):
     c = VirtualContainer(files)
     rules = tuple(iterrules(c, name, rule_type=rule_type))
     self.assertEqual(len(rules), l)
     return rules, c