J'écris un rendu de police bitmap simple pour OpenGL et je voudrais aussi rendre Unicode. Cependant, dans de nombreuses polices, certains caractères sont manquants et sont rendus en carrés. Ceux-ci gaspillent par conséquent de l'espace dans ma texture et j'aimerais m'en débarrasser. Y at-il une fonction WinAPI pour détecter si un certain caractère sera rendu comme un carré de tofu en utilisant une certaine police?Sous Windows, comment détecter si un caractère Unicode est rendu carré (tofu)?
J'utilise GDI, je fais un bitmap en utilisant offscreen CreateDIBSection
, puis obtenir une police à l'aide CreateFontIndirect
et rendre Glyphes en utilisant ExtTextOutW
. Jusqu'à présent, je pensais à détecter le tofu dans la forme pixellisée (en comparant les pixels) qui fonctionne, mais je suppose que ce n'est pas très agréable. Cela nécessite aussi que j'obtienne un caractère Unicode que la police donnée ne possède certainement pas, afin d'obtenir un "modèle" à comparer. Je suppose que j'aurais des ennuis tôt ou tard comme ça.
Demandez [GetFontUnicodeRanges()] (https://msdn.microsoft.com/en-us/library/windows/desktop/dd144887 (v = vs.85) .aspx)? –
@AlexK. cela prend-il en charge les caractères non-BMP? La structure 'WCRANGE' ne fait aucune réservation pour les paires de substitution ... – andlabs
Comment préparez-vous les textures? GDI? GDI +? DirectWrite? Traiter manuellement les fichiers TTF/OTF? – andlabs