Skip to content

Instantly share code, notes, and snippets.

@moi15moi
Last active June 9, 2024 16:33
Show Gist options
  • Save moi15moi/0f157701a65cd3bc842bae5d4aac041e to your computer and use it in GitHub Desktop.
Save moi15moi/0f157701a65cd3bc842bae5d4aac041e to your computer and use it in GitHub Desktop.
List font filename
import os
import sys
import time
import winreg
from win32com.shell import shell, shellcon
from find_system_fonts_filename import get_system_fonts_filename
def get_win32_system_font():
with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts") as key:
paths = []
info = winreg.QueryInfoKey(key)
fonts_root = shell.SHGetKnownFolderPath(shellcon.FOLDERID_Fonts)
for index in range(info[1]):
value = winreg.EnumValue(key, index)
path = value[1] if os.path.isabs(value[1]) else os.path.join(fonts_root, value[1])
paths.append(path)
return paths
def get_win32_user_font():
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts") as key:
paths = []
info = winreg.QueryInfoKey(key)
for index in range(info[1]):
value = winreg.EnumValue(key, index)
paths.append(value[1])
return paths
def main():
start = time.time()
system_font = get_win32_system_font()
user_font = get_win32_user_font()
print(time.time() - start)
system_font.extend(user_font)
registry = set([font.lower() for font in system_font if not font.lower().endswith(".fon")])
start = time.time()
fonts_filename = get_system_fonts_filename()
print(time.time() - start)
fonts_filename = set([font.lower() for font in fonts_filename])
print(registry - fonts_filename)
print(fonts_filename - registry)
if __name__ == "__main__":
sys.exit(main())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment