Kicou la Cie.
Avec une API Win9X/Me, je veux utiliser TextOutW (DrawTextW et ExTextOutW ne fonctionnent pas sous Win9X, donc seul TextOutW peut être utilisé), qui permet dessiner une chaîne Unicode (restreinte au BMP, API Win9X oblige).
Comme la police selectionnée par défaut dans les contextes de périphériques (DC) ne permet pas l'affichage de text Unicode, je prépart une police de caractère appropriée. La chaîne pouvant être multilingue (i.e. non reductible à une page de code unique), je me pose des questions sur la page de code à spécifier lors de la création de la police de caractère, qui est une police Unicode. J'ai entendu dire qu'il existe une pseudo page de code pour Unicode, mais j'ai oublié quel est ce code numérique. Et même si je le retrouve, je ne sais pas si je pourrais l'utiliser sous Win9X (parce que je ne sais pas si les polices Unicode sont identifiées comme telle par spécification ce code dans le fichier de police). J'utilise donc la valeur DEFAULT_CHARSET, qui me semble au premier abord la solution la plus immédiate (mais est-ce la meilleur solution... je l'ignore, et c'est justement l'objet de la question qui vient).
J'ai testé, et l'affichage fonctionne (mais sans gestion des scripts complexes bien sûre, qui sont affichés caractère par caractère, sans ligature). Pourtant la documentation de l'API Win95 dit qu'il est déconseillé d'utiliser cette valeur pour la propriété fdwCharSet (il est dit que l'affichage pourrait ne pas toujours être celui souhaité). Mais je ne vois pourtant pas d'autre(s) solution(s) pouvant s'appliquer à une police destinée à afficher du texte multilingue.
I n'y a pas de page de code pour Unicode dans les entêtes de l'API Win95. Pourtant Unicode était connu, et si une pseudo page de code Unicode existe, il n'est peut-être pas impossible qu'elle soit reconnue par l'API Win9X.
L'affichage fonctionne (même s'il n'y a pas des gestion des scripts complexes.. ce que je prévois quand même de faire pour ma librairie), et je pose donc surtout la question pour trouver la meilleur solution (s'il existe une meilleure solution).
Merci pour tous vos conseils si vous en avez.
Partager