Изменение стилей текста и свойств текста с помощью элементов управления выражениями.
Используйте выражения для управления стилем текста в любом текстовом выражении или в шаблонах анимационного дизайна. Некоторые вещи, которые вы можете сделать с выражениями:
Связывайте несколько заголовков и обновляйте их стили одновременно (очень полезно для разработки заголовков).
Синхронизируйте шрифт, размер и стили в нескольких текстовых слоях.
Внесите глобальные изменения в свойства текста.
После их установки для текстового слоя можно ссылаться на свойства этого слоя, чтобы быстро применять изменения ко всей композиции.
After Effects использует функции "get" и "set" для чтения и записи значений свойств текста в механизм выражения. Выражения используются для управления и установки стилей шрифтов, таких как свойства текста в текстовых слоях.
Чтобы получить доступ к этим функциям для свойств текста:
Добавление выражения в свойство Source Text текстового слоя. Дополнительные сведения см. в разделе Основы выражения.
Во всплывающем меню Язык выражений выберите Свойства > текст > Свойства .
Сохранение выражений в виде шаблонов настроек
Выберите свойство исходного текста, в который добавлены выражения. Затем выберите Анимация > Сохранить шаблон настроек анимации, чтобы можно было использовать выражения в других проектах. Шаблоны настроек анимации сохраняются на панели Эффекты и шаблоны.
При обращении к шрифтам в выражениях они должны использовать специальное «системное имя» (или аналогичное). Рекомендуется вставить это специальное имя из диалогового окна «Текст > шрифт» > «Выбор шрифта», чтобы избежать ошибок выражения.
Откройте всплывающее меню Язык выражений и выберите Текст > Шрифт. Откроется диалоговое окно с раскрываемыми меню для выбора шрифта и шрифта для вставки в выражение.
Синхронизация шрифтов
Шрифты, на которые ссылаются только в Редакторе выражений, не записываются как шрифты, используемые проектом. Чтобы убедиться, что все шрифты, упомянутые в Редакторе выражений, будут автоматически синхронизироваться или заполнять диалоговое окно «Разрешение шрифтов», используйте все эти шрифты в слое, даже если этот источник слоя скрыт.
Объект стиля
Все свойства стиля для текстового слоя существуют в объекте стиля, доступ к которому осуществляется в свойстве Source Text с помощью следующих действий:
// Использование всего пути к свойству Source Text text.sourceText.style // Использование общего имени текущего свойства thisProperty.style
Использование стиля само по себе аналогично использованию любого из двух приведенных выше примеров, но это может сбивать с толку, если атрибуты стиля из нескольких текстовых слоев объединяются.
Атрибуты стиля других текстовых слоев также можно прочитать. Используйте хлыст выбора, чтобы создать ссылку на другой текстовый слой в начале первого примера, показанного выше.
// Доступ к объекту стиля определенного текстового слоя thisComp.layer(“Другое имя слоя”).text.sourceText.style;
Доступные текстовые атрибуты
Следующие атрибуты стиля текста можно прочитать и задать с помощью объекта style:
Шрифт
Размер шрифта
Псевдополужирный
Искусственный курсив
Все прописные
Малые прописные
Трекинг
Интерлиньяж
Автоинтерлиньяж
Отклонение от базовой линии
Заполнить (включить/выключить)
Цвет заливки
Обводка (включить/выключить)
Цвет обводки
Ширина обводки
Свойство «Исходный текст» текстового слоя преобразуется выражениями в виде строки JavaScript. Сам текст можно прочитать с помощью sourceText, но он должен быть задан для объекта style с помощью метода setText, если атрибуты style изменяются. Смотрите примеры ниже.
Объединение стиля и исходного текста
Объединение стиля и исходного текста
Чтобы вернуть значения стиля и фактического исходного текста во времени, необходимо объединить функции 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);
Выпадающий список шрифтов
Связывание шрифтов или стилей с раскрывающимся меню
Раскрывающиеся меню можно использовать для управления стилями текста, например для блокировки текстовых слоев определенными шрифтами. Это полезно для рекомендаций по брендам, шаблонов, MoGRTS и многого другого:
// Чтобы заблокировать текстовый слой для определенных шрифтов с помощью 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", но переопределение размера шрифта и цвета заливки
Свяжите несколько текстовых слоев с основным контроллером шрифтов, чтобы управлять стилем текста нескольких слоев одновременно. Создайте два текстовых слоя и вставьте это выражение в исходный текст одного из них:
// Чтобы получить все свойства текста из текстового слоя, thisComp.layer(“Текстовый слой 1”).text.sourceText.style;
Можно получить стиль из текстового слоя, но переопределить определенные свойства текста, добавив значения с помощью функций 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);
Примеры
Ниже приведены примеры получения и использования значений свойств текста в выражениях.
Шрифт
Ниже приведены примеры доступа к шрифту текстового слоя, размеру шрифта, искусственному полужирному шрифту, искусственному курсиву, отслеживанию и ведущему:
// Возврат имени шрифта для текстового слоя text.sourceText.style.font; // Возврат имени шрифта, используемого другим текстовым слоем var otherLayer = thisComp.layer(“Other Layer Name”); otherLayer.text.sourceText.style.font; // Возврат значения Font Size для текстового слоя text.sourceText.style.fontSize; // Возврат значения Font Size другого текстового слоя var otherLayer = thisComp.layer(“Other Layer Name”); otherLayer.text.sourceText.style.fontSize; // Возврат логического значения, указывающего на то, выделен ли текстовый слой псевдополужирным (True или False) text.sourceText.style.isFauxBold; // Возврат логического значения, указывающего на то, является ли текстовый слой псевдокурсивным (True или False) text.sourceText.style.isFauxItalic; // Возврат числового значения параметра Отслеживание текстового слоя text.sourceText.style.tracking; // Возврат числового значения параметра Интерлиньяж текстового слоя text.sourceText.style.leading;
Заливка
Ниже приведены примеры получения параметров «Заливка» и «Цвет заливки» текстового слоя.
// Возврат логического значения, указывающего на то, применен ли к текстовому слою эффект Заливка (True или False) text.sourceText.style.applyFill; // Возврат значения Цвета заливки текстового слоя // По умолчанию возвращается массив значений RGB от 0 до 1.0 text.sourceText.style.fillColor; // Установление значения Цвета заливки с помощью функций setApplyFill и setFillColor // Значения setFillColor определяются массивом значений RGB от 0 до 1,0 var newStyle = style.setApplyFill(true); newStyle.setFillColor([1.0, 1.0, 1.0]); // Установление Цвета заливки текстового слоя с заменой массива значений RGB от 0 до 1,0 на hexToRGB для определения значения цвета с помощью значений Hex var newStyle = style.setApplyFill(true); newStyle.setFillColor(hexToRgb(“FFFFFF”));
Примечание.
Для возврата значений цвета заливки для R, G или B текстового слоя, добавьте в скобки 0, 1 или 2 соответственно.
// Возврат значения красного (R) цвета заливки text.sourceText.style.fillColor[0];
Обводка
Ниже приведены примеры получения значений обводки, цвета обводки и ширины обводки текстового слоя.
// Возврат логического значения, указывающего на то, применен ли к слою эффект Обводка (True или False) text.sourceText.style.applyStroke; // Возврат значения Цвета обводки текстового слоя // По умолчанию возвращается массив значений RGB от 0 до 1,0 text.sourceText.style.strokeColor; // Установка значения Цвета обводки текстового слоя с помощью функций setApplyStroke и setStrokeColor // Значения setStrokeColor задаются в виде массива RGB значений от 0 до 1,0 var newStyle = style.setApplyStroke(true); newStyle.setStrokeColor([1.0, 0.0, 0.0]); // Установка значения Цвета заливки текстового слоя с заменой массива значений RGB от 0 до 1,0 на значения Hex с помощью функции hexToRGB var newStyle = style.setApplyStroke(true); newStyle.setStrokeColor(hexToRgb(“FF0000”)); // Возврат числового значения Ширины обводки текстового слоя в виде text.sourceText.style.strokeWidth;
Примечание.
Для возврата значений цвета обводки для R, G или B текстового слоя, добавьте в скобки 0, 1 или 2 соответственно.
// Возврат значения зеленого (G) цвета обводки text.sourceText.style.strokeColor[1];
Функции «Get»
Используйте функцию «get» для возврата значений стиля определенного символа в необходимое время. В качестве «index» нужно указывать число, являющееся индексом буквы или символа, значение стиля которого необходимо получить. «atTime» также должно быть числом, указывающим время в композиции, из которого можно получить стиль в случае, если стиль является ключевым кадром и меняется с течением времени.
text.sourceText.getStyleAt(index, atTime);
Примечание.
Использование text.sourceText.style аналогично использованию text.sourceText.getStyleAt(0,0).
// Получение стиля первого символа в начале временной шкалы text.sourceText.getStyleAt(0,0);
Функции «Set»
Дополнительные функции «set», которые могут использоваться по отдельности или в сочетании друг с другом для управления стилями в слоях. Каждая из этих функций вызывается для объекта стиля свойства исходного текста:
// Установка Arial в качестве используемого шрифта style.setFont(“ArialMT”) // Изменение размера шрифта на 80 style.setFontSize(80); // Включение псевдополужирности с помощью логического значения style.setFauxBold(true) // Включение псевдокурсива с помощью логического значения style.setFauxItalics(true) // Включение всех прописных с помощью логического значения style.setAllCaps(true) // Включение малых прописных с помощью логического значения style.setSmallCaps(true) // Установка числового значения отслеживания style.setTracking(10); // Установка числового значения интерлиньяжа style.setLeading(10); // Включение автоинтерлиньяжа с помощью логического значения style.setAutoLeading(true); // Установка числового значения смещения базовой линии style.setBaselineShift(10); // Установка числового значения ширины обводки style.setStrokeWidth(10);
Все функции «Set» для текстовых стилей могут использоваться вместе, позволяя с легкостью задать несколько параметров без необходимости каждый раз определять новый стиль, как показано в следующем примере:
Примечание.
Точка с запятой ставится только после самого последнего атрибута. Написание каждого атрибута в отдельной строке помогает облегчить чтение всей цепочки.
// Включение заливки, установка Цвета заливки, установка Базовой линии, установка Отслеживания и включение Автоинтерлиньяжа text.sourceText.style .setApplyFill(true) .setFillColor(hexToRgb(“FFFFFF”)) .setBaselineShift(10) .setTracking(25) .setAutoLeading(true);
Совет по форматированию текстовых выражений
Для указания начала новой строки текста в строковом выражении можно использовать комбинацию символов «\r». Например, чтобы скопировать исходный текст из одного слоя в тот же самый слой и повторить эту операцию для всех прописных символов в новой строке, используйте следующее выражение:
Дополнительнsые варианты использования выражений в исходном тексте
Добавление текстового слоя к композиции и добавление выражения к свойству «Исходный текст» помогает изучить значения свойств других слоев. Например, следующее выражение в свойстве «Исходный текст» сообщает имя и значение свойства «Непрозрачность» следующему слою в порядке размещения слоев:
В следующем примере сообщается имя элемента видеоряда, используемое в качестве источника самого верхнего слоя изображения в порядке размещения слоев в текущий момент времени с установленным переключателем «Видео».
// Создание sourceFootageName в виде пустой строки var sourceFootageName = “”; // Зацикливание всех слоев композиции for (var i = 1; i <= thisComp.numLayers; i++) { // Если i совпадает с индексом слоя, цикл продолжается if (i == index) { continue; } // Установка myLayer для текущей итерации цикла var myLayer = thisComp.layer(i); // Если myLayer неактивен, или для него отсутствует видео, продолжить со следующим циклом/слоем if ( !myLayer.hasVideo || !myLayer.active ) { continue; } // Если myLayer активен в данный момент if ( myLayer.active ) { try { // Set sourceFootageName to myLayer's source name sourceFootageName = myLayer.source.name; } catch ( err ) { // Если для myLayer отсутствует источник, // установка имени myLayer в качестве значения sourceFootageName sourceFootageName = myLayer.name; } // Остановка цикла break; } } // Показать sourceFootageName sourceFootageName;
Дополнительные ресурсы о выражениях
Итак, вы изучили основные принципы выражений. На сайте сообщества вы найдете наглядные примеры и сможете показать свои работы.