Использование выражений для изменения свойств текста и доступа к ним

Изменение стилей текста и свойств текста с помощью элементов управления выражениями.

Используйте выражения для управления стилем текста в любом текстовом выражении или в шаблонах анимационного дизайна. Некоторые вещи, которые вы можете сделать с выражениями:

  • Связывайте несколько заголовков и обновляйте их стили одновременно (очень полезно для разработки заголовков).
  • Синхронизируйте шрифт, размер и стили в нескольких текстовых слоях.
  • Внесите глобальные изменения в свойства текста.
  • Задайте атрибуты стиля отдельных символов в текстовом слое.

После их установки для текстового слоя можно ссылаться на свойства этого слоя, чтобы быстро применять изменения ко всей композиции. В выражениях After Effects используются свойства для чтения (получения) значений стиля текста и методы функций для записи (установки) их внутри движка выражений. Это позволяет связывать стили текста в текстовых слоях либо настраивать элементы управления для их анимации или использования в шаблоне анимационного дизайна.

Перед началом использования выражений для редактирования свойств текста

  1. Установите для Движка выражений значение «Javascript», выбрав Настройки проекта > Выражения > Движок выражений > Javascript.
  2. Добавление выражения в свойство Исходный текст текстового слоя.
  3. Во всплывающем меню Язык выражений выберите Текст > Свойства > Свойства текста или Текст > Стили.

Доступные текстовые атрибуты

Следующие атрибуты стиля текста можно прочитать и задать с помощью объекта style:

  • Шрифт
  • Размер шрифта
  • Псевдополужирный
  • Искусственный курсив
  • Все прописные
  • Малые прописные
  • Трекинг
  • Интерлиньяж
  • Автоинтерлиньяж
  • Отклонение от базовой линии
  • Заполнить (включить/выключить)
  • Цвет заливки
  • Обводка (включить/выключить)
  • Цвет обводки
  • Ширина обводки
  • Набор цифр
  • Масштабирование
  • Кернинг
  • Цумэ
  • Направление базовой линии
  • Параметр базовой линии
Во всплывающем меню «Язык выражений» перечислены все свойства текста на выбор.
Во всплывающем меню «Язык выражений» перечислены все свойства текста, включая те, которые в настоящее время доступны в After Effects.

Свойство Исходный текст текстового слоя преобразовывается выражениями в виде строки JavaScript. Сам текст можно прочитать с помощью sourceText, но он должен быть задан для объекта style с помощью метода setText, если атрибуты стиля изменяются. Просмотрите несколько примеров.

Выражения для текстовых слоев с абзацами

Начать новую строку текста

Для указания начала новой строки текста в строковом выражении можно использовать комбинацию символов \r. Например, чтобы скопировать исходный текст из одного слоя в тот же самый слой и повторить эту операцию для всех прописных символов в новой строке, используйте следующее выражение:

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

Доступные атрибуты абзаца

Кроме атрибутов стиля текста, также есть атрибуты абзацев. Их можно применять только ко всему текстовому слою. Атрибуты абзаца доступны только в After Effects.

  • Направление
  • Многострочный компоновщик
  • Отступ первой строки
  • Выключка
  • Тип интерлиньяжа
  • Левое поле
  • Правое поле
  • Пробел после
  • Пробел до
  • Зависание знаков пунктуации на латинице
Во всплывающем меню «Язык выражений» перечислены все свойства абзаца, включая те, которые в настоящее время доступны в бета-версии After Effects.
Во всплывающем меню «Язык выражений» перечислены все свойства абзаца, включенные в After Effects.

Меню выражений и шрифты PostScript

При обращении к шрифтам в выражениях они должны использовать специальное «системное имя» (или аналогичное). Рекомендуется вставить это специальное имя из диалогового окна Текст > Шрифт > Выбрать шрифт, чтобы избежать ошибок выражения.

  • Откройте всплывающее меню Язык выражений и выберите Текст > Шрифт. Откроется диалоговое окно с раскрываемыми меню для выбора шрифта и шрифта для вставки в выражение.
Меню «Шрифт»
В меню «Язык выражений» выберите гарнитуру и шрифт, которые необходимо вставить в выражение.

Синхронизация шрифтов

Шрифты, на которые ссылаются только в Редакторе выражений, не записываются как шрифты, используемые проектом. Чтобы убедиться, что все шрифты, упомянутые в Редакторе выражений, будут автоматически синхронизироваться или заполнять диалоговое окно Разрешить шрифты, используйте все эти шрифты в слое, даже если этот источник слоя скрыт.

Объект style

Все свойства стилей для текстового слоя существуют в объекте style, доступ к которому осуществляется в свойстве Исходный текст с помощью указанных ниже действий.

// Использование всего пути к свойству Source Text 
text.sourceText.style 
 
// Использование общего имени текущего свойства 
thisProperty.style

Использование стиля само по себе аналогично использованию любого из двух приведенных выше примеров, но это может сбивать с толку, если атрибуты стиля из нескольких текстовых слоев объединяются.

Атрибуты стилей других текстовых слоев также можно прочитать. Используйте лассо выбора, чтобы создать ссылку на другой текстовый слой в начале первого примера, показанного выше.

// Доступ к объекту стиля определенного текстового слоя 
 
thisCompayer(“Other Layer Name”)extourceTexttyle;

Атрибуты стиля отдельных символов в текстовом слое

Кроме использования текстовых выражений с целью установки атрибутов стиля для всего текстового слоя, можно также задать атрибуты стиля для отдельных символов в слое. Преимуществом этого посимвольного элемента управления является автоматическое изменение размера текста, например при масштабировании букв, использовании надстрочных индексов или другого шрифта, как и при использовании стилей частей строки с панели Символ.

Примеры

Изменение шрифта для определенных слов

textourceTexttyle
etFont(“Montserrat-Light”) 
etFont(“Gigantic”, 0, 6)etFont(“Gigantic”, 10, 6)etFont(“Gigantic”, 20)
 

Установить для первой строки текстового слоя полужирный и более крупный шрифт

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

Задать надстрочный индекс для символов

Чтобы использовать строку, добавьте текстовый слой с текстом «Первое и второе место» и примените следующее к Исходному тексту.

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

Объединение стиля и исходного текста

текст и стиль
Объединение стиля и исходного текста

Чтобы вернуть значения стиля и фактического исходного текста в один момент времени, необходимо объединить функции getStyleAt и setText. Ниже приведены два примера того, как записать это выражение.

// Чтобы вернуть значения как стиля, так и фактического исходного текста во времени (сокращенная рука) var sourceTextProperty = thisComp.layer(“MAIN TEXT”).text.sourceText; var newStyle = sourceTextProperty.getStyleAt(0,0); newStyle.setText(sourceTextProperty);
// Для возврата значений как стиля, так и фактического исходного текста предыдущего слоя в порядке наложения слоев var sourceTextProperty = thisComp.layer(index - 1).text.sourceText; var newStyle = sourceTextProperty.getStyleAt(0,0); newStyle.setText(sourceTextProperty);
шрифты раскрывающегося списка
Связывание шрифтов или стилей с раскрывающимся меню

Раскрывающиеся меню можно использовать для управления стилями текста, например для блокировки текстовых слоев определенными шрифтами. Это полезно для рекомендаций по брендам, шаблонов, включая шаблоны анимационного дизайна, и многого другого.

// Чтобы заблокировать текстовый слой для определенных шрифтов с помощью 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; по умолчанию : text.sourceText.style.setFont(“Tahoma”); }

Основной текстовый слой

основной текстовый слой
Получение свойств текста из “Text Layer 1”, но переопределение размера шрифта и цвета заливки

Свяжите несколько текстовых слоев с основным контроллером шрифтов, чтобы управлять стилем текста нескольких слоев одновременно. Создайте два текстовых слоя и вставьте указанное ниже выражение в исходный текст одного из них.

// Чтобы получить все свойства текста из текстового слоя 
 
thisCompayer(“Text Layer 1”)extourceTexttyle;

Можно получить стиль из текстового слоя, но переопределить определенные свойства текста, добавив значения с помощью функций set. Ниже приведены два примера использования цвета заливки и размера шрифта.

// Получить все свойства текста из “Text Layer 1”, но переопределить цвет заливки и размер шрифта с жестко закодированными значениями var newStyle = thisComp.layer(“Text Layer 1”).text.sourceText.style; newStyle.setFillColor(hexToRgb(“FF0000”)).setFontSize(100);
// Чтобы получить все свойства текста из “Text Layer 1”, но переопределить цвет заливки и размер шрифта с текущими текстовыми свойствами слоя 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);

Примеры

Ниже приведены примеры получения доступа к значениям свойств текста в выражениях и их использования.

Шрифт

Ниже приведены примеры доступа к таким параметрам текстового слоя, как Шрифт, Размер шрифта, Псевдополужирный, Псевдокурсивный, Трекинг и Интерлиньяж.

// Чтобы вернуть имя шрифта для самого текстового слоя
textourceTexttyleont;
 // Чтобы вернуть имя шрифта, используемого другим текстовым слоем{{n} ar otherLayer = thisCompayer(“Имя другого слоя”

otherLayerextourceTexttyleont;

// Чтобы вернуть значение размера шрифта для самого текстового слоя
textourceTexttyleontSize;

// чтобы вернуть значение размера шрифта для другого текстового слоя
 var otherLayer = thisCompayer(“Имя другого слоя”

otherLayerextourceTexttyleontSize;

// Чтобы вернуть логическое значение значение того, является ли текст слоя Faux Bold или нет (True или False)
textourceTexttylesFauxBold;

// Чтобы вернуть логическое значение того, является ли текст слоя text Faux Italic или нет (True или False)
textourceTexttylesFauxItalic;

// Чтобы вернуть значение отслеживания текстового слоя в виде числа{{ n}extourceTexttyleracking;

// Чтобы вернуть значение интерлиньяжа текстового слоя в виде nu mber
textourceTexttyleeading;

Заливка

Ниже приведены примеры доступа к таким параметрам текстового слоя, как Заливка и Цвет заливки.

// Чтобы вернуть логическое значение того, применена ли к тексту слоя заливка (True или False) 
textourceTexttylepplyFill; 
 
// Чтобы вернуть значение цвета заливки текстового слоя
// По умолчанию возвращается массив значений RGB по шкале от 0 до 1,0 
textourceTexttyleillColor; 
 
// Установите цвет заливки текстового слоя с помощью setApplyFill и setFillColor 
// Значения setFillColor определяются как массив RGB по шкале от 0 до 1,0 
var newStyle = styleetApplyFill(true 
 
newStyleetFillColor([1.0, 1.0, 1.0] 
 
// Установите цвет заливки текстового слоя, заменив массив RGB от 0 до 1,0 на hexToRGB, чтобы определить значения цвета с помощью шестнадцатеричных значений 
var newStyle = styleetApplyFill(true 
 
newStyleetFillColor(hexToRgb(“FFFFFF”)

Заполнение значений RGB

// Чтобы вернуть красное (R) значение цвета заливки 
 
text.sourceText.style.fillColor[0];
Примечание

Для возврата значений цвета заливки для R, G или B текстового слоя, добавьте в скобки 0, 1 или 2 соответственно.

Обводка

Ниже приведены примеры доступа к таким параметрам текстового слоя, как Обводка, Цвет обводки и Ширина обводки.

// Чтобы вернуть логическое значение того, применена ли к тексту слоя обводка (True или False) 
textourceTexttylepplyStroke; 
 
// Чтобы вернуть значение цвета обводки текстового слоя 
// По умолчанию возвращается массив значений RGB по шкале от 0 до 1,0 
textourceTexttyletrokeColor; 
 
// Задайте цвет обводки текстового слоя с помощью setApplyStroke и setStrokeColor 
// Значения setStrokeColor определяются как массив RGB по шкале от 0 до 1,0 
var newStyle = styleetApplyStroke(true 
 
newStyleetStrokeColor([1.0, 0.0, 0.0] 
 
// Задайте цвет обводки текстового слоя, заменив массив RGB от 0 до 1,0 на hexToRGB для определения значений цвета с помощью шестнадцатеричных значений 
var newStyle = styleetApplyStroke(true 
 
newStyleetStrokeColor(hexToRgb(“FF0000”) 
 
// Чтобы вернуть значение ширины обводки текстового слоя в виде числа 
textourceTexttyletrokeWidth;

Значения RGB обводки

// Чтобы вернуть зеленое (G) значение цвета обводки 
 
text.sourceText.style.strokeColor[1];
Примечание

Для возврата значений цвета обводки для R, G или B текстового слоя, добавьте в скобки 0, 1 или 2 соответственно.

Функция getStyleAt

Используйте функцию get для возврата значений стиля определенного символа в необходимое время. В качестве index нужно указывать число, являющееся индексом буквы или символа, значение стиля которого необходимо получить. atTime также должно быть числом, указывающим время в композиции, из которого можно получить стиль, если стиль является ключевым кадром и меняется с течением времени.

text.sourceText.getStyleAt(index, atTime);
Примечание

Использование text.sourceText.style аналогично использованию text.sourceText.getStyleAt(0,0).

// Получает стиль первого символа в начале временной шкалы

text.sourceText.getStyleAt(0,0);

Функции «Set»

Дополнительные функции set, которые могут использоваться по отдельности или в сочетании друг с другом для управления стилями в слоях. Каждая из приведенных функций вызывается для объекта style свойства исходного текста.

// Установка Arial в качестве используемого шрифта 
styleetFont(“ArialMT”) 
 
// Изменение размера шрифта на 80 
styleetFontSize(80 
 
// Включение псевдополужирности с помощью логического значения 
styleetFauxBold(true) 
 
// Включение псевдокурсива с помощью логического значения 
styleetFauxItalics(true) 
 
// Включение всех прописных с помощью логического значения 
styleetAllCaps(true) 
 
// Включение малых прописных с помощью логического значения 
styleetSmallCaps(true) 
 
// Установка числового значения отслеживания 
styleetTracking(10 
 
// Установка числового значения интерлиньяжа 
styleetLeading(10 
 
// Включение автоинтерлиньяжа с помощью логического значения 
styleetAutoLeading(true
 
// Установка числового значения смещения базовой линии 
styleetBaselineShift(10 
 
// Установка числового значения ширины обводки 
styleetStrokeWidth(10

// Установка для первой строки текстового слоя полужирного и более крупного шрифта
textourceTexttyleetFontSize(100, 0, 30)etFauxBold(true, 0, 30)

// Установка надстрочного индекса для символов 
textourceTexttyleetBaselineOption(“superscript”,1,2)etBaselineOption(“superscript”, 9, 2) 

Все функции set для текстовых стилей можно использовать вместе, чтобы с легкостью задать несколько атрибутов без необходимости каждый раз определять новый стиль, как показано в следующем примере.

Примечание

Точка с запятой ставится только после самого последнего атрибута. Написание каждого атрибута в отдельной строке помогает облегчить чтение всей цепочки.

// Включить заливку, задать цвет заливки, задать базовую линию, задать отслеживание и включить автоматический интерлиньяж

textourceTexttyle

    etApplyFill(true {n}}
    etFillColor(hexToRgb(“FFFFFF”))

    etBaselineShift(10)

    etTracking(25 {n}}
    etAutoLeading(true

Дополнительнsые варианты использования выражений в исходном тексте

Добавление текстового слоя к композиции и добавление выражения к свойству Исходный текст помогает изучить значения свойств других слоев. Например, следующее выражение в свойстве Исходный текст сообщает имя и значение свойства Непрозрачность для следующего слоя в порядке размещения слоев:

var nextLayer =  thisCompayer(index + 1
nextLayerame + “\rOpacity = ” + nextLayer.opacityalue; 

В следующем примере сообщается имя элемента видеоряда, используемого в качестве источника самого верхнего слоя изображения в порядке наложения в текущий момент времени, для которого установлен переключатель «Видео»:

// Создать sourceFootageName как пустую строку
var sourceFootageName = “”; 
// Перебираем все слои в композиции
for (var i = 1; i <= thisCompumLayers; i++) {
  
    // Если i соответствует индексу этого слоя, перейти к следующему циклу
    if (i == index) {
        continue;
    }
  
    // Установить myLayer для текущая итерация цикла
    var myLayer = thisCompayer(i
  
    // Если в myLayer нет видео или он не активен, переходим к следующему циклу/слою 
    if ( !myLayerasVideo || !myLayerctive ) {
      continue;
    }
  
    // Если myLayer активен в текущее время
    if ( myLayerctive ) {
        try {
            // Задайте для sourceFootageName имя источника myLayer
            sourceFootageName = myLayerourceame;{{n }}        } catch ( err ) {
            // Если у myLayer нет источника,
            // установите для sourceFootageName имя myLayer
            sourceFootageName = myLayerame;
 
  
        // Остановить цикл
        break ;
    }
}
  
// Отобразить sourceFootageName
sourceFootageName;

Сохранение выражений в виде стилей

Выберите свойство Исходный текст с добавленными выражениями. Затем выберите Анимация > Сохранить шаблон настроек анимации, чтобы использовать выражения в других проектах. Шаблоны настроек анимации сохраняются на панели Эффекты и стили.

Дополнительные сведения см. в разделе Обзор эффектов и стилей анимации.

Дополнительные ресурсы о выражениях

Итак, вы изучили основные принципы выражений. На сайте сообщества вы найдете наглядные примеры и сможете показать свои работы.

На форуме AE Enhancers также можно найти множество примеров и сведения о выражениях, сценариях и шаблонах настроек анимации.

Adobe, Inc.

Получайте помощь быстрее и проще

Новый пользователь?