J'écris actuellement ma propre fonction DrawTextEx() qui prend en charge les émoticônes. Grâce à cette fonction, un rappel est appelé chaque fois qu'une émoticône est trouvée dans le texte, ce qui permet à l'appelant de remplacer le segment de texte contenant l'émoticône par une image. Par exemple, les caractères Unicode 0x3DD8 0x00DE trouvés dans un texte seront remplacés par une image de visage souriant pendant que le texte est dessiné. En fait, cette fonction fonctionne bien.Conversion d'un code d'émoticône "entité HTML" en UTF16 (en C++)
Maintenant, je veux implémenter une bibliothèque d'images du côté de l'appelant. Je reçois un segment de texte comme 0x3DD8 0x00DE dans ma fonction de rappel, et mon idée est d'utiliser ce code comme clé dans une carte contenant toutes les combinaisons Unicode, toutes liées à une structure contenant l'image à dessiner. J'ai trouvé un bon paquet sur le site Web http://emojione.com/developers/. Tous les paquets disponibles sur ce site contiennent plusieurs noms de fichiers, c'est-à-dire un code hexadécimal. Je peux donc parcourir les fichiers contenus dans le paquet et créer ma carte de manière automatique.
Cependant, j'ai trouvé que ces codes font partie d'un autre standard, et sont en fait un ensemble d'éléments nommés "entité HTML", apparemment utilisé dans le développement web, comme on peut le voir sur le site web http://graphemica.com/%F0%9F%98%80. Donc, pour pouvoir utiliser ces fichiers, j'ai besoin d'une solution pour convertir les valeurs d'entité HTML contenues dans leurs noms en un code UTF16. Par exemple, dans le cas du visage souriant mentionné ci-dessus, j'ai besoin de convertir le code d'entité HTML 0x1f600 en 0x3DD8 code 0x00DE UTF16. Une approche de force brute peut consister à écrire une carte qui convertit ces codes, en ajoutant chacun d'eux dans mon code, un par un. Mais comme la norme Unicode contient, dans le scénario le plus optimiste, plus de 1800 combinaisons pour les émoticônes, je veux savoir qu'il existe une solution existante, telle qu'une API ou une fonction connue, que je peux utiliser pour faire le travail. Ou y a-t-il un truc connu pour faire ça? (Comme par exemple "caractère + ('a' - 'A')" pour convertir un omble chevalier en majuscules pour abaisser)
Cordialement