Изменение стилей текста и свойств текста с помощью элементов управления выражениями.
Используйте выражения для управления стилем текста в любом текстовом выражении или в шаблонах анимационного дизайна. Некоторые вещи, которые вы можете сделать с выражениями:
Связывайте несколько заголовков и обновляйте их стили одновременно (очень полезно для разработки заголовков).
Синхронизируйте шрифт, размер и стили в нескольких текстовых слоях.
Внесите глобальные изменения в свойства текста.
Задайте атрибуты стиля отдельных символов в текстовом слое.
После их установки для текстового слоя можно ссылаться на свойства этого слоя, чтобы быстро применять изменения ко всей композиции. В выражениях After Effects используются свойства для чтения (получения) значений стиля текста и методы функций для записи (установки) их внутри движка выражений. Это позволяет связывать стили текста в текстовых слоях либо настраивать элементы управления для их анимации или использования в шаблоне анимационного дизайна.
Перед началом использования выражений для редактирования свойств текста
Установите для Движка выражений значение «Javascript», выбрав Настройки проекта > Выражения > Движок выражений > Javascript.
Во всплывающем меню Язык выражений выберите Текст > Свойства > Свойства текстаили Текст > Стили.
Доступные текстовые атрибуты
Следующие атрибуты стиля текста можно прочитать и задать с помощью объекта style:
Шрифт
Размер шрифта
Псевдополужирный
Искусственный курсив
Все прописные
Малые прописные
Трекинг
Интерлиньяж
Автоинтерлиньяж
Отклонение от базовой линии
Заполнить (включить/выключить)
Цвет заливки
Обводка (включить/выключить)
Цвет обводки
Ширина обводки
Набор цифр
Масштабирование
Кернинг
Цумэ
Направление базовой линии
Параметр базовой линии
Свойство Исходный тексттекстового слоя преобразовывается выражениями в виде строки JavaScript. Сам текст можно прочитать с помощью sourceText, но он должен быть задан для объекта style с помощью метода setText, если атрибуты стиля изменяются. Просмотрите несколько примеров.
Выражения для текстовых слоев с абзацами
Начать новую строку текста
Для указания начала новой строки текста в строковом выражении можно использовать комбинацию символов \r. Например, чтобы скопировать исходный текст из одного слоя в тот же самый слой и повторить эту операцию для всех прописных символов в новой строке, используйте следующее выражение:
Кроме атрибутов стиля текста, также есть атрибуты абзацев. Их можно применять только ко всему текстовому слою. Атрибуты абзаца доступны только в After Effects.
Направление
Многострочный компоновщик
Отступ первой строки
Выключка
Тип интерлиньяжа
Левое поле
Правое поле
Пробел после
Пробел до
Зависание знаков пунктуации на латинице
Меню выражений и шрифты PostScript
При обращении к шрифтам в выражениях они должны использовать специальное «системное имя» (или аналогичное). Рекомендуется вставить это специальное имя из диалогового окна Текст > Шрифт > Выбрать шрифт, чтобы избежать ошибок выражения.
Откройте всплывающее меню Язык выражений и выберите Текст > Шрифт. Откроется диалоговое окно с раскрываемыми меню для выбора шрифта и шрифта для вставки в выражение.
Синхронизация шрифтов
Шрифты, на которые ссылаются только в Редакторе выражений, не записываются как шрифты, используемые проектом. Чтобы убедиться, что все шрифты, упомянутые в Редакторе выражений, будут автоматически синхронизироваться или заполнять диалоговое окно Разрешить шрифты, используйте все эти шрифты в слое, даже если этот источник слоя скрыт.
Объект style
Все свойства стилей для текстового слоя существуют в объекте style, доступ к которому осуществляется в свойстве Исходный текст с помощью указанных ниже действий.
// Использование всего пути к свойству Source Text
text.sourceText.style
// Использование общего имени текущего свойства
thisProperty.style
Использование стиля само по себе аналогично использованию любого из двух приведенных выше примеров, но это может сбивать с толку, если атрибуты стиля из нескольких текстовых слоев объединяются.
Атрибуты стилей других текстовых слоев также можно прочитать. Используйте лассо выбора, чтобы создать ссылку на другой текстовый слой в начале первого примера, показанного выше.
// Доступ к объекту стиля определенного текстового слоя
thisCompayer(“Other Layer Name”)extourceTexttyle;
Атрибуты стиля отдельных символов в текстовом слое
Кроме использования текстовых выражений с целью установки атрибутов стиля для всего текстового слоя, можно также задать атрибуты стиля для отдельных символов в слое. Преимуществом этого посимвольного элемента управления является автоматическое изменение размера текста, например при масштабировании букв, использовании надстрочных индексов или другого шрифта, как и при использовании стилей частей строки с панели Символ.
Чтобы вернуть значения стиля и фактического исходного текста в один момент времени, необходимо объединить функции 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”); }
Основной текстовый слой
Свяжите несколько текстовых слоев с основным контроллером шрифтов, чтобы управлять стилем текста нескольких слоев одновременно. Создайте два текстовых слоя и вставьте указанное ниже выражение в исходный текст одного из них.
// Чтобы получить все свойства текста из текстового слоя
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 для текстовых стилей можно использовать вместе, чтобы с легкостью задать несколько атрибутов без необходимости каждый раз определять новый стиль, как показано в следующем примере.
Примечание.
Точка с запятой ставится только после самого последнего атрибута. Написание каждого атрибута в отдельной строке помогает облегчить чтение всей цепочки.
Дополнительнsые варианты использования выражений в исходном тексте
Добавление текстового слоя к композиции и добавление выражения к свойству Исходный текст помогает изучить значения свойств других слоев. Например, следующее выражение в свойстве Исходный текст сообщает имя и значение свойства Непрозрачность для следующего слоя в порядке размещения слоев:
В следующем примере сообщается имя элемента видеоряда, используемого в качестве источника самого верхнего слоя изображения в порядке наложения в текущий момент времени, для которого установлен переключатель «Видео»:
// Создать 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;
Сохранение выражений в виде стилей
Выберите свойство Исходный текст с добавленными выражениями. Затем выберите Анимация > Сохранить шаблон настроек анимации, чтобы использовать выражения в других проектах. Шаблоны настроек анимации сохраняются на панели Эффекты и стили.