Skip to main content
Hisashi Mega
Participating Frequently
February 10, 2023
質問

フォントをランダムに変更するスクリプト

  • February 10, 2023
  • 返信数 1.
  • 1731 ビュー

選択しているテキストレイヤーのフォントを、ランダムに変更していくスクリプトを書ける方いたら教えていただきたいです

var comp = app.project.activeItem;
var selectedLayers = comp.selectedLayers;
var fontList = app.fonts.list();

for (var i = 0; i < selectedLayers.length; i++) {
var layer = selectedLayers[i];

if (layer.property("Source Text")) {
var randomIndex = Math.floor(Math.random() * fontList.length);
var randomFont = fontList[randomIndex];

layer.property("Source Text").property("Font").setValue(randomFont);
}
}

このスクリプトだとエラーが出てしまってうまくいきません、app.fonts.listってとこらへんでエラーでる感じなんですが、よろしくお願いします

このトピックへの返信は締め切られました。

返信数 1

Community Expert
February 10, 2023

方法はわからないのですが、fonts.list() は、何か参考にされたのでしょうか。


テキストレイヤーの作成については、下記の記事が参考にならないでしょうか。
After Effects スクリプトリファレンス - TextDocument object 

Community Expert
February 10, 2023

<追記>
先のリンクを参考にして、フォントを変更するスクリプトを作成してみました。


1行目に候補となるフォント名を入力して、4行目の数値でフォントを選択します。
数値は、0から始まり、フォント数が3個なら0〜2の値を入力します。
この数値をランダムにするコードを追加すれば、フォントをランダムに変えることができます。

 

var f = new Array ("ArialRoundedMTBold" , "BrushScriptMT" , "Noteworthy-Bold");     //フォント名
var textProp = app.project.item(1).layer(1).property("Source Text"); 
var textDocument = textProp.value;
textDocument.font = f[1];   // 0〜2の数値を入力
textProp.setValue(textDocument);
Hisashi Mega
Hisashi Mega作成者
Participating Frequently
February 13, 2023

IllustratorかPhotoshopのスクリプトは、app.fontsを使用してフォント名をまとめて出力できるようなので、エディターを使って「改行」を「","」に置換えると上記のスクリプトにフォント名を全て埋め込むことができます。


ありがとうございます、せっかく教えていただいて申し訳ないんですが、フォントを新しく追加するたびにスクリプトを変更するとなると実用的ではないので、力業の手動でフォントを入れるとゆうよりも、今使っているフォントを全て対象にできるスクリプトであってほしいんですが、わからないでしょうか?