Le package flash.text d’ActionScript 3.0 offre plusieurs classes qui permettent de contrôler les propriétés du texte affiché, notamment les polices intégrées, les paramètres d’anticrènelage, le canal alpha et autres paramètres spécifiques. Le Guide de référence ActionScript 3.0 pour Flash Professional fournit des descriptions détaillées de ces classes et de leurs propriétés, notamment des classes CSMSettings, Font et TextRenderer.
Utilisation de polices incorporées
Si vous spécifiez une police précise pour un objet TextField de votre application, Flash Player ou AIR recherche une police résidente du même nom sur l’ordinateur de l’utilisateur. Si cette police n’est pas chargée sur cet ordinateur, ou s’il existe une police de ce nom mais dans une version légèrement différente, le texte peut apparaître très différent de ce que vous aviez prévu. Par défaut, le texte s’affiche dans la police Times Roman.
Pour que l’utilisateur voie exactement la police voulue, vous pouvez incorporer cette police dans le fichier SWF de votre application. Les polices intégrées présentent de nombreux avantages :
-
Les caractères des polices incorporées sont anticrènelés, ce qui les rend plus agréables à lire, en particulier pour les grandes tailles de texte.
-
Il est possible de faire pivoter les polices incorporées.
-
Il est possible de rendre transparent ou semi-transparent le texte des polices incorporées.
-
Il est possible d’utiliser le style CSS
kerning
(crénage) avec les polices incorporées.
Le principal inconvénient des polices incorporées est l’augmentation de la taille du fichier de l’application.
La méthode exacte à utiliser pour intégrer un fichier de police dans le fichier SWF de l’application varie selon l’environnement de développement.
Une fois la police intégrée, il est possible de faire en sorte que l’objet TextField utilise la police correcte :
-
Mettez la propriété
embedFonts
de l’objet TextField sur
true
.
-
Créez un objet TextFormat, donnez à sa propriété
fontFamily
le nom de la police incorporée, et appliquez l’objet TextFormat au TextField. Dans le cas d’une police incorporée, la propriété
fontFamily
ne doit contenir qu’un seul nom. Elle ne peut pas utiliser une liste de polices séparées par des virgules.
-
Si vous utilisez des styles CSS pour les polices d’objets TextFields, donnez à la propriété CSS
font-family
le nom de la police incorporée. Si vous voulez utiliser une police incorporée, la propriété
font-family
ne doit contenir qu’un seul nom, et non pas une liste de noms.
Intégration d’une police dans Flash
Flash Professional vous permet d’intégrer pratiquement toutes les polices installées sur votre système, notamment les polices TrueType et les polices Postscript Type 1.
Il existe plusieurs façons d’intégrer des polices dans une application. Vous pouvez par exemple :
-
définir la police et les propriétés de style d’un objet TextField sur la Scène, puis en cocher la case Incorporer les polices ;
-
créer et référencer un symbole de police ;
-
créer et utiliser une bibliothèque d’exécution partagée contenant les symboles de la police intégrée.
Pour plus d’informations sur l’intégration de polices dans les applications, voir « Polices intégrées pour champs de texte dynamique ou de saisie » dans
Utilisation de Flash
.
Intégration d’une police dans Flex
Il existe plusieurs façons d’intégrer des polices dans une application Flex. Vous pouvez par exemple :
-
utiliser la balise de métadonnées
[Embed]
dans un script ;
-
utiliser la déclaration de style
@font-face
;
-
définir la classe de la police et l’intégrer par le biais de la balise
[Embed]
.
Seules les polices TrueType peuvent directement être intégrées dans une application Flex. Les polices dans un autre format, telles que les polices Postscript Type 1, doivent tout d’abord être intégrées dans un fichier SWF à l’aide de Flash Professional ; vous pouvez ensuite utiliser ce fichier SWF dans votre application Flex. Pour plus d’informations sur l’utilisation de polices intégrées dans Flex à partir de fichiers SWF, voir « Intégration de polices à partir de fichiers SWF » dans le manuel
Utilisation de Flex 4
.
Contrôle de la netteté, de l’épaisseur et de l’anticrènelage
Par défaut, Flash Player ou AIR détermine les paramètres de contrôle d’affichage du texte (netteté, épaisseur et anticrènelage) qui s’appliquent lorsque le texte change de taille et de couleur ou s’affiche sur différents arrière-plans. Dans certains cas, vous pouvez définir ces paramètres, par exemple si le texte est très petit ou très gros, ou s’il s’affiche sur plusieurs arrière-plans. La classe
flash.text.TextRenderer
et les classes associées, telles que CSMSettings, permettent de remplacer les paramètres de Flash Player ou d’AIR. Elles offrent un contrôle précis de la qualité d’affichage du texte incorporé. Pour plus d’informations sur les polices intégrées, voir
Utilisation de polices incorporées
.
Remarque :
la propriété .antiAliasType de la classe
flash.text.TextField
doit avoir la valeur
AntiAliasType.ADVANCED
pour que vous puissiez définir la netteté, l’épaisseur ou la propriété gridFitType, ou pour que vous puissiez utiliser la méthode
TextRenderer.setAdvancedAntiAliasingTable()
.
L’exemple suivant applique des propriétés personnalisées de modulation continue du trait (CSM) et de mise en forme au texte affiché, en utilisant la police incorporée
myFont
. Lorsque l’utilisateur clique sur le texte affiché, Flash Player ou Adobe AIR applique ces paramètres personnalisés :
var format:TextFormat = new TextFormat();
format.color = 0x336699;
format.size = 48;
format.font = "myFont";
var myText:TextField = new TextField();
myText.embedFonts = true;
myText.autoSize = TextFieldAutoSize.LEFT;
myText.antiAliasType = AntiAliasType.ADVANCED;
myText.defaultTextFormat = format;
myText.selectable = false;
myText.mouseEnabled = true;
myText.text = "Hello World";
addChild(myText);
myText.addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler(event:Event):void
{
var myAntiAliasSettings = new CSMSettings(48, 0.8, -0.8);
var myAliasTable:Array = new Array(myAntiAliasSettings);
TextRenderer.setAdvancedAntiAliasingTable("myFont", FontStyle.ITALIC, TextColorType.DARK_COLOR, myAliasTable);
}
|
|
|