Expressions s’appliquant au style du texte

Accéder aux propriétés de styles d'un calque de texte à l'aide des expressions pour paramétrer un autre calque ou automatiser les modifications de styles.

Presentation des expressions Text

Les expressions de la catégorie Text / Properties / Properties dans le Menu langage d’expression concernent les réglages de styles qui sont effectués dans le panneau Caractère.

Le schéma ci-dessous représente les 15 propriétés accessibles par rapport au panneau Caractère. Elles marchent par deux, la première est un objet qui retourne la valeur utilisée dans cette propriété, la deuxième est une fonction qui permet de redéfinir cette propriété.

L’information récupérée ou le type d’argument à utiliser dans les parenthèses à la place de value peut être de type:

  • String : une chaine de caractère, pour le nom de la police de caractère
  • Number : une valeur numérique
  • Boolean : true ou false, activé ou désactivé
  • Array : un tableau de valeur, pour les couleurs

Premier niveau du menu

Dans le premier niveau de la catégorie Text du Menu langage d’expression vous avez sourceTexte qui est l’objet global du contenu du texte. Vous obtenez cette expression dés que vous créez une expression dans la propriété Texte source ou que vous pointez cette propriété avec l’Icône de sélection de propriété.

Font… vous ouvre la boite de diadoque qui vous permet d’obtenir le nom d’une police de caractère instalée sur votre système. C’est cette chaine de caractère qui doit être utilisée dans la fonction setFont()

Deuxième niveau du menu

Au deuxième niveau, dans Properties, vous avez l’objet style qui permet de se placer dans l’objet qui contient toutes les propriétés à la suite de l’objet sourceText.

L’expression getStyleAt(charIndex, t = time) permet de récupérer le style en fonction de l’index du caractère et du temps (un texte peut ne pas utiliser le même style pour tous ses caractères et avoir sa propriété Texte source animée).

Les expressions createStyle() est presque interchangeable avec style :
style est l’Objet qui s’applique au sourceText pour récupérer ou appliquer des styles, createStyle() est une fonction qui définit un nouvelle Objet style (il n’y a rien à mettre avant). Quand on met style sans rien avant il utilise implicitement l’objet sourceText de la propriété dans laquelle il est appliqué (il faut que ce soit un calque de texte).

Troisième niveau du menu

Au troisième niveau (on arrive dans le dernier sous-menu dans Text / Properties / Properties) vous avez toutes les propriétés contenues dans un style comme présenté dans le schéma du début. La première expression, setText(value), n’est pas dans le schéma, elle s’utilise pour affecter un nouveau contenu au texte quand on modifie le style. La valeur requise est une chaine de caractère (les chaines de caratères sont écrite entre guillemets). À noter que si vous ne modifiez pas le style avec des expression, vous récupérez la source du texte d’un autre calque simplement avec le sélecteur de propriété.

Applications des expressions de catégorie Text

Récupérer tous les Styles

Pour récupérer le style d’un calque de texte et l’appliquer à un autre : commencez par créer une liaison de propriété entre deux propriétés Texte source. Avec cette expression le contenue du texte de référence remplace le texte cible qui garde sa mise en forme.

Pour faire le contraire : récupérer le style et pas ce qui écrit : ajoutez un point à la fin de l’expression puis tapez style. Cette expression récupère toutes les proprités du texte source pour les appliquer au texte tout en conservant le contenue du texte d’origine.

Pour récupérer à la fois le style complet et la source du texte, enregistrez la source de référence dans une variable pour l’appeler plus facilement ensuite. Puis récupérez le style complet sur cette variable avec l’expressions style et ajoutez à la suite l’expression .setText(leNomDeVotreVariable) pour récupérer ausi le contenue du texte.

var ref = thisComp.layer("Texte de référence").text.sourceText;
ref.style.setText(ref)

Pour partir d’un texte de référence placé dans une autre composition : sélectionnez sa propriété Texte source et faites Edition / Copier avec des liens de propriété. Sélectionnez ensuite la propriété Texte source du calque dans une autre composition qui doit récupérer des styles de ce calque et faites copier (Ctrll+C ou cmd+V). Ouvrez ensuite le champ d’édition de l’expression pour créer l’expression à partir de cette référence. Une fois votre expression en place, sélectionnez le propriété Texte source et faites Edition / Copier l’expression seulement et allez ensuite copier vers toutes les propriétés Texte source que vous voulez contrôler.

Récupérer certains styles uniquement

Pour ne récupérer que certains paramètres du style, commencez par enregistrer dans une variable tout le style du calque de référence pour l’appeler plus facilement ensuite. Les expressions qui commencent par set permettent de définir le nouveau style et peuvent s’enchainer.
L’expression suivante permet de récupérer uniquement la police et la couleur du texte du calque «Ref» mais vous garder la main sur les autres styles :

var styleRef = thisComp.layer("Ref").text.sourceText.style;
style.setFont(styleRef.font).setFillColor(styleRef.fillColor);

Pour le principe inverse, c’est à dire récupérer tous les styles du calque «Ref» et ne garder que la taille du texte et sa couleur modifiable par exemple. Vous commencez par récupérez tout le style du calque de référence et vous ajoutez les expressions pour réinjecter les styles que vous voulez conserver.

thisComp.layer("Ref").text.sourceText.style.setFontSize(style.fontSize).setFillColor(style.fillColor)
createStyle()
.setText(text.sourceText)
.setFontSize(72)
.setFont("Tahoma")
.setFauxBold(false)
.setFauxItalic(false)
.setAllCaps(false)
.setSmallCaps(false)
.setTracking(0)
//.setLeading(100)
.setAutoLeading(true)
.setBaselineShift(0)
.setApplyFill(true)
.setFillColor([1,1,1])
.setApplyStroke(false)
//.setStrokeColor([0.5,0.5,0.5])
//.setStrokeWidth(5)

Créer un formatage de style par Preset

Cette expression définie tous les styles un par un. Le retour à la ligne après chaque style est là pour plus de lisibilité, mettre tout sur une seule ligne rendrait la code moins compréhensible. Les styles peuvent s’enchainer dans n’importe quel ordre, ils sont ici présentés dans l’ordre du menu. Personnalisez les valeurs entre parenthèses selon vos choix. Le deuxième ligne .setText(text.sourceText) permet de garder le texte d’origine mais elle peut être omise, le texte sera conservé quand même. Si vous remplacer text.sourceText par autre chose, cela permet de forcer un autre contenu pour le texte. Les // désactive la ligne, qui devient un commentaire. On peut les enlever mais ils sont là pour vous indiquer les paramètres désactivés par une autre réglage. Si l’interlignage est définie sur auto par l’expression .setAutoLeading(true) la valeur dans .setLeadingg() n’est pas prise en compte. Si les contours sont désactivés par l’expresson .setApplyStroke(false) leurs tailles .setStrokeWifth() et leurs couleurs .setStrokeColor() ne sont pas pris en compte. Si vous désactivez l’interlignage automatique .setAutoLeading(false) ou si vous activez les contours .setApplyStroke(true), enlever les // et personnalisez les valeurs.

Pour créer le Preset : sélectionnez la propriété Texte source et faites Animation / Enregistrer l’animation prédéfinie. Validez la sauvegarde dans votre dossier User Preset. Le preset apparait ensuite dans le panneau Effets et paramètres prédéfinis. Faites le glisser sur un calque pour appliquer ce style.

Les couleurs utilisent des tableaux de coordonnés rvb en décimal. [0.5, 0.5, 0.5] est un gris à 50%. Pour définir des valeurs en hexadécimal utilisez l’expression hexToRgb() (catégorie Color Conversion) indiquez le code couleur entre guillemet précédé du #. Exemple : hexToRgb(« #2D8CEB »). Pour définir une police utiliser la boite de dialogaue qui souvre quand vous cliquez sur Font.. dans le Menu d’expression / texte.

Définir la taille de la police avec un curseur

Le paramétrage par des options pour expression va permettre un contrôle plus pratique des styles mais aussi de créer des animations originales.

Avec l’outil Écriture tracez un rectangle dans votre composition pour créer un texte formaté en mode paragraphe, qui sera contenu dans ce rectangle. Remplissez le contenu de la zone de texte en tapant suffisamment de texte. Ajoutez un effet Paramètre glissière de la catégorie Options pour expressions. Créez une expression dans la propriété Texte source du calque et tapez l’expression style.setFontSize(). L’auto-complétion vous permet de sélectionner l’expressions recherchée en cours de frape. Le curseur d’insertion se trouvant entre les parenthèses, pointez le mot Curseur dans le panneau Effets avec l’Icône de sélection d’expression. Validez l’expression et augmentez la valeur du Curseur.

Vous pouvez ainsi contrôler la taille de la police avec le Curseur. Pour un texte de type point ce n’est pas particulièrement intéressant, mais pour un texte de type paragraphe vous obtenez quelque chose qui serait impossible à obtenir autrement. En animant la taille de la police plutôt que l’échelle du texte comme on pourrait le faire par ailleurs, vous obtenez une réparation du texte par ligne qui change grâce au retour automatique du formatage paragraphe. Vous pouvez aussi utiliser l’expression setTracking() qui permet de changer l’approche entre les caractères pour là aussi changer la répartition de votre texte en ligne.

Définir un choix de typo et plus depuis une liste déroulante

L’effet Contrôle de menu déroulant de la catégorie Options pour expressions permet de personnaliser une liste déroulante pour provoquer certain choix dans les expressions.

Appliquez cet effet sur un calque de texte. Renommez l’effet par clic droit / Renommer (ou sélectionnez l’effet et appuyez sur Entrée). Donnez un nom qui corresponde à l’usage que vous allez faire de cette liste, comme : Choix de polices, Sélection de styles, Polices, Typos… c’est comme vous voulez. Puis cliquez sur l’option Modifier… pour ouvrir la boite de dialogue qui vous permet de gérer la liste. Personalisez les noms des différents éléments, ici c’est le nom des polices qui seront utilisées. Cliquez sur les bouton + ou pour ajouter ou supprimer des éléments de la liste. Cliquez sur OK pour valider.

Creez une expression dans le propriété Texte source. Commencez par créer un variable pour cibler la propriété Menu de l’effet avec le Sélecteur d’expression. Ajoutez un point puis value à le fin de l’expression. Mettez un point virgule pour finir la ligne.

var choix = effect("Choix de polices")("Menu").value;
switch(choix){
	case 1 : style.setFont("CenturyGothic");
	break;
	case 2 : style.setFont("CopperplateGothic-Bold");
	break;
	case 3 : style.setFont("Georgia");
	break;
	case 4 : style.setFont("PalatinoLinotype-Roman");
	break;
	case 5 : style.setFont("Tahoma");
	break;
	case 6 : style.setFont("TrebuchetMS");
	break;
	default:style;
}

La valeur de la propriété Menu de l’effet Contrôle de menu déroulant donne le chiffre corespondant au choix sélectionné : 1 pour le premier, 2 pour le deuxième etc. Pour évaluer la variable utilisez l’intruction switch. Chaque fois que la variable correspond à ce qui est après case l’instruction suivante est exécuté. La ligne break permet d’interrompre l’exécution des tests suivants. La ligne default donner l’instruction si aucune case ne correspond. Voir l’article : Conditions et boucles pour les instructions JavaScript.

Pour entrer le nom d’une police de caractère utilisez la boite de dialogue qui souvre quand vous cliquez sur Font… dans le Menu langage d’expression / Text.

Vous pouvez contrôler d’autres paramètres de style en ajoutant l’expression correspondante à la suite. Par exemplle fixer une taille spécifique en fonction de la police avec setFontSize().

Récupérer le style d’un caractère avec getStyleAt()

Le style récupéré avec l’objet style est le style du premier caractère, mais le texte peut utiliser plusieurs styles : si vous sélectionnez des caractères et que vous faites des changements dans le panneau Caractère, seuls les caractères sélectionnés seront modifiés. Si vous mettez des images clés dans la propriété Texte source vous pouvez changer de style au cours du temps. L’expression getStyleAt(charIndex, t = time) permet de récupérer le style en fonction de l’index du caractère et du temps.

Un exemple d’utilisation de getStyleAt() peut consister à créer plusieurs styles sur différents caractères et à les appeler en utilisant un Curseur d’un effet Paramètre glissière pour les appliquer sur un autre calque de texte. Le premier argument de la fonction, pour cibler un caractère selon son index, est tolérant : Il peut y avoir une variable non entière et hors des index, la valeur entière ou la plus proche sera utilisée comme index. Le premier caractère a pour index zéro. Cette tolérance simplifie l’utilisation de cette méthode. Vous pouvez paramétrer simplement le choix du caractère en utilisant directement la valeur du Curseur d’un Paramètre glissière. Une autre idée est d’utiliser un nombre aléatoire, ce qui permet d’altérener chaotiquement entre différents styles très facilement.

Créer un Pseudo Effect avec Pseudo Effect Maker pour copier des styles

Avec l’extension Pseudo Effect Maker de Jesse Toula (BatchFrame Software) vous pouvez créer une série de réglages, présentée comme un effet, pour contrôler vos expressions. Ce système va être parfait pour créer un preset qui permet de cibler un calque de texte avec une interface pratique pour activer ou désactiver les styles que l’on veux récupérer.

Conclusions sur l'utilisation des expressions de catégorie Text

Toutes les possibilités offertes par ces expressions seront particulièrement efficaces dans la création d’Objets graphiques essentiels (des modèles d’animations préconfigurés, créent dans After Effects et importés dans Premier Pro). Vous pourrez grâce à elles contrôler avec une grande efficacité les possibilités de personnalisation de vos animations à l’intérieur de Premier Pro.

Malgré la grande quantité de possibilité offerte il manque encore la gestion des options de recouvrement du fond par rapport au contour. Autre chose que vous ne pourrez pas contrôler par expression : tous les réglages concernant la mise en forme du panneau Paragraphe. Il aurrait aussi été pratique de pouvoir récupérer la police de caractère indépendamment de son style (Regular, Bold, etc.). Et  getStyleAt() ne fonctionne que dans un sens. Vous pouvez récupérer les styles sur des caractères en fonction de leurs index, mais l’inversse n’est pas possible. Les styles définient avec les expressions qui commencent par set s’appliquent toujours sur tous les caractères.