Поделиться через


Перечисление и выделение международных шрифтов

В каждом основном выпуске Windows добавлены шрифты для поддержки международных языков и скриптов. Ознакомьтесь со статьей Поддержка скриптов и шрифтов в Windows , чтобы ознакомиться с шрифтами, добавленными в каждой версии Windows с Windows 2000, а также поддерживаемыми ими скриптами, регионами и языками.

EnumFontFamiliesEx

Для перечисления международных шрифтов в приложении можно использовать функцию EnumFontFamiliesEx . EnumFontFamiliesEx позволяет перечислять шрифты на основе имени шрифта и набора символов путем передачи указателя на структуру LOGFONT , содержащую имя шрифта и сведения о наборе символов. Чтобы вызвать EnumFontFamiliesEx, можно указать имя шрифта или набор символов или запросить любой доступный вариант. При задании для имени шрифта LOGFONT значения NULL перечисляются все имена шрифтов. Если задать для поля charset значение DEFAULT_CHARSET перечисление всех наборов символов.

Обратите внимание, что наборы символов — это устаревшее понятие, соответствующее кодировке до Юникода. В настоящее время нет механизма перечисления шрифтов, поддерживающих произвольные скрипты или диапазоны символов в Юникоде. Структура NEWTEXTMETRICEX , переданная EnumFontFamExProc , включает структуру FONTSIGNATURE , которая включает более подробные объявления, предоставленные разработчиком шрифта о том, какие кодовые страницы и какие диапазоны Юникода поддерживает шрифт. Чтобы точнее определить, какие диапазоны символов поддерживает данный шрифт, выберите шрифт в контексте устройства и вызовите Метод GetFontUnicodeRanges. Обратите внимание, что этот API не поддерживает дополнительные плоскости Юникода.

ВыберитеФонт

Функцию ChooseFont можно использовать для отображения общего диалогового окна, которое позволяет пользователю выбирать международные шрифты на основе набора символов. Вы можете указать один из трех флагов, чтобы определить, какие шрифты будут отображаться в диалоговом окне Выбор Фонт на основе набора символов: CF_SCRIPTSONLY, CF_SELECTSCRIPT или CF_NOSCRIPTSEL.

Флаг CF_SCRIPTSONLY указывает API, что нужно перечислить шрифты для всех наборов символов, которые не являются символами или OEM.

Если вы хотите отображать только шрифты, охватывающие определенный набор символов, необходимо указать флаг CF_SELECTSCRIPT. Перед вызовом ChooseFont инициализируйте поле lfCharSet структуры LOGFONT . Если вы хотите указать только набор символов, задайте для других полей структуры LOGFONTзначение NULL. Чтобы функция ChooseFont посмотрела на структуру LOGFONT , необходимо также указать флаг CF_INITTOLOGFONTSTRUCT .

Наконец, как и в случае с любым другим полем в диалоговом окне Шрифт, можно отобразить пустой список скриптов. Эта возможность полезна, если пользователь выделил несколько различных шрифтов, охватывающих несколько наборов символов. В этом случае можно вызвать ChooseFont с флагом CF_NOSCRIPTSEL .

Начиная с Windows 7, в ChooseFont реализована поддержка скрытия шрифтов из списков выбора шрифтов. ChooseFont выводит список только отображаемых шрифтов и отфильтровывает скрытые шрифты при отображении шрифтов в списке. Добавлен дополнительный флаг (CF_INACTIVEFONTS) в элементе flags структуры ChooseFont , который позволяет отображать все установленные шрифты в списке шрифтов, аналогично тому, как Функция ChooseFont вела себя до Windows 7. Подробные сведения о различиях в поведении в Windows 7 для функции ChooseFont см. в разделе ChooseFont() Win32 Common Dialog в поваренной книге по качеству приложений Windows 7. Ознакомьтесь со сведениями о функциях ChooseFont и структуре CHOOSEFONT , чтобы ознакомиться с различиями в взаимодействии с конечными пользователями в Windows 7.

Обратите внимание, что наборы символов — это устаревшее понятие, соответствующее кодировке до Юникода. В настоящее время отсутствует механизм фильтрации шрифтов на основе скриптов Юникода или диапазонов символов.

Элементы управления шрифтом на ленте Windows

В Windows 7 представлена ленты Windows Scenic, которая поставляется с набором элементов управления, предназначенных для выбора шрифта. Эти элементы управления шрифтом поддерживают новое поведение скрытия шрифта Windows 7. Эти элементы управления шрифтами можно использовать для вывода списка только отображаемых шрифтов и разрешения пользователю выбрать шрифт.

Примечание

Поддержка скрытия шрифтов недоступна, если на любой платформе до Windows 7 запущена сценическая лента Windows.

 

EnumFontFamiliesEx

ВыберитеФонт

Структура CHOOSEFONT

Элементы управления шрифтом на ленте Windows

Общее диалоговое окно Win32 ChooseFont()