Нахождение системных шрифтов с Delphi

Вы можете использовать GetValueOrDefault -метод:

Dim a As Boolean?
Dim b As Boolean = a.GetValueOrDefault()

5
задан lkessler 31 December 2008 в 00:18
поделиться

3 ответа

Screen.Fonts свойство заполняется через EnumFontFamiliesEx API-функция. Посмотрите в Forms.pas для примера вызывания той функции.

Функция обратного вызова, которую это называет, получит a TNewTextMetricEx запись и один из членов той записи являются a TFontSignature. fsUsb поле указывает, какие поддиапазоны Unicode шрифт утверждает, что поддерживал.

Система на самом деле не имеет "Шрифтов юникода". Даже шрифты, которые имеют Unicode слова на их имена, не имеют глифов для всех символов Unicode. Можно различать битовый массив, принтер и шрифты TrueType, но кроме того, лучшее можно сделать, должны выяснить, ли шрифт, Вы считаете поддержки символами, которые Вы хотите. И если бы шрифт не то, что Вы рассмотрели бы "Шрифтом юникода", но он поддерживает все символы, Вам нужно, затем какое значение он имеет? Для получения этой информации можно интересоваться GetFontUnicodeRanges.

Технология Microsoft для отображения пишет сообщение с различными шрифтами, на основе которых шрифты содержат, какие символы Uniscribe, особенно резервный шрифт. Я не знаю ни о какой поддержке Delphi Uniscribe; я начал писать ряд единиц импорта для него однажды, но мои интересы являются непостоянными, и я шел дальше к чему-то еще, прежде чем я завершил его. Блог Michael Kaplan иногда говорит о Uniscribe, таким образом, это - другое место для взгляда.

11
ответ дан 18 December 2019 в 06:52
поделиться

Я могу ответить на половину Вашего вопроса, можно получить список Шрифтов, к которым текущая среда имеет доступ как список строк от глобального Объекта на экране

т.е.

Listbox1.Items.AddStrings(Screen.Fonts);
8
ответ дан 18 December 2019 в 06:52
поделиться

Можно посмотреть в forms.pas источнике, чтобы видеть, как Codegear заполняют Экран. Шрифты путем перечисления шрифтов Windows. Возвращенная структура LOGFONT имеет участника набора символов, но это не обеспечивает простое определение 'Unicode'.

Насколько я знаю, что Windows не может сказать Вам явно, если шрифт является 'Unicode'. Кроме того, при попытке отобразиться, текст Unicode в Windows шрифта 'не-Unicode' может заменить другим шрифтом, таким образом, трудно сказать, будет ли шрифт или не отображать Unicode. Например, у меня есть древний файл шрифтов Arial Black, который не содержит глифов Unicode, но если я использую это для отображения японского текста в заметке D2009, японец обнаруживается правильно в Arial и остальных в Arial Black. В других примерах могут обнаружиться обычные пустые квадраты.

4
ответ дан 18 December 2019 в 06:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: