VB-самоучка взломать здесь с небольшим опытом. net опыта. Большинство постов, которые я нахожу на эту тему, довольно старые, поэтому я ищу наилучшее направление, которое нужно найти, прежде чем я начну спускаться по какой-то одной кроличьей норе, и чтобы убедиться, что нет чего-то нового, что я упускаю.
Я написал приложение на vb. net, которое загружает и выгружает шрифты. Я читаю реестр, чтобы увидеть, какие шрифты загружены, читаю информацию о шрифтах непосредственно из файлов шрифтов и использую AddFontResource, RemoveFontResource и изменяю реестр при перезагрузке компьютера.
Все это работает, но как указывает этот проницательный пост , то, что он в реестре, не означает, что он перечисляет. Мы храним наши производственные шрифты на сетевом диске, и Windows 10 ужасно при переподключении после перезапуска / входа в систему, поэтому я провел значительное количество исследований по перечислению всех загруженных шрифтов, и, что удивительно, похоже, что все, что с готовностью работает.
Использование API EnumFontFamiliesEx в значительной степени ошеломляет меня (только из-за моего недостатка знаний), и даже код, который я скачал , работает относительно хорошо, но не получает некоторые из загруженных шрифтов. То же, что и ОП этой ссылки, я не понял почему, по крайней мере пока. Я изменил этот загруженный код, чтобы использовать API EnumFontFamiliesExW, как предлагалось здесь , но все еще отсутствовали шрифты.
В этом посте было предложено что-то под названием DirectWrite, которое, я думаю, часть DirectX? Посмотрев на это для нескольких, уровень разочарования привел меня сюда.
Итак, я думаю, два вопроса:
(bigg ie) Есть ли что-то новее, чем EnumFontFamiliesExW?
Для шрифтов OTF и TTF я читаю "Typographi c Family name" (ID 16, как определено здесь ), когда это доступно, потому что это то, что отображают продукты Adobe. Этот идентификатор даже читается с помощью EnumFontFamiliesExW? Я не видел ничего, что указывало бы на это.
Yikes, извините так долго и спасибо за чтение, если вы сделали это так далеко!