バリアブルフォント軸のスクリプトサポート

最終更新日 : 2026年1月21日

After Effects でバリアブルフォント軸にアクセスして制御する ExtendScript の一部について説明します。

After Effects では、ExtendScript を使用してバリアブルフォント軸にアクセスして制御できます。 つまり、テキストレイヤー全体で線幅傾斜などのプロパティの変更を自動化できるので、各設定を手動で調整することなく、動的なアニメーションを簡単に作成できます。

Font Object 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(&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;
}