Verwenden von Expressions zum Bearbeiten und Zugreifen auf Texteigenschaften

Zuletzt aktualisiert am 14. Oktober 2024

Bearbeiten Sie die Textstile und Texteigenschaften mithilfe von Expression-Steuerelementen.

Verwende Expressions, um die Textstile in beliebigen Text-Expressions oder in Animationsvorlagen zu steuern. Mit Expressions können Sie z. B.:

  • Mehrere Titel verknüpfen und deren Stile gleichzeitig aktualisieren (sehr nützlich für das Entwerfen von Titeln).
  • Schriftart, Größe und Stil über mehrere Textebenen hinweg synchron halten.
  • Globale Änderungen der Texteigenschaften vornehmen.
  • Lege Stilattribute einzelner Zeichen in einer Textebene fest.

Nachdem du diese für eine Textebene festgelegt hast, verweise auf deren Ebeneneigenschaften, um Änderungen in der gesamten Komposition problemlos anzuwenden. After Effects-Expressions verwenden Eigenschaften, um Textstilwerte zu lesen (Get), und Funktionsmethoden, um diese in die Expression-Engine zu schreiben(Set). Auf diese Weise kannst du Textstile über Textebenen hinweg verknüpfen oder Steuerelemente einrichten, damit sie animiert oder in einer Animationsvorlage verwendet werden können.

Vor dem Verwenden von Expressions zur Bearbeitung von Texteigenschaften

  1. Stelle die Expressions-Engine auf JavaScript ein, indem du Projekteinstellungen > Expressions > Expression-Engine JavaScript auswählst.
  2. Füge eine Expression zur Eigenschaft Quelltext einer Textebene hinzu.
  3. Wähle im Flyout-Menü für die Expression-Sprache die Option Text > Eigenschaften Texteigenschaften oder Text > Formatierung.

Verfügbare Textattribute

Die folgenden Attribute für den Textstil können mit dem Objekt „Stil“ ausgelesen und festgelegt werden:

  • Schrift
  • Schriftgröße
  • Faux Fett
  • Faux Kursiv
  • Großbuchstaben
  • Kapitälchen
  • Laufweite
  • Zeilenabstand
  • Auto-Zeilenabstand
  • Grundlinienverschiebung
  • Füllung (aktivieren/deaktivieren)
  • Flächenfarbe
  • Kontur (aktivieren/deaktivieren)
  • Konturfarbe
  • Konturbreite
  • Ziffernsatz
  • Skalierung
  • Kerning
  • Tsume
  • Grundlinienrichtung
  • Grundlinienoption
Im Flyout-Menü für die Expression-Sprache sind alle Texteigenschaften aufgelistet, aus denen gewählt werden kann.
Das Flyout-Menü für die Expression-Sprache listet alle Texteigenschaften auf, auch die, die derzeit in After Effects enthalten sind.

Die Eigenschaft Quelltext einer Textebene wird von Expressions als JavaScript-Zeichenfolge interpretiert. Der Text selbst kann mit sourceText gelesen werden, muss jedoch für das Objekt „style“ mit der setText-Methode festgelegt werden, falls Stilattribute geändert werden. Gehe einige der Beispiele durch.

Expressions für Textebenen mit Absätzen

Neue Textzeile

Verwende \r in einer Zeichenfolgen-Expression, um eine neue Textzeile zu beginnen. Wenn du z. B. den Originaltext einer Ebene in Großbuchstaben auf dieselbe Ebene in eine neue Zeile kopieren möchtest, verwende die folgende Expression:

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

Verfügbare Absatzattribute 

Zusätzlich zu den Textstilattributen gibt es auch Absatzattribute. Diese können nur auf die gesamte Textebene angewendet werden. Die Absatzattribute sind nur in After Effects verfügbar.

  • Richtung
  • Alle-Zeilen-Setzer
  • Einzug erste Zeile
  • Ausrichtung 
  • Zeilenabstand-Typ
  • Linker Rand
  • Rechter Rand
  • Abstand danach
  • Abstand davor
  • Hängende Roman-Interpunktion
Im Flyout-Menü „Expression-Sprache“ werden alle Absatzeigenschaften aufgelistet, einschließlich derer aus After Effects Beta.
Im Flyout-Menü „Expression-Sprache“ werden alle in After Effects enthaltenen Absatzeigenschaften aufgeführt.

Expression-Menü für PostScript-Schriftarten

Wenn sie in Expressions auf Schriftarten verweisen, müssen sie einen speziellen „Systemnamen“ (oder Vergleichbares) verwenden. Es wird empfohlen, diesen speziellen Namen aus dem Dialogfeld Text > Schriftart > Schriftart auswählen einzufügen, um Expression-Fehler zu vermeiden.

  • Öffne das Flyout-Menü Expression-Sprache und wähle Text > Schriftart aus. Dies öffnet ein Dialogfeld mit Dropdown-Menüs, in denen Sie das Schriftbild und die Schriftart auswählen können, die in die Expression eingefügt werden sollen.
Das Menü „Schrift“
Wähle im Menü „Expression-Sprache“ die Schrift und die Schriftart aus, die in die Expression eingefügt werden sollen.

Synchronisierung der Schriftarten

Schriftarten, auf die nur im Expressions-Editor verwiesen wird, werden nicht als vom Projekt verwendete Schriftarten aufgezeichnet. Um sicherzustellen, dass alle Schriftarten, auf die im Expressions-Editor verwiesen wird, automatisch synchronisiert oder im Dialogfeld Schriftarten auflösen ausgefüllt werden, verwende all diese Schriftarten auf einer Ebene, selbst wenn diese Ebenenquelle ausgeblendet ist.

Objekt „Stil“

Alle Formateigenschaften für eine Textebene liegen im Objekt „Stil“ vor, auf das du über die Eigenschaft Quelltext zugreifst:

// Den vollständigen Pfad zur Source Text-Eigenschaft verwenden
text.sourceText.style

// Den allgemeinen Namen für die aktuelle Eigenschaft verwenden
thisProperty.style

Wenn du nur „style“ verwendest, entspricht dies den obigen Beispielen. Wenn aber Stilattribute aus mehreren Textebenen kombiniert werden, kann dies zu Verwirrung führen.

Die Stilattribute anderer Textebenen können ebenfalls gelesen werden. Verwende das Auswahlwerkzeug, um am Anfang des ersten oben gezeigten Beispiels eine Verknüpfung mit der anderen Textebene herzustellen.

// Auf das Style-Objekt einer bestimmten Textebene zugreifen

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

Stilattribute einzelner Zeichen in einer Textebene

Du kannst jetzt nicht nur Text-Expressions verwenden, um Stilattribute der gesamten Textebene festzulegen, sondern auch Stilattribute für einzelne Zeichen in der Ebene festlegen. Ein Vorteil dieser zeichenweisen Steuerung besteht darin, dass Text automatisch neu fließt, beispielsweise beim Skalieren von Buchstaben, Verwenden hochgestellter Buchstaben und Verwenden einer anderen Schriftart. Dies ist genau so, wie du es bei der Formatierung von Unterzeichenfolgen im Bedienfeld Zeichen erwarten würdest.

Beispiele

Die Schrift für bestimmte Wörter ändern

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

Anwenden der Formatierung „Fett“ auf die erste Zeile einer Textebene und Vergrößern

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

Anwenden der Option „Hochgestellt“ auf Zeichen

Um die Zeichenfolge zu verwenden, füge eine Textebene mit dem Text „1st and 2nd Place“ hinzu und wende Folgendes auf den Quelltext an.

textourceTexttyleetBaselineOption(“superscript”,1,2)etBaselineOption(“superscript”, 9, 2)

Stil und Quelltext kombinieren

Text und Stil
Kombinieren von Stil und Quelltext

Damit sowohl der Wert des Stils als auch der tatsächliche Wert des Quelltexts ausgegeben werden, musst du die Funktionen getStyleAt und setText kombinieren. Im Folgenden finden Sie zwei Beispiele für diese Expression.

// Die Werte sowohl des Styles als auch des tatsächlichen Source Text zur Zeit zurückgeben (Kurzform)

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

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

newStyle.setText(sourceTextProperty);

// Die Werte sowohl des Styles als auch des tatsächlichen Quelltexts der vorherigen Ebene in der Ebenenreihenfolge zurückgeben

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

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

newStyle.setText(sourceTextProperty);

Dropdown der Schriftarten
Verknüpfen von Schriftarten oder Stilen mit einem Dropdown-Menü

Du kannst Dropdown-Menüs verwenden, um Textstile zu steuern, z. B. das Festlegen bestimmter Schriftarten für Textebenen. Dies ist hilfreich für Markenrichtlinien, Vorlagen, MoGRTS und mehr:

// Eine Textebene mit einem Dropdown-Menü auf bestimmte Schriften sperren

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

}

Haupttextebene

Master-Textebene
Texteigenschaften von „Textebene 1“ abrufen, aber Schriftgrad und Flächenfarbe überschreiben

Verknüpfe mehrere Textebenen mit einem Steuerelement für die Hauptschriftart, um den Textstil mehrerer Ebenen gleichzeitig zu steuern. Erstelle zwei Textebenen und füge die folgende Expression in den Quelltext einer der Ebenen ein:

// Alle Texteigenschaften von einer Textebene abrufen

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

Es ist möglich, den Stil einer Textebene abzurufen, bestimmte Texteigenschaften aber zu überschreiben, indem mit den Funktionen set Werte hinzugefügt werden. Im Folgenden findest du zwei Beispiele für die Verwendung von Flächenfarbe und Schriftgröße.

// Alle Texteigenschaften von "Text Layer 1" abrufen, aber Füllfarbe und Schriftgrad mit fest codierten Werten überschreiben

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

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

// Alle Texteigenschaften von "Text Layer 1" abrufen, aber Füllfarbe und Schriftgrad mit den aktuellen Texteigenschaften der Ebene überschreiben

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

Beispiele

Im Folgenden findest du Beispiele dazu, wie du auf Werte von Texteigenschaften zugreifst und sie mit Expressions verwendest:

Schrift

Im Folgenden findest du Beispiele für den Zugriff auf Schrift, Schriftgröße, Faux Fett, Faux Kursiv, Laufweite und Zeilenabstand für eine Textebene:

// Den Namen der Schrift für die Textebene selbst zurückgeben
text.sourceText.style.font;

// Den Namen der Schrift zurückgeben, die eine andere Textebene verwendet
var otherLayer = thisComp.layer("Other Layer Name");

otherLayer.text.sourceText.style.font;

// Den Wert des Schriftgrads für die Textebene selbst zurückgeben
text.sourceText.style.fontSize;

// Den Wert des Schriftgrads für eine andere Textebene zurückgeben
var otherLayer = thisComp.layer("Other Layer Name");

otherLayer.text.sourceText.style.fontSize;

// Einen booleschen Wert zurückgeben, ob der Text einer Ebene Faux Bold ist oder nicht (wahr oder falsch)
text.sourceText.style.isFauxBold;

// Einen booleschen Wert zurückgeben, ob der Text einer Ebene Faux Italic ist oder nicht (wahr oder falsch)
text.sourceText.style.isFauxItalic;

// Den Wert des Trackings einer Textebene als Zahl zurückgeben
text.sourceText.style.tracking;

// Den Wert des Zeilenabstands einer Textebene als Zahl zurückgeben
text.sourceText.style.leading;

Füllung

Im Folgenden findest du Beispiele für den Zugriff auf Füllung und Flächenfarbe für eine Textebene:

// Einen booleschen Wert zurückgeben, ob auf den Text einer Ebene eine Füllung angewendet wird (wahr oder falsch)
text.sourceText.style.applyFill;

// Den Wert der Füllfarbe einer Textebene zurückgeben
// Standardmäßig gibt dies ein Array der RGB-Werte auf einer Skala von 0 – 1,0 zurück
text.sourceText.style.fillColor;

// Die Füllfarbe einer Textebene mit setApplyFill und setFillColor festlegen
// setFillColor-Werte werden als RGB-Array auf einer Skala zwischen 0 – 1,0 definiert
var newStyle = style.setApplyFill(true);

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

// Die Füllfarbe einer Textebene festlegen und das 0 – 1,0 RGB-Array durch hexToRGB ersetzen, um die Farbwerte mit Hex-Werten zu definieren
var newStyle = style.setApplyFill(true);

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

RGB-Werte der Füllung

// Den roten (R) Wert der Füllfarbe zurückgeben

text.sourceText.style.fillColor[0];

Anmerkung

Um den Wert der Flächenfarbe für R, G oder B einer Textebene zurückzugeben, füge in Klammern 0, 1 bzw. 2 hinzu.

Strich

Im Folgenden findest du Beispiele für den Zugriff auf die Kontur, die Konturfarbe und die Konturbreite einer Textebene:

// Einen booleschen Wert zurückgeben, ob auf den Text einer Ebene ein Strich angewendet wird (wahr oder falsch)
text.sourceText.style.applyStroke;

// Den Wert der Strichfarbe einer Textebene zurückgeben
// Standardmäßig gibt dies ein Array der RGB-Werte auf einer Skala von 0 – 1,0 zurück
text.sourceText.style.strokeColor;

// Die Strichfarbe einer Textebene mit setApplyStroke und setStrokeColor festlegen
// setStrokeColor-Werte werden als RGB-Array auf einer Skala zwischen 0 – 1,0 definiert
var newStyle = style.setApplyStroke(true);

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

// Die Strichfarbe einer Textebene festlegen und das 0 – 1,0 RGB-Array durch hexToRGB ersetzen, um die Farbwerte mit Hex-Werten zu definieren
var newStyle = style.setApplyStroke(true);

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

// Den Wert der Strichbreite einer Textebene als Zahl zurückgeben
text.sourceText.style.strokeWidth;

RGB-Werte für die Kontur

// Den grünen (G) Wert der Strichfarbe zurückgeben

text.sourceText.style.strokeColor[1];

Anmerkung

Um den Wert der Konturfarbe für R, G oder B einer Textebene zurückzugeben, fügen Sie in Klammern 0, 1 bzw. 2 hinzu.

getStyleAt-Funktion

Verwenden Sie diese get-Funktion, um den Stilwert eines bestimmten Zeichens zu einem bestimmten Zeitpunkt zurückzugeben. Index muss eine Zahl sein – der Index des Buchstabens oder des Zeichens, dessen Stil benötigt wird. atTime muss ebenfalls eine Zahl sein – der Zeitpunkt in der Komposition, zu dem der Stil abgerufen werden soll, falls der Stil Keyframes verwendet und sich im Laufe der Zeit ändert.

text.sourceText.getStyleAt(index, atTime);

Anmerkung

Die Verwendung von text.sourceText.style ist identisch mit der Verwendung von text.sourceText.getStyleAt(0,0).

// Ruft den Stil des ersten Zeichens am Anfang der Timeline ab

text.sourceText.getStyleAt(0,0);

Set-Funktionen

Zusätzliche set-Funktionen, die einzeln oder in Kombination verwendet werden können, um Stile über Ebenen hinweg anzupassen. Jede dieser Funktionen wird für das Objekt „Stil“ einer Eigenschaft Quelltext aufgerufen:

// Schrift auf Arial festlegen
style.setFont("ArialMT")

// Schriftgrad auf 80 festlegen
style.setFontSize(80);

// Faux Bold mit einem Booleschen Wert aktivieren
style.setFauxBold(true)

// Faux Italics mit einem Booleschen Wert aktivieren
style.setFauxItalics(true)

// All Caps mit einem Booleschen Wert aktivieren
style.setAllCaps(true)

// Small Caps mit einem Booleschen Wert aktivieren
style.setSmallCaps(true)

// Tracking als Zahl festlegen
style.setTracking(10);

// Leading als Zahl festlegen
style.setLeading(10);

// Autom. Zeilenabstand mit einem Booleschen Wert aktivieren
style.setAutoLeading(true);

// Grundlinienversatz als Zahl festlegen
style.setBaselineShift(10);

// Strichbreite als Zahl festlegen
style.setStrokeWidth(10);

// Erste Zeile einer Textebene auf Fett festlegen und vergrößern
text.sourceText.style.setFontSize(100, 0, 30).setFauxBold(true, 0, 30)

// Hochgestellt für Zeichen festlegen
text.sourceText.style.setBaselineOption("superscript",1,2).setBaselineOption("superscript", 9, 2)

Alle set-Funktionen für Textstile können miteinander verkettet werden, um mehrere Attribute einfach zu setzen, ohne jedes Mal einen neuen Stil deklarieren zu müssen. Siehe folgendes Beispiel:

Anmerkung

Ein Semikolon wird erst eingefügt, nachdem das letzte Attribut festgelegt wurde. Wenn Sie jedes Attribut in einer eigenen Zeile angeben, wird die Kette leichter lesbar.

// Füllung aktivieren, Füllfarbe festlegen, Grundlinie festlegen, Tracking festlegen und automatischen Zeilenabstand aktivieren

text.sourceText.style

.setApplyFill(true)

.setFillColor(hexToRgb("FFFFFF"))

.setBaselineShift(10)

.setTracking(25)

.setAutoLeading(true);

Zusätzliche Anwendungsfälle für Expressions im Quelltext

Das Hinzufügen einer Textebene zu einer Komposition und das Hinzufügen einer Expression zu deren Eigenschaft Quelltext ist eine gute Möglichkeit, die Eigenschaftswerte anderer Ebenen zu untersuchen. Die folgende Expression in einer Eigenschaft Quelltext meldet den Namen und Wert der Eigenschaft Deckkraft für die nächste Ebene in der Stapelreihenfolge von Ebenen.

var nextLayer = thisComp.layer(index + 1);
nextLayer.name + "\rDeckkraft = " + nextLayer.opacity.value;

Im folgenden Beispiel wird der Name des Footage-Elements angegeben, das als Quelle der ersten Bildebene im Stapel zum aktuellen Zeitpunkt verwendet wird, für das der Schalter „Video“ eingestellt ist:

// Erstelle sourceFootageName als leeren String
var sourceFootageName = "";

// Durchlaufe alle Ebenen in der Komposition
for (var i = 1; i <= thisComp.numLayers; i++) {

// Wenn i dem Index dieser Ebene entspricht, gehe zur nächsten Schleife
if (i == index) {
continue;
}

// Setze myLayer für die aktuelle Iteration der Schleife
var myLayer = thisComp.layer(i);

// Wenn myLayer kein Video hat oder nicht aktiv ist, gehe zur nächsten Schleife/Ebene
if ( !myLayer.hasVideo || !myLayer.active ) {
continue;
}

// Wenn myLayer zur aktuellen Zeit aktiv ist
if ( myLayer.active ) {
try {
// Setze sourceFootageName auf den Quellnamen von myLayer
sourceFootageName = myLayer.source.name;
} catch ( err ) {
// Wenn myLayer keine Quelle hat,
// setze sourceFootageName auf den Namen von myLayer
sourceFootageName = myLayer.name;
}

// Beende die Schleife
break;
}
}

// Zeige den sourceFootageName an
sourceFootageName;

Speichern von Expressions als Vorgaben

Wähle die Eigenschaft Quelltext mit den hinzugefügten Expressions aus. Wähle anschließend Animation > Animationsvorgabe speichern aus, um die Expressions in anderen Projekten wiederzuverwenden. Animationsvorgaben werden im Bedienfeld Effekte und Vorgaben gespeichert.

Weitere Informationen finden Sie unter Überblick über Effekte und Animationsvorgaben.

Weitere Ressourcen zu Expressions

Da Sie jetzt einige der Konzepte im Zusammenhang mit Expressions verstanden haben, können Sie der Community beitreten, um echte Anwendungsbeispiele zu erhalten und Ihre Arbeit zu teilen.

Das AE Enhancers Forum bietet auch zahlreiche Beispiele und Informationen zu Expressions sowie Skripte und Animationsvorgaben.