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