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