Utilizzo delle espressioni per modificare e accedere alle proprietà di testo

Ultimo aggiornamento il 14 ott 2024

Modificare stili e proprietà del testo utilizzando i controlli delle espressioni.

Usa le espressioni per controllare lo stile del testo in qualsiasi espressione di testo o nei modelli di grafica animata. Alcune cose che puoi fare con le espressioni sono:

  • collegare più titoli e aggiornare i loro stili contemporaneamente (molto utile per la progettazione di titoli);
  • mantenere sincronizzati font, dimensioni e stile su più livelli di testo;
  • apportare modifiche globali alle proprietà del testo.
  • impostare gli attributi di stile dei singoli caratteri in un livello di Testo.

Una volta impostati per un livello di testo, puoi fare riferimento a tali proprietà dei livelli per applicare facilmente le modifiche all’intera composizione. Le espressioni di After Effects utilizzano le proprietà per leggere (ottenere) valori e metodi di funzione dello stile di testo per scriverli (impostare) all’interno del motore per espressioni. In questo modo si possono collegare gli stili tra i livelli di testo o impostare i controlli affinché vengano animati o utilizzati in un modello di grafica animata.

Prima di iniziare a utilizzare le espressioni per modificare le proprietà del testo

  1. Imposta Motore espressioni su Javascript selezionando Impostazioni progetto > Espressioni > Motore espressioni > Javascript.
  2. Aggiungi un’espressione alla proprietà di un livello Testo Testo sorgente.
  3. Nel menu a comparsa Linguaggio delle espressioni, seleziona Testo > Proprietà > Proprietà testo o Testo > Stile.

Attributi di testo disponibili

I seguenti attributi di stile del testo possono essere letti e impostati utilizzando l’oggetto di stile:

  • Font
  • Dimensione font
  • Grassetto simulato
  • Corsivo simulato
  • Tutte maiuscole
  • Maiuscoletto
  • Spaziatura
  • Interlinea
  • Interlinea automatica
  • Scorrimento linea di base
  • Riempi (abilita/disabilita)
  • Colore di riempimento
  • Tratto (abilita/disabilita)
  • Colore tratto
  • Larghezza tratto
  • Set di cifre
  • Ridimensionamento
  • Crenatura
  • Tsume
  • Direzione linea di base
  • Opzione linea di base
Il menu a comparsa Linguaggio espressioni elenca tutte le proprietà del testo tra cui scegliere.
Il menu a comparsa Linguaggio delle espressioni elenca tutte le proprietà del testo, comprese quelle attualmente presenti in After Effects.

La proprietà del testo sorgente di un livello Testo viene interpretata dalle espressioni come stringa JavaScript. Il testo stesso può essere letto con sourceText, ma deve essere impostato sull’oggetto di stile con il metodo setText se gli attributi di stile vengono modificati. Studia alcuni esempi.

Espressioni per i livelli di testo con paragrafi

Iniziare una nuova riga di testo

Usa \r in un’espressione stringa per iniziare una nuova riga di testo. Ad esempio, per copiare il testo originale da un livello sullo stesso livello e ripeterlo su una nuova riga con tutti i caratteri in maiuscolo, utilizza l’espressione seguente:

text.sourceText + “\r” + text.sourceText.toUpperCase()

Attributi paragrafo disponibili 

Oltre agli attributi di stile testo, esistono anche gli attributi paragrafo. Questi possono essere applicati solo all’intero livello di Testo. Gli attributi paragrafo sono disponibili solo in After Effects (Beta).

  • Direzione
  • Compositore multi-riga
  • Rientro prima riga
  • Giustificazione 
  • Tipo interlinea
  • Margine sinistro
  • Margine destro
  • Spazio dopo
  • Spazio prima
  • Punteggiatura in caratteri latini sospesa
Il menu a comparsa Lingua espressione elenca tutte le proprietà del paragrafo, comprese quelle attualmente in After Effects Beta.
Il menu a comparsa Linguaggio delle espressioni elenca tutte le proprietà del paragrafo incluse in After Effects.

Menu espressioni font PostScript

Quando si fa riferimento ai font nelle espressioni, questi devono utilizzare uno speciale “nome di sistema” (o simile). Si consiglia di inserire questo nome speciale dalla finestra di dialogo Testo > Font > Seleziona font per evitare errori di espressione.

  • Apri il menu a comparsa Lingua espressione, quindi seleziona Testo > Font. Viene visualizzata una finestra di dialogo con menu a discesa per selezionare il carattere tipografico e il font da inserire nell’espressione.
Menu font
Utilizza il menu Lingua espressione per selezionare il carattere e il font da inserire nell’espressione.

Sincronizzazione del font

I font a cui si fa riferimento solo nell’Editor di espressioni non vengono registrati come font utilizzati dal progetto. Per garantire che tutti i font a cui si fa riferimento nell’Editor di espressioni si sincronizzino automaticamente o popolino la finestra di dialogo Risolvi font, utilizzali tutti su un livello, anche se la sorgente del livello è nascosta.

Oggetto Stile

Tutte le proprietà di stile per un livello di testo esistono sull’oggetto stile, a cui si accede sulla proprietà del testo sorgente utilizzando quanto segue:

// Utilizzando l'intero percorso alla proprietà Source Text
text.sourceText.style

// Utilizzando il nome generico per la proprietà corrente
thisProperty.style

Usare lo stile da solo è lo stesso che usare uno dei due esempi sopra, ma questo può creare confusione se gli attributi di stile di più livelli di testo vengono combinati.

È possibile leggere anche gli attributi di stile di altri livelli di testo. Usa il selettore per creare un collegamento all’altro livello di testo all’inizio del primo esempio mostrato sopra.

// Accesso all'oggetto style di un livello di testo specifico

thisComp.layer("Other Layer Name").text.sourceText.style;

Attributi di stile di singoli caratteri in un livello di testo

Oltre a utilizzare le espressioni di testo per impostare gli attributi di stile dell’intero livello Testo, puoi impostare anche gli attributi di stile dei singoli caratteri nel livello. Un vantaggio di questo controllo a livello di carattere è la ridisposizione automatica del testo, come ad esempio quando si ridimensionano le lettere, si utilizza l’apice, e un font diverso, come ci si potrebbe aspettare dall’utilizzo dello stile delle sottostringhe dal pannello Carattere.

Esempi

Cambiare il font per determinate parole

text.sourceText.style
.setFont("Montserrat-Light")
.setFont("Gigantic", 0, 6).setFont("Gigantic", 10, 6).setFont("Gigantic", 20)

Impostare la prima riga di un livello di testo in grassetto per ingrandirla

text.sourceText.style.setFontSize(100, 0, 30).setFauxBold(true, 0, 30)

Impostare l’apice per i caratteri

Per usare la stringa, aggiungi un livello Testo con testo “Primo e secondo posto” e applica quello che segue al Testo sorgente.

text.sourceText.style.setBaselineOption(“superscript”, 1,2).setBaselineOption(“superscript”, 9, 2)

Combina stile e testo sorgente

testo e stile
Combinazione di stile e testo sorgente

Per restituire i valori sia dello stile che del testo sorgente effettivo alla volta, dovrai combinare le funzioni getStyleAt e setText. Di seguito sono riportati due esempi di come scrivere questa espressione.

// Per restituire i valori sia dello stile che del testo di origine effettivo al momento (forma breve)

var sourceTextProperty = thisComp.layer("MAIN TEXT").text.sourceText;

var newStyle = sourceTextProperty.getStyleAt(0,0);

newStyle.setText(sourceTextProperty);

// Per restituire i valori sia dello stile che del testo di origine effettivo del livello precedente nell'ordine di sovrapposizione dei livelli

var sourceTextProperty = thisComp.layer(index - 1).text.sourceText;

var newStyle = sourceTextProperty.getStyleAt(0,0);

newStyle.setText(sourceTextProperty);

font a discesa
Collega font o stili a un menu a discesa

Puoi usare i Menu a discesa per controllare gli stili di testo, come bloccare i livelli di testo su font specifici. Questo è utile per le linee guida del marchio, i modelli, i MOGRTS e molto altro:

// Per associare un livello di testo a font specifici con un controllo menu a discesa

var dropDownMenu = thisComp.layer("LayerName").effect("Dropdown Menu Control")("Menu");

switch (dropDownMenu.value) {

case 1 :

text.sourceText.style.setFont("Georgia");

break;

case 2 :

text.sourceText.style.setFont("Impact");

break;

default :

text.sourceText.style.setFont("Tahoma");

}

Livello di testo principale

livello di testo principale
Ottieni le proprietà del testo da “Text Layer 1” ma sovrascrivi la dimensione del font e il colore di riempimento

Collega più livelli di testo a un controller di font principale per controllare lo stile del testo di più livelli contemporaneamente. Crea due livelli di testo e incolla questa espressione nel testo sorgente di uno di essi:

// Per ottenere tutte le proprietà del testo da un livello di testo

thisComp.layer("Text Layer 1").text.sourceText.style;

È possibile ottenere lo stile da un livello di testo ma sovrascrivere proprietà di testo specifiche aggiungendo valori con le funzioni Imposta. Di seguito sono riportati due esempi di utilizzo del Colore di riempimento e della Dimensione di font.

// Per ottenere tutte le proprietà del testo da "Text Layer 1" ma sostituire Fill Color e Dimensione del font con valori hardcoded

var newStyle = thisComp.layer("Text Layer 1").text.sourceText.style;

newStyle.setFillColor(hexToRgb("FF0000")).setFontSize(100);

// Per ottenere tutte le proprietà del testo da "Text Layer 1" ma sostituire Fill Color e dimensione del font con le proprietà del testo correnti del livello

var newStyle = thisComp.layer("Text Layer 1").text.sourceText.style;

var currentFillColor = thisProperty.style.fillColor;

var currentFontSize = thisProperty.style.fontSize;

newStyle.setFillColor(currentFillColor).setFontSize(currentFontSize);

Esempi

Di seguito sono riportati alcuni esempi di come accedere e utilizzare i valori delle proprietà di testo con le espressioni.

Font

I seguenti sono esempi per accedere al Font di un livello di testo, Dimensione font, Grassetto simulato, Corsivo simulato, Tracciamento e Interlinea:

// Restituisce il nome del font per il livello di testo stesso
text.sourceText.style.font;

// Restituisce il nome del font utilizzato da un altro livello di testo
var otherLayer = thisComp.layer("Other Layer Name");

otherLayer.text.sourceText.style.font;

// Restituisce il valore di Dimensione del font per il livello di testo stesso
text.sourceText.style.fontSize;

// Restituisce il valore di Dimensione del font per un altro livello di testo
var otherLayer = thisComp.layer("Other Layer Name");

otherLayer.text.sourceText.style.fontSize;

// Restituisce un valore Boolean che indica se il testo di un livello è Faux Bold o meno (True o False)
text.sourceText.style.isFauxBold;

// Restituisce un valore Boolean che indica se il testo di un livello è Faux Italic o meno (True o False)
text.sourceText.style.isFauxItalic;

// Restituisce il valore del tracking di un livello di testo come numero
text.sourceText.style.tracking;

// Restituisce il valore dell'interlinea di un livello di testo come numero
text.sourceText.style.leading;

Riempimento

I seguenti sono esempi per accedere a Riempimento e Colore riempimento di un livello di testo:

// Per restituire un valore booleano per sapere se il testo di un livello ha il riempimento applicato (vero o falso)
text.sourceText.style.applyFill;

// Per restituire il valore del colore di riempimento di un livello di testo
// Per impostazione predefinita, restituisce un array dei valori RGB su una scala da 0 – 1.0
text.sourceText.style.fillColor;

// Imposta il colore di riempimento di un livello di testo con setApplyFill e setFillColor
// I valori setFillColor sono definiti come array RGB su una scala tra 0 – 1.0
var newStyle = style.setApplyFill(true);

newStyle.setFillColor([1.0, 1.0, 1.0]);

// Imposta il colore di riempimento di un livello di testo sostituendo l'array RGB 0 – 1.0 con hexToRGB per definire i valori del colore con valori esadecimali
var newStyle = style.setApplyFill(true);

newStyle.setFillColor(hexToRgb("FFFFFF"));

Riempimento valori RGB

// Per restituire il valore del rosso (R) del colore di riempimento

text.sourceText.style.fillColor[0];

Nota

Per restituire il valore del Colore di riempimento per R, G o B di un livello di testo, aggiungi rispettivamente 0, 1 o 2 tra parentesi.

Tratto

I seguenti sono esempi per accedere a Tratto, Colore tratto e Larghezza tratto di un livello di testo:

// Per restituire un valore booleano per sapere se il testo di un livello ha la traccia applicata (vero o falso)
text.sourceText.style.applyStroke;

// Per restituire il valore del colore della traccia di un livello di testo
// Per impostazione predefinita, restituisce un array dei valori RGB su una scala da 0 – 1.0
text.sourceText.style.strokeColor;

// Impostare il colore della traccia di un livello di testo con setApplyStroke e setStrokeColor
// I valori setStrokeColor sono definiti come array RGB su una scala tra 0 – 1.0
var newStyle = style.setApplyStroke(true);

newStyle.setStrokeColor([1.0, 0.0, 0.0]);

// Impostare il colore della traccia di un livello di testo sostituendo l'array RGB 0 – 1.0 con hexToRGB per definire i valori colore con valori esadecimali
var newStyle = style.setApplyStroke(true);

newStyle.setStrokeColor(hexToRgb("FF0000"));

// Per restituire il valore della larghezza della traccia di un livello di testo come numero
text.sourceText.style.strokeWidth;

Valori RGB del tratto

// Per restituire il valore verde (G) del colore della traccia

text.sourceText.style.strokeColor[1];

Nota

Per restituire il valore del Colore tratto per R, G o B di un livello Testo, aggiungi rispettivamente 0, 1 o 2 tra parentesi.

Funzione getStyleAt

Usa questa funzione get per restituire il valore di stile di un particolare carattere in un momento specifico. indice dovrebbe essere un numero, l’indice della lettera o del carattere di cui è necessario lo stile. atTime dovrebbe anche essere un numero, il tempo all’interno della composizione da cui ottenere lo stile nel caso in cui questo sia inserito in un fotogramma chiave e cambi nel tempo.

text.sourceText.getStyleAt(index, atTime);

Nota

L’utilizzo di text.sourceText.style equivale all’utilizzo di text.sourceText.getStyleAt(0,0).

// Ottiene lo stile del primo carattere all'inizio della timeline

text.sourceText.getStyleAt(0,0);

Imposta funzioni

Imposta funzioni aggiuntive che possono essere utilizzate singolarmente o in combinazione tra loro per attivare gli stili tra livelli. Ognuna di queste funzioni viene chiamata sull’oggetto di stile di una proprietà del testo sorgente :

// Imposta il font usato su Arial
style.setFont("ArialMT")

// Imposta la dimensione del font su 80
style.setFontSize(80);

// Abilita il Finto grassetto con un valore booleano
style.setFauxBold(true)

// Abilita il Finto corsivo con un valore booleano
style.setFauxItalics(true)

// Abilita Tutto maiuscole con un valore booleano
style.setAllCaps(true)

// Abilita Maiuscoletto con un valore booleano
style.setSmallCaps(true)

// Imposta il tracking come numero
style.setTracking(10);

// Imposta l'Interlinea come numero
style.setLeading(10);

// Abilita Interlinea automatica con un valore booleano
style.setAutoLeading(true);

// Imposta lo Spostamento linea di base come numero
style.setBaselineShift(10);

// Imposta la Larghezza traccia come numero
style.setStrokeWidth(10);

// Imposta la prima riga di un livello di testo in grassetto e rendila più grande
text.sourceText.style.setFontSize(100, 0, 30).setFauxBold(true, 0, 30)

// Imposta l'apice per i caratteri
text.sourceText.style.setBaselineOption("superscript",1,2).setBaselineOption("superscript", 9, 2)

Tutte le funzioni Imposta per gli stili di testo possono essere concatenate per impostare facilmente più attributi senza dover dichiarare ogni volta un nuovo stile, come nell’esempio seguente:

Nota

Non viene utilizzato il punto e virgola finché non viene impostato l’ultimo attributo. Elencare ogni attributo sulla propria riga aiuta a rendere l'intera catena più facile da leggere.

// Abilita Riempimento, imposta Colore riempimento, imposta baseline, imposta tracking e abilita Interlinea automatica

text.sourceText.style

.setApplyFill(true)

.setFillColor(hexToRgb("FFFFFF"))

.setBaselineShift(10)

.setTracking(25)

.setAutoLeading(true);

Usi aggiuntivi per le espressioni sul testo sorgente

Aggiungere un livello testo a una composizione e un’espressione alla relativa proprietà Testo sorgente può essere un valido metodo per esaminare i valori delle proprietà di altri livelli. Ad esempio, l’espressione seguente in una proprietà Testo sorgente riporta il nome e il valore della proprietà Opacità per il livello successivo nell’ordine di sovrapposizione dei livelli:

```javascript var nextLayer = thisComp.layer(index + 1);
nextLayer.name + "\rTonalità = " + nextLayer.opacity.value; ```

L’esempio seguente riporta il nome dell’elemento di metraggio usato come sorgente del livello dell’immagine all’inizio dell’ordine di sovrapposizione nel tempo corrente in cui lo switch Video è impostato:

```json { "translatedText": [ "// Crea sourceFootageName come stringa vuota
", " var sourceFootageName = \"\";
", "
", " // Esegui il loop di tutti i livelli nella composizione
", " for (var i = 1; i <= thisComp.numLayers; i++) {
", "
", " // Se i corrisponde all'indice di questo livello, continua al loop successivo
", " if (i == index) {
", " continue;
", " }
", "
", " // Imposta myLayer per l'iterazione corrente del loop
", " var myLayer = thisComp.layer(i);
", "
", " // Se myLayer non ha video o non è primario, continua al loop/livello successivo
", " if ( !myLayer.hasVideo || !myLayer.active ) {
", " continue;
", " }
", "
", " // Se myLayer è primario al momento attuale
", " if ( myLayer.active ) {
", " try {
", " // Imposta sourceFootageName sul nome dell'origine di myLayer
", " sourceFootageName = myLayer.source.name;
", " } catch ( err ) {
", " // Se myLayer non ha origine,
", " // imposta sourceFootageName sul nome di myLayer
", " sourceFootageName = myLayer.name;
", " }
", "
", " // Arresta il loop
", " break;
", " }
", " }
", "
", " // Visualizza sourceFootageName
", " sourceFootageName;" ] } ```

Salvare le espressioni come predefinite

Seleziona la proprietà del testo sorgente a cui sono state aggiunte le espressioni. Quindi, seleziona Animazione > Salva animazione predefinita per riutilizzare le espressioni in altri progetti. Le animazioni predefinite vengono salvate nel pannello Effetti e predefiniti.

Per ulteriori informazioni, consulta Panoramica sugli effetti e sui predefiniti di animazione.

Ulteriori risorse sulle espressioni

Una volta compresi alcuni dei concetti base delle espressioni, visita la community, dove potrai trovare alcuni esempi reali e condividere il tuo lavoro.

Il forum AE Enhancers fornisce molti esempi e molte informazioni sulle espressioni, nonché script e predefiniti di animazione.