Utilisation des polices

Flash Player 10 et les versions ultérieures, Adobe AIR 1.5 et les versions ultérieures

L’objet FontDescription est utilisé avec l’occurrence de ElementFormat pour identifier une police et définir certaines de ses caractéristiques. Ces caractéristiques incluent le nom de la police, le poids, la position, le rendu et la méthode de recherche de la police (police de périphérique/police intégrée).

Remarque : FTE ne prend pas en charge les polices Type 1 ou les polices bitmap, telles que Type 3, ATC, CID ou CID basées sur SFNT.

Définition des caractéristiques des polices (objet FontDescription)

La propriété fontName de l’objet FontDescription peut être un nom unique ou une liste de noms séparés par des virgules. Par exemple, dans une liste telle que « Arial, Helvetica, _sans », Text Engine recherche tout d’abord « Arial », puis « Helvetica » et finalement « _sans » s’il ne parvient pas à trouver les deux premières polices. La définition des noms de police comprend trois noms de police génériques : « _sans », « _serif » et « _typewriter ». Ces noms correspondent à des polices de périphérique spécifiques, selon le système de lecture. Il est judicieux de spécifier ce type de noms par défaut dans toutes les descriptions de police qui utilisent des polices de périphérique. Si la propriété fontName n’est pas spécifiée, « _serif » est utilisé comme nom par défaut.

La propriété fontPosture peut être définie sur la valeur par défaut ( FontPosture.NORMAL ) ou en italique ( FontPosture.ITALIC ). La propriété fontWeight peut être définie sur la valeur par défaut ( FontWeight.NORMAL ) ou en caractères gras ( FontWeight.BOLD ).

var fd1:FontDescription = new FontDescription(); 
fd1.fontName = "Arial, Helvetica, _sans"; 
fd1.fontPosture = FontPosture.NORMAL; 
fd1.fontWeight = FontWeight.BOLD;

Polices intégrées ou polices de périphérique ?

La propriété fontLookup de l’objet FontDescription indique si Text Engine recherche une police de périphérique ou une police intégrée pour rendre le texte. Si une police de périphérique ( FontLookup.DEVICE ) est spécifiée, le moteur d’exécution recherche la police sur le système de lecture. Si vous définissez une police intégrée ( FontLookup.EMBEDDED_CFF ), le moteur d’exécution recherche une police de ce type portant le nom indiqué dans le fichier SWF. Seules les polices CFF (Compact Font Format) intégrées utilisent ce paramètre. Si la police spécifiée est introuvable, une police de périphérique est utilisée.

Les polices de périphérique donnent lieu à des fichiers SWF moins volumineux. Les polices intégrées garantissent une plus grande homogénéité d’une plate-forme à l’autre.

var fd1:FontDescription = new FontDescription(); 
fd1.fontLookup = FontLookup.EMBEDDED_CFF; 
fd1.fontName = "Garamond, _serif";

Mode de rendu et repères

Le rendu CFF (Compact Font Format) est disponible à partir de Flash Player 10 et Adobe AIR 1.5. Ce type de rendu de police permet une meilleure lisibilité du texte et un affichage optimisé des caractères de petite taille. Ce paramètre s’applique uniquement aux polices intégrées. La valeur par défaut de FontDescription correspond à ce paramètre ( RenderingMode.CFF ) pour la propriété renderingMode . Vous pouvez définir cette propriété sur RenderingMode.NORMAL afin qu’elle corresponde au type de rendu utilisé par Flash Player 7 ou versions antérieures.

Lorsque le rendu CFF est sélectionné, une deuxième propriété, cffHinting , permet de contrôler la manière dont les corps horizontaux d’une police sont adaptés à la grille de sous-pixels. La valeur par défaut, CFFHinting.HORIZONTAL_STEM , utilise les repères CFF. Si vous définissez cette propriété sur CFFHinting.NONE , les repères sont supprimés. Ce paramètre convient pour les animations ou les grandes tailles de police.

var fd1:FontDescription = new FontDescription(); 
fd1.renderingMode = RenderingMode.CFF; 
fd1.cffHinting = CFFHinting.HORIZONTAL_STEM;

Verrouillage et clonage d’un objet FontDescription

Lorsque vous affectez une occurrence de ElementFormat à un objet FontDescription , la propriété locked de ce dernier est automatiquement définie sur true . Toute tentative de modification d’un objet FontDescription verrouillé renvoie une erreur IllegalOperationError . La meilleure pratique consiste à définir complètement ce type d’objet avant de l’affecter à l’occurrence de ElementFormat .

Si vous souhaitez modifier un objet FontDescription existant, vous devez tout d’abord vérifier sa propriété locked . Si elle est définie sur true , utilisez la méthode clone() pour créer une copie déverrouillée de l’objet. Vous pouvez modifier les propriétés de cet objet déverrouillé, puis l’affecter à ElementFormat . Toute nouvelle ligne créée à partir de ce TextElement adopte la nouvelle mise en forme. Les lignes précédentes créées à partir de ce même objet restent inchangées.

package 
{ 
    import flash.display.Sprite; 
    import flash.text.*; 
 
    public class FontDescriptionCloneExample extends Sprite 
    { 
        private var tb:TextBlock = new TextBlock(); 
        private var te:TextElement; 
        private var ef1:ElementFormat; 
        private var ef2:ElementFormat; 
         private var fd1:FontDescription = new FontDescription(); 
        private var fd2:FontDescription; 
 
        public function FontDescriptionCloneExample() 
        { 
            fd1.fontName = "Garamond"; 
            ef1 = new ElementFormat(fd); 
            var str:String = "This is flash text"; 
            te = new TextElement(str, ef); 
            tb.content = te; 
            var tx1:TextLine = tb.createTextLine(null,600); 
            addChild(tx1); 
             
            fd2 = (fd1.locked) ? fd1.clone() : fd1; 
            fd2.fontName = "Arial"; 
            ef2 = (ef1.locked) ? ef1.clone() : ef1; 
            ef2.fontDescription = fd2; 
            tb.content.elementFormat = ef2; 
            var tx2:TextLine = tb.createTextLine(null,600); 
            addChild(tx2); 
        } 
    } 
}