Я пытаюсь получить список всех шрифтов на win7 через python win32 gui .EnumFontFamilies. Очевидно, это не работает на python 3.8, поэтому я перешел на другую машину с python 2.7.15 просто для того, чтобы заставить ее работать. Я бегу против него один раз, чтобы получить имя семейства шрифтов, а затем использую эти значения, чтобы получить остальные имена семейства. Возвращает только имя для каждого члена семьи.
def callback(font, tm, fonttype, namelist):
namelist.append(font.lfFaceName)
return True
def typefacelist():
fontlist = []
font2list = []
hdc = win32gui.GetDC(None)
win32gui.EnumFontFamilies(hdc, None, callback, fontlist) # 2nd term for entire list is None
win32gui.ReleaseDC(hdc, None)
for x in fontlist:
if x.find('Garamond') > -1:
print(x)
tempfontlist = []
hdc2 = win32gui.GetDC(None)
win32gui.EnumFontFamilies(hdc2, x, callback, tempfontlist) # 2nd term for entire list is None
win32gui.ReleaseDC(hdc2, None)
print(tempfontlist)
print('-------')
Это дает результат:
AGaramond
['AGaramond', 'AGaramond', 'AGaramond', 'AGaramond']
-------
Garamond 3
['Garamond 3', 'Garamond 3', 'Garamond 3', 'Garamond 3']
-------
Эти первые четыре Гарамада: Garamond Regular, Bold, Itali c, и жирный италий c. То же самое происходит со всем первым списком шрифтов.