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
Defina o Mecanismo de expressões para Javascript, selecionando Configurações do projeto > Expressões > Mecanismo de expressões > Javascript.
No menu suspenso Linguagem de expressão, selecione Texto > Propriedades > Propriedades de textoou 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
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:
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
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.
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:
// Using the whole path to the Source Text property
text.sourceText.style
// Using the generic name for the current property
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.
// Accessing the style object of a specific text layer
thisCompayer(“Other Layer Name”)extourceTexttyle;
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.
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 o texto de origem real (curto) var sourceTextProperty = thisComp.“MAIN TEXT”).text.sourceText; var newStyle = sourceTextProperty.getStyleAt(0,0); newStyle.setText(sourceTextProperty);
// Para retornar os valores do estilo e o texto de origem 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
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 bloquear uma camada de texto para fontes específicas com um controle de menu suspenso 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
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:
// To get all text properties from a text layer
thisCompayer(“Text Layer 1”)extourceTexttyle;
É 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 “camada de texto 1”, mas substituir a cor de preenchimento e o tamanho da fonte por 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 da “camada de texto 1”, mas substituir a cor de preenchimento e o tamanho da fonte pelas 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 da própria camada de texto text.sourceText.style.font; // Para retornar o nome da fonte que outra camada de texto usa var otherLayer = thisComp.layer(“Other Layer Name”); otherLayer.text.sourceText.style.font; // Para retornar o valor do tamanho da fonte da própria camada de texto text.sourceText.style.fontSize; // Para retornar o valor do tamanho da fonte de outra camada de texto var otherLayer = thisComp.layer(“Other Layer Name”); otherLayer.text.sourceText.style.fontSize; // Para retornar um valor booleano para que o texto de uma camada seja Negrito falso ou não (verdadeiro ou falso) text.sourceText.style.isFauxBold; // Para retornar um valor booleano para que o texto de uma camada seja falso ou não (verdadeiro ou falso) text.sourceText.style.isFauxItalic; // Para retornar o valor do rastreamento de uma camada de texto como número text.sourceText.style.tracking; // Para retornar o valor da entrelinha de uma camada de texto como texto numérico text.sourceText.style.leading;
Preenchimento
Veja a seguir exemplos de acesso ao Preenchimento e Cor de preenchimento de uma camada de texto:
// To return a Boolean value of whether a layer's text has Fill applied to it (True or False)
textourceTexttylepplyFill;
// To return the value of the Fill Color of a text layer
// By default, this returns an array of the RGB values on a scale from 0 – 1.0
textourceTexttyleillColor;
// Set the Fill Color of a text layer with setApplyFill and setFillColor
// setFillColor values are defined as an RGB array on a scale between 0 – 1.0
var newStyle = styleetApplyFill(true
newStyleetFillColor([1.0, 1.0, 1.0]
// Set the Fill Color of a text layer substituting the 0 – 1.0 RGB array with hexToRGB to define the color values with Hex values
var newStyle = styleetApplyFill(true
newStyleetFillColor(hexToRgb(“FFFFFF”)
Preencher valores RGB
// To return the red (R) value of the Fill Color
text.sourceText.style.fillColor[0];
Observação:
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:
// To return a Boolean value of whether a layer's text has Stroke applied to it (True or False)
textourceTexttylepplyStroke;
// To return the value of the Stroke Color of a text layer
// By default, this returns an array of the RGB values on a scale from 0 – 1.0
textourceTexttyletrokeColor;
// Set the Stroke Color of a text layer with setApplyStroke and setStrokeColor
// setStrokeColor values are defined as an RGB array on a scale between 0 – 1.0
var newStyle = styleetApplyStroke(true
newStyleetStrokeColor([1.0, 0.0, 0.0]
// Set the Stroke Color of a text layer substituting the 0 – 1.0 RGB array with hexToRGB to define the color values with Hex values
var newStyle = styleetApplyStroke(true
newStyleetStrokeColor(hexToRgb(“FF0000”)
// To return the value of a text layer's Stroke Width as a number
textourceTexttyletrokeWidth;
Valores de traçado RGB
// To return the green (G) value of the Stroke Color
text.sourceText.style.strokeColor[1];
Observação:
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);
Observação:
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
styleetFont(“ArialMT”)
// Definir o tamanho da fonte para 80
styleetFontSize(80
// Habilitar Faux Bold com um booleano
styleetFauxBold(true)
// Habilitar Faux Italics com um booleano
styleetFauxItalics(true)
// Habilitar todas as letras em maiúscula com um booleano
styleetAllCaps(true)
// Habilitar todas as letras em minúscula com um booleano
styleetSmallCaps(true)
// Definir o rastreamento como um número
styleetTracking(10
// Definir a entrelinha como um número
styleetLeading(10
// Definir a entrelinha automática com um booleano
styleetAutoLeading(true
// Definir o deslocamento da linha de base como um número
styleetBaselineShift(10
// Definir a largura do traçado como um número
styleetStrokeWidth(10
// Definir a primeira linha de uma camada de texto para negrito e aumentá-la
textourceTexttyleetFontSize(100, 0, 30)etFauxBold(true, 0, 30)
// Definir sobrescrito para caracteres
textourceTexttyleetBaselineOption(“superscript”,1,2)etBaselineOption(“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:
Observação:
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, ajustar o 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:
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 sequência de caracteres em branco var sourceFootageName = “”; // Executar um loop por todas as camadas na composição for (var i = 1; i <= thisComp.numLayers; i++) { // Se i corresponder ao índice dessa camada, continue 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 tiver vídeo ou não estiver ativo, continue para o próximo loop/camada if ( !myLayer.hasVideo || !myLayer.active ) { continue; } // Se myLayer estiver ativo no tempo atual if ( myLayer.active ) { try { // Definir sourceFootageName para nome de origem de myLayer sourceFootageName = myLayer.source.name; } catch ( err ) { // Se myLayer não tiver origem, // definir sourceFootageName para o nome de origem de myLayer sourceFootageName = myLayer.name; } // Parar de executar loop break; } } // Exibir 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.
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.