Как определить, какую кодировку LOGFONT использовать? - PullRequest
2 голосов
/ 27 марта 2019

У меня есть диалоговое окно выбора текста / спецификации, где пользователь может указать шрифт из списка, установить жирный шрифт, курсив и т. Д. Затем я использую информацию в LOGFONT, чтобы создать CFont для последующего использования в CEdit в качестве предварительного просмотра.

Однако, если пользователь выбирает символьный шрифт, такой как Wingdings, предварительный просмотр не будет работать правильно, если я не установлю LOGFONT::lfCharset на SYMBOL_CHARSET. Итак, по сути, учитывая только имя шрифта, как мне определить, какой должна быть кодировка по умолчанию (т. Е. Как я могу определить, следует ли нам SYMBOL_CHARSET)?.

Я видел предложения по использованию GetTextMetrics(), но это предполагает установку шрифта в DC, и я еще не создал шрифт, так что ...?

1 Ответ

3 голосов
/ 28 марта 2019

Когда у вас есть имя шрифта, вы можете использовать EnumFontFamiliesEx, чтобы увидеть, существует ли этот шрифт для определенной кодировки.Вы можете вызвать его один раз с помощью DEFAULT_CHARSET и, если это не сработает, снова вызвать его с помощью SYMBOL_CHARSET.

В любом случае, это предположение.У меня не было возможности попробовать это сам.

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