上次更新日期:
2026年1月21日
了解一些用于在 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("Axis: " + axis.name);
$.writeln(" Tag: " + axis.tag);
$.writeln(" Min: " + axis.minValue);
$.writeln(" Max: " + axis.maxValue);
$.writeln(" Default: " + axis.defaultValue);
}
}
通过脚本添加轴动画器
创建合成和文本图层
// 创建合成和文本图层 var comp = app.project.items.addComp("Variable Font Demo", 1920, 1080, 1, 30, 30); var textLayer = comp.layers.addText("Hello World");
将字体设置为可变字体
// 将字体设置为可变字体 var textDocument = textLayer.property("Source Text").value; textDocument.font = "ShantellSans"; // 或任何可变字体名称 textLayer.property("Source Text").setValue(textDocument);
获取文本属性和动画器组
// 获取文本属性和动画器组 var textProp = textLayer.property("Text"); var animators = textProp.property("Animators");
添加新的动画器
// 添加新的动画器 var animator = animators.addProperty("ADBE Text Animator"); var animatorProps = animator.property("ADBE Text Animator Properties");
使用 4 个字符的标记添加变量字体轴
// 使用 4 个字符的标记添加可变字体轴 // 常见标记:"wght"(粗细)、"wdth"(宽度)、"ital"(斜体)、"slnt"(倾斜) var weightAxis = animatorProps.addVariableFontAxis("wght");
设置值(无关键帧)
// 设置值(无关键帧) weightAxis.setValue(700);
创建关键帧
// 或创建关键帧 var italicAxis = animatorProps.addVariableFontAxis("ital"); italicAxis.setValueAtTime(0, 0); italicAxis.setValueAtTime(2, 1);
检查可用轴
function getAvailableAxes(textLayer) {
var sourceText = textLayer.property("Source Text");
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;
}