, связанные с ранее должности, это, кажется, является надежным способом:
1) Прочитайте список зарегистрированных шрифтов Windows, из HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Fonts \ Здесь вы найдете имена файлов и альтернативные пути к файлам. Имена шрифтов не являются полезными, поскольку они могут изменяться с помощью локали пользователя.
2) Загрузите файлы TrueType (.ttf, .ttc, .otf): Используйте FreeType https://www.freetype.org/). Просто инициализируйте библиотеку freetype и загрузите ее с помощью FT_New_Face (библиотека, путь, 0, &).
3) Получите шрифт Family name, используя FreeType. Используйте FT_Get_Sfnt_Name_Count() и FT_Get_Sfnt_Name(), чтобы получить таблицу строк. Вам нужно будет проверить, является ли кодировка Ansi, UTF16 или другим, поскольку некоторые строки будут на нескольких разных языках и кодировках.
4) Получите свойства TrueType OS2. Используйте (TT_OS2 *) FT_Get_Sfnt_Table (лицо, ft_sfnt_os2), чтобы получить структуру OS2. Интерпретировать структуру, используя документы, такие как https://www.microsoft.com/typography/otspec/os2.htm#fc
5) Теперь у вас есть путь к файлу шрифта, имя семейства, свойства стиля и другая информация. Создайте список этих и функций для поиска файла на основе семейства шрифтов и стиля.
Если у вас есть HFONT-дескриптор шрифта, вы можете попробовать свое [предлагаемое решение] (http://stackoverflow.com/questions/16769758/get-a-font-filename-based-on-the-font-font- ручка-HFONT). Я не хотел добавлять ответ здесь, потому что вопрос неясен, если у вас есть дескриптор шрифта или нет. –