ExtTextOut не отображает символы нижнего индекса - PullRequest
1 голос
/ 13 апреля 2011

Я пытаюсь отобразить следующий текст, используя функцию ExtTextOut со шрифтом Courier New:

C₁C₂C²C³

Символы верхнего индекса отображаются нормально, но индекссимволы отображаются в виде блоков.Если я использую функцию DrawText, то подстрочные символы отображаются нормально.

Мне показалось, что DrawText внутренне вызывает ExtTextOut.Я ошибаюсь или DrawText выполняет дополнительную обработку строки, чтобы разрешить отображение символов нижнего индекса?

Могу ли я что-нибудь сделать, чтобы получить ExtTextOut для отображения символов нижнего индекса с использованием шрифта Courier New?

Мой код для использования ExtTextOut выглядит следующим образом:

ExtTextOutW(hdc,x,y,0,0,szText,wcslen(szText),0);

Ответы [ 2 ]

2 голосов
/ 13 апреля 2011

Как отметил Ганс в комментарии, в настоящее время DrawText () реализован с использованием связывания шрифтов, но может показаться, что ExtTextOut () - нет.

Если вы действительно хотите, чтобы это работало надежно, возможнодолжен сделать связывание шрифтов самостоятельно.Некоторый мой код, который решает похожую проблему: TextOutput C ++ класс

1 голос
/ 13 апреля 2011

Если вместо глифов вы получите прямоугольники, то проблема в том, какой шрифт вы используете.У этого нет необходимого глифа.Обычный на XP, например, я не установил его, чтобы проверить.Используйте апплет Windows charmap.exe, чтобы найти подходящий шрифт.Индекс 2 - это кодовая точка Unicode '\ x2082'.

...