Как отобразить символы Юникода правильным шрифтом?(C#/WinForms)

StackOverflow https://stackoverflow.com/questions/103556

Вопрос

Мое приложение корректно обрабатывает различные наборы символов, но только внутренне - когда дело доходит до отображения текста в стандартных метках WinForms и текстовых полях, похоже, у него проблемы с китайскими иероглифами.

Проблема, по-видимому, в используемом шрифте (Tahoma), потому что, когда я копирую и вставляю текст или просматриваю его в отладчике, он отображается правильно.Также, когда я устанавливаю MS Mincho в качестве используемого шрифта, символы на экране выглядят нормально.

Конечно, я не хочу использовать MS Mincho во всем приложении.Должен ли я переключать шрифт в зависимости от отображаемых символов, или есть лучший способ, который я пропустил?

Это было полезно?

Решение

Не описывать, который был представлен в Windows 2000, должен обрабатывать это прозрачно, что означает, что он автоматически будет использовать другой шрифт (например, Mincho) для символов, которых нет в выбранном вами шрифте.Вот почему он выглядит корректно в отладчике, даже несмотря на то, что шрифт, используемый в отладчике, не содержит китайских символов.Возможно, вы делаете что-то, что отключает UniScribe, или это проблематично каким-то другим способом.Возможно, если бы вы могли вставить какой-нибудь код, было бы легче выявить проблему.

Другие советы

Не все шрифты содержат данные для всех глифов, которые могут быть выражены в юникоде.Вам нужно будет найти подходящий шрифт, содержащий нужное вам подмножество.

Редактировать:Просто чтобы уточнить, есть являются шрифты, которые охватывают весь диапазон unicode, но тот, который вы используете сейчас, не входит в их число.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top