From da29398a2695be0fb6a8b66ebae53cd16d2e19d3 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 9 Jul 2014 09:19:14 +0530 Subject: [PATCH] Fix some font directories from fonts.conf being ignored on linux when scanning the system for installed fonts. Fixes #1339257 [some font directories are ignored](https://bugs.launchpad.net/calibre/+bug/1339257) --- src/calibre/utils/fonts/scanner.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/calibre/utils/fonts/scanner.py b/src/calibre/utils/fonts/scanner.py index 35ae056749..19e61abaf7 100644 --- a/src/calibre/utils/fonts/scanner.py +++ b/src/calibre/utils/fonts/scanner.py @@ -78,15 +78,20 @@ def fc_list(): end(str_list) if len(ans) < 3: return default_font_dirs() - parents = [] + + parents, visited = [], set() for f in ans: - found = False - for p in parents: - if f.startswith(p): - found = True + path = os.path.normpath(os.path.abspath(os.path.realpath(f))) + if path == '/': + continue + head, tail = os.path.split(path) + while head and tail: + if head in visited: break - if not found: - parents.append(f) + head, tail = os.path.split(head) + else: + parents.append(path) + visited.add(path) return parents