More robust system font finding

This commit is contained in:
Kovid Goyal 2008-02-09 18:24:03 +00:00
parent d5219ac296
commit 4f6955f989

View File

@ -165,10 +165,17 @@ def set_translator():
set_translator() set_translator()
font_families = {} font_families = {}
def get_font_families(): def get_font_families(cached=None):
global font_families global font_families
if cached is not None:
font_families = cached
if not font_families: if not font_families:
try:
ffiles = findsystem.findFonts() ffiles = findsystem.findFonts()
except Exception, err:
print 'WARNING: Could not find fonts on your system.'
print err
else:
zlist = [] zlist = []
for ff in ffiles: for ff in ffiles:
try: try:
@ -180,9 +187,14 @@ def get_font_families():
except: except:
wt, italic = 0, 0 wt, italic = 0, 0
if wt == 400 and italic == 0: if wt == 400 and italic == 0:
try:
family = describe.shortName(font)[1].strip() family = describe.shortName(font)[1].strip()
except: # Windows strikes again!
continue
zlist.append((family, ff)) zlist.append((family, ff))
font_families = dict(zlist) font_families = dict(zlist)
return font_families return font_families
def sanitize_file_name(name): def sanitize_file_name(name):