最終更新日 :
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("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;
}