Utilisation d’une bibliothèque externe de polices en As3
Afin d’alléger le poids de nos SWF et de regrouper au sein d’un même fichier nos polices de caractères (histoire de faciliter la maintenance), il peut être intéressant d’en créer une bibliothèque.
Il existe plusieurs méthodes pour mettre en place et utiliser une telle bibliothèque, je vous décris dans ce billet celle que j’utilise.
Créer la bibliothèque de polices
Nous créons notre fontsLib.swf qui contient toutes nos fontes à embarquer. Pour cela, on ajoute sur la scène autant de TextField que l’on veut de polices. Puis, pour chacun d’entre eux, on choisi :
- La police.
- La méthode de rendu (Bitmap ou anti-aliasing).
- La taille, dans le cas d’une police Bitmap. Dans le cas d’un rendu lissée, la taille importe peu puisque l’on travail avec des vecteurs.
- Les caractères à intégrer (Bouton « Intégrer .. »). Pour un site français, j’intègre les jeux de caractères suivants : Majuscule, Minuscule, Chiffres, Ponctuation, Latin basique, Latin I, Latin étendu A.
La classe FontLoader
Pour me faciliter la tache, j’utilise la classe FontLoader qui permet de charger notre fonsLib.swf, puis d’enregistrer automatiquement chacune des polices présentes dans la bibliothèque.
La classe Fonts
Est une classe qui me sert a définir, sous forme de constantes statiques, les noms des différentes polices. Elle possède également une fonction statique showEmbeddedFonts() qui trace chaque police embarqué. Très utile pour connaître leur nom exacte (qu’il faut renseigner en valeur pour nos constantes. Exemples : Sylfaen, Sylfaen 40pt_st).
public class Fonts { public static var SYLFAEN_SMOOTH : String = "Sylfaen"; public static var SYLFAEN_BM_40 : String = "Sylfaen_40pt_st"; public static function showEmbeddedFonts():void { trace("========Embedded Fonts========"); var fonts:Array = Font.enumerateFonts(); fonts.sortOn("fontName", Array.CASEINSENSITIVE); for (var i:int = 0; i < fonts.length; i++) { trace(fonts[i].fontName + ", " + fonts[i].fontStyle); } } }
Chargement de la fontslib
Comme vous pouvez le voir, la classe FontLoader s’utilise à peu de choses près comme la classe Loader de l’api de flash. Vous pouvez spécifier, lors de l’appel du constructeur, si vous souhaiter que le loader enregistre automatiquement vos polices ou non. Par défaut la valeur est à true.
private function _loadFontsLib() : void { var request : URLRequest = new URLRequest("swf/libs/fontsLib.swf"); _fontLoader = new FontLoader(); _fontLoader.addEventListener(Event.COMPLETE, _onFontsLibLoaded , false , 0 , true ); _fontLoader.load(request); } private function _onFontsLibLoaded( event : Event ) : void { _fontLoader.removeEventListener(Event.COMPLETE, _onFontsLibLoaded); _fontLoader = null; // Tracer les polices embarquées Fonts.showEmbeddedFonts(); }
Comment utiliser une police embarquée
Une fois la bibliothèque de fontes chargée, on peut commencer à utiliser nos polices embarquées.
var textFormat : TextFormat = new TextFormat(Fonts.SYLFAEN_SMOOTH); textFormat.size = 20; textFormat.color = 0x000000; var textField : TextField = new TextField(); textField.text = "Hello j'utilise une police embarquée"; textField.autoSize = TextFieldAutoSize.LEFT; textField.embedFonts = true; textField.setTextFormat(textFormat); addChild(textField);
Voila, vous savez maintenant comment mettre en place une bibliothèque de polices de caractères.
Télécharger les sources : fontsLib.zip

Aucun commentaire pour l'instant