Usar expressões para editar e acessar propriedades de texto

Última atualização em 14/10/2024

Editar os estilos e as propriedades de texto usando os controles de expressão.

Use expressões para controlar os estilos de texto em qualquer expressão de texto ou em modelos de animações. Algumas coisas que você pode fazer com expressões são:

  • Vincular vários títulos e atualizar seus estilos ao mesmo tempo (muito útil para a criação de títulos).
  • Manter a fonte, o tamanho e o estilo sincronizados em várias camadas de texto.
  • Fazer alterações globais nas propriedades de texto.
  • Defina atributos de estilo para caracteres individuais em uma camada de Texto.

Após utilizar essas definições em uma camada de texto, faça referência às propriedades dessa camada para aplicar alterações com facilidade em toda a composição. As expressões do After Effects usam propriedades para ler valores de estilo de texto (get) e métodos de função para gravá-los (set) no mecanismo de expressão. Isso permite vincular estilos de texto em camadas de texto ou configurar controles para que sejam animados ou usados em um Modelo de animações.

Antes de começar a usar expressões para editar propriedades de texto

  1. Defina o Mecanismo de expressões para Javascript, selecionando Configurações do projeto > Expressões > Mecanismo de expressões > Javascript.
  2. Adicione uma expressão a uma propriedade Texto de origem de uma camada de texto.
  3. No menu suspenso Linguagem de expressão, selecione Texto > Propriedades > Propriedades de texto ou Texto > Estilos.

Atributos de texto disponíveis

Os seguintes atributos de estilo de texto podem ser lidos e definidos usando o objeto de estilo:

  • Fonte
  • Tamanho da fonte
  • Negrito falso
  • Itálico falso
  • Todas em maiúsculas
  • Minúsculas
  • Rastreamento
  • Entrelinha
  • Entrelinha automática
  • Deslocamento da linha de base
  • Preenchimento (ativar/desativar)
  • Cor de preenchimento
  • Traçado (ativar/desativar)
  • Cor do traçado
  • Largura do traçado
  • Definição de dígitos
  • Dimensionamento
  • Kerning
  • Tsume
  • Direção da linha de base
  • Opção de linha de base
O menu suspenso Idioma de expressão lista todas as propriedades de texto disponíveis para escolha.
O menu suspenso de linguagem de expressão lista todas as propriedades de texto, incluindo as que estão atualmente no After Effects.

A propriedade Texto de origem de uma camada de texto é interpretada por expressões como uma string do JavaScript. O texto em si pode ser lido com sourceText, mas deve ser definido no objeto de estilo com o método setText se os atributos de estilo estiverem sendo modificados. Consulte alguns dos exemplos.

Expressões para camadas de texto com parágrafos

Iniciar uma nova linha de texto

Use \r em uma expressão de string para iniciar uma nova linha de texto. Por exemplo, para copiar o texto original de uma camada para a mesma camada e repeti-lo com todos os caracteres em maiúsculas em uma nova linha, use a seguinte expressão:

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

Atributos de parágrafo disponíveis 

Além dos atributos de estilo de texto, também existem atributos de parágrafo. Eles só podem ser aplicados a toda a camada de Texto. Os atributos de parágrafo estão disponíveis apenas no After Effects.

  • Direção
  • Compositor de linha a linha
  • Recuo da primeira linha
  • Justificação 
  • Tipo de entrelinha
  • Margem esquerda
  • Margem direita
  • Espaço posterior
  • Espaço anterior
  • Pontuação romana suspensa
O menu suspenso Linguagem de expressão lista todas as Propriedades de parágrafo, incluindo as que estão atualmente no After Effects Beta.
O menu suspenso de linguagem de expressão lista todas as propriedades de parágrafo inclusas no After Effects.

Menu de expressões de fonte PostScript

Ao consultar fontes em expressões, elas devem usar um "system name" especial (ou semelhante). É recomendado inserir esse nome especial na caixa de diálogo Texto > Fonte > Selecionar fonte  para evitar erros de expressão.

  • Abra o menu suspenso Linguagem de expressão e selecione Texto >Fonte. Isso abre uma caixa de diálogo com menus suspensos para selecionar a fonte a ser inserida na expressão.
Menu Fonte
Use o menu Linguagem de expressão para selecionar a fonte e inserir na expressão.

Sincronização de fontes

As fontes que são referenciadas somente no Editor de expressões não são gravadas como fontes usadas pelo projeto. Para garantir que todas as fontes mencionadas no Editor de expressões sincronizem automaticamente ou preencham a caixa de diálogo Resolver fontes, use todas essas fontes em uma camada, mesmo que a origem da camada esteja oculta.

Objeto de estilo

Todas as propriedades de estilo de uma camada de Texto existem no objeto de estilo, que é acessado na propriedade Texto fonte usando o seguinte:

// Usando o caminho completo para a propriedade Source Text
text.sourceText.style

// Usando o nome genérico para a propriedade atual
thisProperty.style

Usar o estilo por si só é o mesmo que usar qualquer um dos dois exemplos acima, mas pode ser confuso se atributos de estilo de várias camadas de Texto forem combinados.

Os atributos de estilo de outras camadas de Texto também podem ser lidos. Use o ícone de seleção para criar um link para a outra camada de Texto no início do primeiro exemplo mostrado acima.

// Acessando o objeto de estilo de uma camada de texto específica

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

Atributos de estilo de caracteres individuais em uma camada de texto

Além de usar expressões de texto para definir atributos de estilo para toda a camada de Texto, você também pode defini-los para caracteres individuais na camada. Uma vantagem desse controle por caractere é o refluxo automático do texto, como ao dimensionar letras, usar sobrescrito e escolher uma fonte diferente, exatamente como você esperaria ao usar o estilo de substring do painel Caractere.

Exemplos

Alterar a fonte para determinadas palavras

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

Definir a primeira linha de uma camada de texto como negrito e aumentá-la

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

Definir sobrescrito para caracteres

Para usar a string, adicione uma camada de texto com texto “1ª e 2ª posição” e aplique o seguinte ao Texto de origem.

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

Combinar estilo e texto de origem

texto e estilo
Combinar estilo e texto de origem

Para retornar tanto os valores do estilo como os do Texto de origem real, será necessário combinar as funções getStyleAt e setText. Veja a seguir dois exemplos de como escrever essa expressão.

// Para retornar os valores do estilo e do Source Text real no tempo (forma abreviada)

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

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

newStyle.setText(sourceTextProperty);

// Para retornar os valores do estilo e do Source Text real da camada anterior na ordem de empilhamento de camadas

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

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

newStyle.setText(sourceTextProperty);

fontes em menu suspenso
Vincular fontes ou estilos a um menu suspenso

Você pode usar Menus suspensos para controlar estilos de texto, como, por exemplo, para bloquear camadas de texto para fontes específicas. Isso é útil para diretrizes de marca, modelos, modelos de animações e muito mais:

// Para fixar uma camada de texto em fontes específicas com um Dropdown Menu Control

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

}

Camada de texto principal

camada de texto principal
Obter propriedades de texto da “Camada de texto 1”, mas substituir o tamanho da fonte e a cor de preenchimento

Vincule várias camadas de texto a um controlador de fonte principal para controlar o estilo de texto de várias camadas ao mesmo tempo. Crie duas camadas de Texto e cole essa expressão no Texto de origem de uma delas:

// Para obter todas as propriedades de texto de uma camada de texto

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

É possível obter o estilo de uma camada de texto, mas substituir propriedades de texto específicas adicionando valores com as funções set. Veja a seguir dois exemplos de Cor de preenchimento e Tamanho da fonte.

// Para obter todas as propriedades de texto de "Text Layer 1" mas substituir Fill Color e Font Size com valores codificados

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

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

// Para obter todas as propriedades de texto de "Text Layer 1" mas substituir Fill Color e Font Size com as propriedades de texto atuais da camada

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

Exemplos

Confira a seguir exemplos de como acessar e usar valores de propriedades de texto com expressões.

Fonte

Veja a seguir exemplos de acesso à Fonte, Tamanho da fonte, Negrito falso, Itálico falso, Espaçamento à direita e Espaçamento à esquerda de uma camada de texto:

// Para retornar o nome da fonte para a própria camada de texto
text.sourceText.style.font;

// Para retornar o nome da fonte que outra camada de texto está usando
var otherLayer = thisComp.layer("Other Layer Name");

otherLayer.text.sourceText.style.font;

// Para retornar o valor do tamanho da fonte para a própria camada de texto
text.sourceText.style.fontSize;

// Para retornar o valor do tamanho da fonte para outra camada de texto
var otherLayer = thisComp.layer("Other Layer Name");

otherLayer.text.sourceText.style.fontSize;

// Para retornar um valor booleano sobre se o texto de uma camada está em negrito falso ou não (verdadeiro ou falso)
text.sourceText.style.isFauxBold;

// Para retornar um valor booleano sobre se o texto de uma camada está em itálico falso ou não (verdadeiro ou falso)
text.sourceText.style.isFauxItalic;

// Para retornar o valor do rastreamento de uma camada de texto como um número
text.sourceText.style.tracking;

// Para retornar o valor da entrelinha de uma camada de texto como um número
text.sourceText.style.leading;

Preenchimento

Veja a seguir exemplos de acesso ao Preenchimento e Cor de preenchimento de uma camada de texto:

// Para retornar um valor booleano sobre se o texto de uma camada tem Fill aplicado (verdadeiro ou falso)
text.sourceText.style.applyFill;

// Para retornar o valor da cor de preenchimento de uma camada de texto
// Por padrão, isso retorna uma matriz dos valores RGB em uma escala de 0 – 1.0
text.sourceText.style.fillColor;

// Definir a cor de preenchimento de uma camada de texto com setApplyFill e setFillColor
// Os valores setFillColor são definidos como uma matriz RGB em uma escala entre 0 – 1.0
var newStyle = style.setApplyFill(true);

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

// Definir a cor de preenchimento de uma camada de texto substituindo a matriz RGB 0 – 1.0 por hexToRGB para definir os valores de cor com valores hexadecimais
var newStyle = style.setApplyFill(true);

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

Preencher valores RGB

// Para retornar o valor vermelho (R) da cor de preenchimento

text.sourceText.style.fillColor[0];

Nota

Para retornar o valor da Cor de preenchimento para R, G ou B de uma camada de texto, adicione 0, 1 ou 2 entre colchetes, respectivamente.

Traçado

Veja a seguir exemplos de acesso ao Traçado, à Cor do traçado e à Largura do traçado de uma camada de texto:

// Para retornar um valor booleano sobre se o texto de uma camada tem traçado aplicado (verdadeiro ou falso)
text.sourceText.style.applyStroke;

// Para retornar o valor da cor do traçado de uma camada de texto
// Por padrão, isso retorna uma matriz dos valores RGB em uma escala de 0 – 1.0
text.sourceText.style.strokeColor;

// Definir a cor do traçado de uma camada de texto com setApplyStroke e setStrokeColor
// Os valores setStrokeColor são definidos como uma matriz RGB em uma escala entre 0 – 1.0
var newStyle = style.setApplyStroke(true);

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

// Definir a cor do traçado de uma camada de texto substituindo a matriz RGB 0 – 1.0 por hexToRGB para definir os valores de cor com valores Hex
var newStyle = style.setApplyStroke(true);

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

// Para retornar o valor da largura do traçado de uma camada de texto como um número
text.sourceText.style.strokeWidth;

Valores de traçado RGB

// Para retornar o valor verde (G) da cor do traçado

text.sourceText.style.strokeColor[1];

Nota

Para retornar o valor da Cor do traçado para R, G ou B de uma camada de texto, adicione 0, 1 ou 2 entre colchetes, respectivamente.

função getStyleAt

Use essa função get para retornar o valor de estilo de um determinado caractere em um momento específico. index deve ser um número, o índice da letra ou do caractere cujo estilo é necessário. atTime também deve ser um número, o tempo dentro da composição para obter o estilo, caso o estilo tenha quadros-chave e mude ao longo do tempo.

text.sourceText.getStyleAt(index, atTime);

Nota

Usar text.sourceText.style é o mesmo que usar text.sourceText.getStyleAt(0,0).

// Obtém o estilo do primeiro caractere no início da linha do tempo

text.sourceText.getStyleAt(0,0);

Funções SET

Funções set adicionais que podem ser usadas individualmente ou combinadas entre si para direcionar estilos nas camadas. Cada uma dessas funções é chamada no objeto de estilo de uma propriedade Texto de origem:

// Definir a fonte usada como Arial
style.setFont("ArialMT")

// Definir o tamanho da fonte como 80
style.setFontSize(80);

// Ativar negrito falso com um booleano
style.setFauxBold(true)

// Ativar itálico falso com um booleano
style.setFauxItalics(true)

// Ativar maiúsculas com um booleano
style.setAllCaps(true)

// Ativar versaletes com um booleano
style.setSmallCaps(true)

// Definir o rastreamento como um número
style.setTracking(10);

// Definir a entrelinha como um número
style.setLeading(10);

// Ativar entrelinha automática com um booleano
style.setAutoLeading(true);

// Definir o deslocamento da linha de base como um número
style.setBaselineShift(10);

// Definir a largura do traçado como um número
style.setStrokeWidth(10);

// Definir a primeira linha de uma camada de texto como negrito e torná-la maior
text.sourceText.style.setFontSize(100, 0, 30).setFauxBold(true, 0, 30)

// Define sobrescrito para caracteres
text.sourceText.style.setBaselineOption("superscript",1,2).setBaselineOption("superscript", 9, 2)

Todas as funções set para estilos de texto podem ser encadeadas para definir vários atributos facilmente, sem ter que declarar sempre um novo estilo, como no exemplo a seguir:

Nota

Não se usa ponto e vírgula até que o último atributo seja definido. Listar cada atributo em sua própria linha ajuda a facilitar a leitura da cadeia inteira.

// Ativar preenchimento, definir cor de preenchimento, definir linha de base, definir rastreamento e ativar entrelinha automática

text.sourceText.style

.setApplyFill(true)

.setFillColor(hexToRgb("FFFFFF"))

.setBaselineShift(10)

.setTracking(25)

.setAutoLeading(true);

Usos adicionais de expressões no texto de origem

Adicionar uma camada de Texto a uma composição e adicionar uma expressão à sua propriedade Texto de origem pode ser uma ótima maneira de examinar os valores de propriedade de outras camadas. Por exemplo, a expressão a seguir em uma propriedade Texto de origem relata o nome e o valor da propriedade Opacidade para a próxima camada na ordem de empilhamento de camadas:

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

O exemplo a seguir indica o nome do item de gravação usado como origem da primeira camada de imagem na ordem de empilhamento no tempo atual que tem a opção Vídeo definida:

// Criar sourceFootageName como uma string vazia
var sourceFootageName = "";

// Percorrer todas as camadas na composição
for (var i = 1; i <= thisComp.numLayers; i++) {

// Se i corresponder ao índice desta camada, continuar para o próximo loop
if (i == index) {
continue;
}

// Definir myLayer para a iteração atual do loop
var myLayer = thisComp.layer(i);

// Se myLayer não tem vídeo ou não está ativa, continuar para o próximo loop/camada
if ( !myLayer.hasVideo || !myLayer.active ) {
continue;
}

// Se myLayer está ativa no tempo atual
if ( myLayer.active ) {
try {
// Definir sourceFootageName como o nome da origem de myLayer
sourceFootageName = myLayer.source.name;
} catch ( err ) {
// Se myLayer não tem origem,
// definir sourceFootageName como o nome de myLayer
sourceFootageName = myLayer.name;
}

// Parar o loop
break;
}
}

// Exibir o sourceFootageName
sourceFootageName;

Salvar expressões como predefinições

Selecione a propriedade Texto de origem com expressões adicionadas a ela. Em seguida, selecione Animação > Salvar predefinição de animação para reutilizar as expressões em outros projetos. As Predefinições de animação são salvas no painel Efeitos e predefinições.

Para obter mais informações, consulte Visão geral de predefinições de efeitos e animação.

Mais recursos de expressão

Agora que você compreendeu alguns dos conceitos por trás das expressões, acesse a Comunidade para ver alguns exemplos reais e compartilhar seu trabalho.

O fórum AE Enhancers fornece muitos exemplos e informações sobre expressões, além de scripts e predefinições de animação.