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);
}
}
}
|
|
|