Flash et les langues “exotiques”
Comment faire quand on a un Flash avec du texte dynamique en français, anglais, russe ou chinois ?
Déjà le problème c’est qu’on ne peut pas utiliser qu’une seule police. Le graphisme utilise une police, mais celle-ci, dans la majorité des cas ne gère pas tout les caractère Unicode.
Faire une concession sur le graphisme, ou utilise 2 polices ?
Une police qui gère le chinois ? Pas sûr, par exemple avec la police PMingLiU (police par défaut sur XP gérant les caractères asiatiques) avec les caractères chinois tous (Chinois traditionnel tous + chinois simplifié) sois 21664 caractères, on rajoute 12Mo au SWF…
Après quelques tests, le seul moyen que j’ai trouvé, c’est d’utiliser pour les langues européennes (romanes et germaniques) la police du graphisme (exemple : DIN ou Helvetica) et pour les autres langues utiliser la police _sans.
Le seul soucis c’est que pour du texte qui utilise la police _sans, il faut le mettre en myTextField.embedFonts = false;
sinon elle n’apparaitra pas. De ce fait, on ne pourra pas appliquer des transformation tels que la rotation ou le scaling au champs texte quand on utilise _sans. Seule l’alpha peut être appliqué en mettant le champ texte en mode de fusion BlendMode.LAYER
La seule chose qu’il reste à faire, c’est détecter quand on doit utiliser _sans ? Quelques pistes :
- Identifier la langue utilisé et faire une correspondance (exemple l’attribut lang et/ou xml:lang)
- Vérifier chaque caractère si il exsite dans la police, sinon utiliser _sans avec
myFont.hasGlyphs(myString);
Informations complémentaires :