Вопрос

Мое приложение отображает английские, японские и китайские иероглифы на текстовом поле и Linklabel. В настоящее время я проверяю, есть ли символы Unicode, и меняю шрифт на MS Mincho или оставить его в Тахоме.

Теперь г -жа Минчо отображает японцы правильно, но для китайцев я должен использовать Sim Sun. Как я могу различить их?

Как я могу убедиться, что текст Unicode отображается правильно независимо от шрифта/языка?

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

Решение

Если у вас есть символы Unicode для каждого текста, использование шрифта, поддерживающего Unicode, должен правильно охватить его (например, Arial Unicode MS).

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

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

Все строки в C# - Unicode. Английские (латинские), японские и китайские кодовые точки просто расположены в разных диапазонах кодовых точек.

Я думаю, у вас есть два варианта:

  • Найдите шрифт Unicode, который содержит символы для всех кодовых точек на всех трех языках.

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

Для варианта 2 вы можете посмотреть на Диаграммы Unicode Чтобы узнать, где находятся различные кодовые точки, и расширить свой алгоритм, чтобы угадать язык.

Пример для Хирагана:

bool IsHiragana(char ch)
{
    return (ch >= '\u3040') && (ch <= '\u309f');
}

bool IsHiragana(string s)
{
    return s.Count(IsHiragana) > 0;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top