2017-02-11 3 views
0

Je traite l'entrée du clavier thaïlandais. Certaines des touches sont des signes de voyelle et ne sont autorisées que si elles sont combinées avec certains caractères précédents.ICU combinant les signes de la voyelle thaïlandaise et quand ignorer

Ici 0x0E33 est le signe voyelle

Par exemple 0x0E1C + 0x0E33 est valide
mais 0x0E44 + 0x0E33 n'est pas valide et le 0x0E33 doit être ignorée.

Je cherche un moyen de savoir quand je devrais ignorer le signe de voyelle, ou quand il ne se combine pas avec le caractère précédent.

Des idées s'il vous plaît?

Répondre

0

De nombreuses voyelles thaïlandaises (et les marques de tonalité, d'ailleurs) appartiennent à la catégorie Marquages ​​sans espacement. Votre but est d'utiliser une bibliothèque qui indiquerait à quelle catégorie appartient chaque personnage. Ensuite, vous pouvez décider de "l'ignorer", quel que soit le "ignorer" signifie dans votre contexte d'application.

Vérifier Unicode General Category Values

Vos deux points d'intérêt sont:

  • Lo | Other_Letter pour le caractère normal;
  • Mn | Nonspacing_Mark pour les marques non espacées de largeur nulle;

Pour en savoir plus:

+0

Oui, je peux utiliser la bibliothèque de soins intensifs pour obtenir cette information. Cependant, la voyelle thaïlandaise ne peut être combinée qu'avec certaines lettres précédentes. Sinon, cela prend de la place (et c'est une combinaison incorrecte). J'essaie de trouver une façon générique de déterminer si c'est une combinaison valide. –

+0

En regardant le lien que vous avez fourni (données Unicode pour le script thaïlandais) je ne suis pas sûr de savoir comment votre commentaire aide. La valeur de catégorie de tous les trois caractères dans mon exemple sont les mêmes (Lo). –