Возникли проблемы с win32 gui .EnumFontFamilies (python) - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь получить список всех шрифтов на 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. То же самое происходит со всем первым списком шрифтов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...