From 2844f87ba8bf42037cd16510d22b039aab7693b9 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 28 Oct 2012 18:19:46 +0530 Subject: [PATCH] Do not retry unsupported fonts every time the scanner is run --- src/calibre/utils/fonts/scanner.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/calibre/utils/fonts/scanner.py b/src/calibre/utils/fonts/scanner.py index c7317ee563..e90448726d 100644 --- a/src/calibre/utils/fonts/scanner.py +++ b/src/calibre/utils/fonts/scanner.py @@ -13,7 +13,7 @@ from threading import Thread from calibre import walk, prints, as_unicode from calibre.constants import config_dir, iswindows, isosx, plugins, DEBUG -from calibre.utils.fonts.metadata import FontMetadata +from calibre.utils.fonts.metadata import FontMetadata, UnsupportedFont from calibre.utils.fonts.utils import panose_to_css_generic_family from calibre.utils.icu import sort_key @@ -221,6 +221,7 @@ class Scanner(Thread): def build_families(self): families = defaultdict(list) for f in self.cached_fonts.itervalues(): + if not f: continue lf = icu_lower(f['font-family'] or '') if lf: families[lf].append(f) @@ -266,10 +267,14 @@ class Scanner(Thread): def read_font_metadata(self, path, fileid): with lopen(path, 'rb') as f: - fm = FontMetadata(f) - data = fm.to_dict() - data['path'] = path - self.cached_fonts[fileid] = data + try: + fm = FontMetadata(f) + except UnsupportedFont: + self.cached_fonts[fileid] = {} + else: + data = fm.to_dict() + data['path'] = path + self.cached_fonts[fileid] = data def dump_fonts(self): self.join()