变量字体轴的脚本支持

了解一些用于在 After Effects 中访问和控制变量字体轴的 ExtendScript。

在 After Effects 中,您可以使用 ExtendScript 来访问和控制变量字体轴。 这意味着您可以自动更改文本图层中的粗细宽度倾斜等属性,从而更轻松地创建动态动画,而无需手动调整每个设置。

字体对象 API

访问字体轴

// 从文本图层获取字体对象
var textLayer = comp.layer("My Text");
var sourceText = textLayer.property("Source Text");
var textDocument = sourceText.value;
var fontObject = textDocument.fontObject;

// 检查字体是否具有可变轴
if (fontObject && fontObject.designAxesData) {
    var axes = fontObject.designAxesData;

    for (var i = 0; i < axes.length; i++) {
        var axis = axes[i];
        $.writeln(&quot;Axis: &quot; + axis.name);
        $.writeln(&quot;  Tag: &quot; + axis.tag);
        $.writeln(&quot;  Min: &quot; + axis.minValue);
        $.writeln(&quot;  Max: &quot; + axis.maxValue);
        $.writeln(&quot;  Default: &quot; + axis.defaultValue);
    }
}

通过脚本添加轴动画器

创建合成和文本图层

// 创建合成和文本图层
var comp = app.project.items.addComp(&quot;Variable Font Demo&quot;, 1920, 1080, 1, 30, 30);
var textLayer = comp.layers.addText(&quot;Hello World&quot;);

将字体设置为可变字体

// 将字体设置为可变字体
var textDocument = textLayer.property(&quot;Source Text&quot;).value;
textDocument.font = &quot;ShantellSans&quot;;  // 或任何可变字体名称
textLayer.property(&quot;Source Text&quot;).setValue(textDocument);

获取文本属性和动画器组

// 获取文本属性和动画器组
var textProp = textLayer.property(&quot;Text&quot;);
var animators = textProp.property(&quot;Animators&quot;);

添加新的动画器

// 添加新的动画器
var animator = animators.addProperty(&quot;ADBE Text Animator&quot;);
var animatorProps = animator.property(&quot;ADBE Text Animator Properties&quot;);

使用 4 个字符的标记添加变量字体轴

// 使用 4 个字符的标记添加可变字体轴
// 常见标记:&quot;wght&quot;(粗细)、&quot;wdth&quot;(宽度)、&quot;ital&quot;(斜体)、&quot;slnt&quot;(倾斜)
var weightAxis = animatorProps.addVariableFontAxis(&quot;wght&quot;);

设置值(无关键帧)

// 设置值(无关键帧)
weightAxis.setValue(700);

创建关键帧

// 或创建关键帧
var italicAxis = animatorProps.addVariableFontAxis(&quot;ital&quot;);
italicAxis.setValueAtTime(0, 0);
italicAxis.setValueAtTime(2, 1);

检查可用轴

function getAvailableAxes(textLayer) {
    var sourceText = textLayer.property(&quot;Source Text&quot;);
    var textDoc = sourceText.value;
    var fontObj = textDoc.fontObject;

    if (!fontObj || !fontObj.designAxesData) {
        return [];
    }

    var axisInfo = [];
    for (var i = 0; i < fontObj.designAxesData.length; i++) {
        var axis = fontObj.designAxesData[i];
        axisInfo.push({
            name: axis.name,
            tag: axis.tag,
            min: axis.minValue,
            max: axis.maxValue,
            default: axis.defaultValue
        });
    }

    return axisInfo;
}

Adobe, Inc.

更快、更轻松地获得帮助

新用户?