Можно ли определить шрифты, которые Windows выбирает для связывания шрифтов? - PullRequest
8 голосов
/ 11 марта 2010

Предположим, у вас есть строка с текстом в двух или более сценариях. Когда вы используете функцию GDI, такую ​​как TextOut, (в современных версиях) Windows будет выполнять «связывание шрифтов». То есть GDI будет рисовать то, что он может, с помощью выбранного вами шрифта, а остальное - соответствующим шрифтом, который он выбирает автоматически. Например, если часть вашего текста написана на английском языке (с использованием латинского алфавита), а часть написана на китайском языке (с использованием символов CJK), и вы выбрали Arial, английская часть будет отображена в Arial, а китайская часть - быть нарисованным другим шрифтом с глифами CJK.

У меня вопрос, есть ли способ определить, какие шрифты TextOut выберет (или выбрал) для связывания шрифтов?

Мне нужно нарисовать текст с помощью низкоуровневого API Uniscribe, который не выполняет автоматическую привязку шрифтов. Я реализовал собственное связывание шрифтов, но иногда мой алгоритм выбирает другой шрифт, чем TextOut для того же текста. Я пытаюсь лучше понять алгоритм Windows, но я не очень хорошо разбираюсь в шрифтах (особенно в незнакомых скриптах).

1 Ответ

2 голосов
/ 11 марта 2010

Шрифт выбирается записью в реестре. Это хорошо описано в этой статье. Цитирование соответствующей части:

Если на вашем компьютере включена привязка шрифтов устройство, вы можете изучить реестр перечисляя подразделы ключ реестра в HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ FontLink \ SystemLink определить отображения связанных шрифты для базовых шрифтов. Вы можете добавить ссылки используя Regedit для создания дополнительных подразделы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...