Last active
June 9, 2024 16:33
-
-
Save moi15moi/0f157701a65cd3bc842bae5d4aac041e to your computer and use it in GitHub Desktop.
List font filename
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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