Предположим, что у Вас есть строка с текстом в двух или больше сценариях. Когда Вы используете функцию GDI как TextOut
, (современные версии), Windows сделает "связывание шрифтов". Таким образом, GDI потянет то, что он может с Вашим выбранным шрифтом и привлекать остальных в соответствующем шрифте, который он выбирает автоволшебно. Например, если часть Вашего текста будет на английском языке (использование Романского алфавита), и часть его является китайской (использование символов CJK), и Вам выбрали Arial, то английская часть будет оттянута в Arial, и китайская часть будет оттянута в другом шрифте, который имеет глифы CJK.
Мой вопрос, там способ определить который шрифты TextOut
выберет (или действительно выбирал) для связывания шрифтов?
Я должен нарисовать некоторый текст с Uniscribe низкого уровня API, который не делает автоматического связывания шрифтов. Я реализовал свое собственное связывание шрифтов, но иногда мой алгоритм выбирает другой шрифт, чем TextOut
делает для того же текста. Я пытаюсь понять алгоритм Windows лучше, но я не очень хорош при идентификации шрифтов на виде (особенно в незнакомых сценариях).
Шрифт выбирается с помощью записи в реестре. Она хорошо описана в этой статье. Цитирую соответствующую часть:
Если привязка шрифтов включена на вашем устройстве, вы можете изучить реестр перечислив вложенные ключи ключа ключа реестра по адресу HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink для определения отображения связанных шрифтов к базовым шрифтам. Вы можете добавить ссылки используя Regedit для создания дополнительных подзамок.