Свойство Screen.Fonts
заполняется через API-функцию EnumFontFamiliesEx
. Посмотрите в Forms.pas пример вызова этой функции.
Функция обратного вызова, которую она вызывает, получит запись TNewTextMetricEx
, и один из членов этой записи будет TFontSignature
. Поле fsUsb
указывает, какой Unicode поддиапазон поддерживает шрифт.
На самом деле система не имеет "шрифтов Unicode". Даже шрифты, имеющие в своих именах слово Unicode , не имеют глифов для всех символов Unicode. Вы можете различать растровые, принтерные и TrueType шрифты, но кроме этого, лучшее, что вы можете сделать, это выяснить, поддерживает ли рассматриваемый вами шрифт символы, которые вы хотите. И если шрифт не тот, который вы бы назвали «шрифт Unicode», но он поддерживает все необходимые вам символы, тогда какая разница? Чтобы получить эту информацию, вас могут заинтересовать GetFontUnicodeRanges
.
Технология Microsoft для отображения текста с разными шрифтами, в зависимости от того, какие шрифты содержат какие символы, Uniscribe , в частности откат шрифта . Я не знаю какой-либо поддержки Delphi для Uniscribe; Я начал писать набор единиц импорта для него один раз, но мои интересы непостоянны, и я перешел к чему-то еще, прежде чем закончил это. Блог Майкла Каплана иногда говорит о Uniscribe, так что это еще одно место для поиска.