My App は、TextBox と LinkLabel に英語、日本語、中国語の文字を表示します。現在、Unicode 文字があるかどうかを確認し、フォントを MS 明朝に変更するか、Tahoma のままにしています。
現在、MS 明朝は日本語を適切に表示しますが、中国語の場合は Sim Sun を使用する必要があります。どうすれば2つを区別できますか?
フォント/言語に関係なく、Unicode テキストが正しく表示されるようにするにはどうすればよいですか?
My App は、TextBox と LinkLabel に英語、日本語、中国語の文字を表示します。現在、Unicode 文字があるかどうかを確認し、フォントを MS 明朝に変更するか、Tahoma のままにしています。
現在、MS 明朝は日本語を適切に表示しますが、中国語の場合は Sim Sun を使用する必要があります。どうすれば2つを区別できますか?
フォント/言語に関係なく、Unicode テキストが正しく表示されるようにするにはどうすればよいですか?
各テキストに Unicode 文字がある場合は、Unicode をサポートするフォントを使用すると適切にカバーされます (Arial Unicode MS など)。
C# のすべての文字列は Unicode です。英語 (ラテン語)、日本語、および中国語のコード ポイントは、異なるコード ポイント範囲に配置されています。
次の 2 つのオプションがあると思います。
3 つの言語すべてのすべてのコード ポイントの文字を含む Unicode フォントを見つけます。
言語を推測して、その言語のコード ポイントの文字を含むフォントを選択してください。
オプション 2 では、Unicode チャートを見て、さまざまなコード ポイントがどこにあるかを調べ、アルゴリズムを拡張して言語を推測できます。
ひらがなの例:
bool IsHiragana(char ch)
{
return (ch >= '\u3040') && (ch <= '\u309f');
}
bool IsHiragana(string s)
{
return s.Count(IsHiragana) > 0;
}
すべての可能な Unicode 文字をレンダリングできる単一のフォントがないため、フォントや言語に関係なく、Unicode テキストが適切に表示されることを保証することはできません。レンダリングする必要がある Unicode 文字を表示できるフォントを選択する必要があります。