Question

Mon application affiche des caractères anglais, japonais et chinois sur une zone de texte et un linkLabel. Actuellement, je vérifie s'il y a des caractères Unicode et change la police en Mme Mincho ou si je le laisse à Tahoma.

Maintenant, Mme Mincho affiche correctement le japonais, mais pour le chinois, je dois utiliser Sim Sun. Comment puis-je distinguer les deux?

Comment puis-je m'assurer que le texte Unicode est affiché correctement quelle que soit la police / la langue?

Était-ce utile?

La solution

Si vous avez des caractères Unicode pour chacun du texte, l'utilisation d'une police qui prend en charge Unicode devrait la couvrir correctement pour vous (par exemple, Unicode MS).

Autres conseils

Vous ne pouvez pas vous assurer que le texte Unicode est affiché correctement quelle que soit la police et la langue, car Il n'y a pas de police unique qui peut rendre tous les caractères Unicode possibles. Vous devez sélectionner une police qui peut afficher les caractères Unicode que vous devez rendre.

Toutes les chaînes en C # sont Unicode. Les points de code anglais (latin), japonais et chinois sont simplement situés dans différentes gammes de points de code.

Je pense que vous avez deux options:

  • Trouvez une police Unicode qui contient des caractères pour tous les points de code dans les trois langues.

  • Essayez de deviner la langue et choisissez une police qui contient les caractères des points de code dans cette langue.

Pour l'option 2, vous pouvez consulter le Graphiques Unicode Pour savoir où se trouvent les différents points de code et élargissez votre algorithme pour deviner la langue.

Exemple pour Hiragana:

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

bool IsHiragana(string s)
{
    return s.Count(IsHiragana) > 0;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top