Международное перечисление шрифтов и выделение
В каждом основном выпуске Windows есть шрифты, добавленные для поддержки международных языков и сценариев. Обратитесь к поддержке скриптов и шрифтов в Windows для шрифтов, добавленных в каждой версии Windows с Windows 2000, а также поддерживаемых сценариев, регионов и языков.
EnumFontFamiliesEx
Для перечисления международных шрифтов в приложении можно использовать функцию EnumFontFamiliesEx. EnumFontFamiliesEx позволяет перечислять шрифты на основе имени шрифта и символа, передав указатель на структуру LOGFONT, содержащую имя шрифта и сведения о символах. Чтобы вызвать EnumFontFamiliesEx, можно указать имя шрифта или символ, или попросить о том, что доступно. Задание имени шрифта LOGFONT значением NULL перечисляет все имена шрифтов. Задание поля charset для DEFAULT_CHARSET перечисляет все наборы символов.
Обратите внимание, что наборы символов являются устаревшими понятиями, соответствующими наборам символов до Юникода. В настоящее время нет механизма перечисления шрифтов, поддерживающих произвольные скрипты или диапазоны символов в Юникоде. Структура NEWTEXTMETRICEX, передаваемая EnumFontFamExPro c, включает структуру FONTSIGNATURE, которая включает более подробные объявления, предоставляемые разработчиком шрифтов, о том, какие кодовые страницы и какие диапазоны юникодов поддерживает шрифт. Чтобы точно определить диапазоны символов, поддерживаемых заданным шрифтом, выберите шрифт в контекст устройства и вызовите GetFontUnicodeRanges. Обратите внимание, что этот API не поддерживает дополнительные плоскости Юникода.
Выбор Фонта
Вы можете использовать функцию SelectFont для отображения общего диалогового окна, позволяющего пользователю выбирать международные шрифты на основе символов. Вы можете указать один из трех флагов, чтобы определить, на основе набора символов, которые отображаются в диалоговом окне ChooseFont: CF_SCRIPTSONLY, CF_SELECTSCRIPTили CF_NOSCRIPTSEL.
Флаг CF_SCRIPTSONLY сообщает API перечислить шрифты для всех наборов символов, которые не являются символами или ИЗГОТОВИТЕЛЕМ.
Если вы хотите отобразить только шрифты, охватывающие определенный набор символов, необходимо указать флаг CF_SELECTSCRIPT. Перед вызовом ChooseFontинициализировать поле lfCharSet структуры LOGFONT. Если вы хотите указать только набор символов, задайте для других полей структуры LOGFONT значение NULL. Чтобы Выбрать Фонт посмотреть на структуру LOGFONT, необходимо также указать флаг CF_INITTOLOGFONTSTRUCT.
Наконец, как и в любом другом поле в диалоговом окне "Шрифт", можно отобразить пустое поле списка скриптов. Эта возможность полезна, если пользователь выделил несколько разных шрифтов, охватывающих несколько символов. В этом случае вы вызовете ChooseFont с флагом CF_NOSCRIPTSEL.
Начиная с Windows 7 ChooseFont реализует поддержку скрытия шрифтов из списков выбора шрифтов. ChooseFont будет отображать только отображаемые шрифты и отфильтровать скрытые шрифты при отображении шрифтов в списке. Дополнительный флаг (CF_INACTIVEFONTS) в элементе флагов структуры ChooseFont позволяет отображать все установленные шрифты в списке шрифтов так же, как и ChooseFont вести себя до Windows 7. Подробные сведения о различиях в поведении в Windows 7 для функции ChooseFont см. в статье Выбор Фонт() Win32 Common Dialog в книги по качеству приложений Windows 7. См. ссылку функции ChooseFont и структуру CHOOSEFONT для различий пользователей в Windows 7.
Обратите внимание, что наборы символов являются устаревшими понятиями, соответствующими наборам символов до Юникода. В настоящее время нет механизма фильтрации шрифтов на основе скриптов Юникода или диапазонов символов.
Элементы управления шрифтом в ленты Windows
В Windows 7 представлена лента Windows Scenic, которая поставляется с набором элементов управления, предназначенных для выбора шрифта. Эти элементы управления шрифтами поддерживают новое поведение скрытия шрифтов Windows 7. Эти элементы управления шрифтами можно использовать для перечисления только отображаемых шрифтов и разрешить пользователю выбрать шрифт.
Заметка
Поддержка скрытия шрифтов недоступна, если на любой платформе до Windows 7 запущена ленты Windows Сценическая лента.
Связанные разделы
-
элементы управления шрифтом в ленты Windows