Fonts 如何通过脚本InDesign将随机字体应用于文本框?

Fonts 如何通过脚本InDesign将随机字体应用于文本框?,fonts,adobe-indesign,basil.js,Fonts,Adobe Indesign,Basil.js,我想从安装的字体中选择一种随机字体,并将其应用于文本框。我正在使用basil.js来简化编码 我不想自己写一个所有可用字体的列表,如下所示: var font = []; font[0] = "Times New Roman"; font[1] = "Myriad Pro"; font[2] = "Impact"; b.textFont( font[Math.floor(Math.random()*font.length)] ); (这个想法来自:) 非常感谢 您的basil.js是

我想从安装的字体中选择一种随机字体,并将其应用于文本框。我正在使用basil.js来简化编码

我不想自己写一个所有可用字体的列表,如下所示:

var font = [];
font[0] = "Times New Roman";
font[1] = "Myriad Pro";
font[2] = "Impact";
b.textFont( font[Math.floor(Math.random()*font.length)] );     
(这个想法来自:)


非常感谢

您的basil.js是否与ID的本机Extendscript配合得很好?如果是,您可以使用以下方法:

var allFonts = app.fonts.everyItem().getElements();
b.textFont( allFonts[Math.floor(Math.random()*allFonts.length)] );

第一行访问InDesign中的live app.fonts对象,由于速度较慢,我更喜欢使用
everyItem().getElements()
技巧首先将其“转换”为静态数组。通常情况下,您只会在脚本开始时执行一次。

除了Jongware的答案之外。。。现在还有一个例子正好说明了这一点:

#includepath“~/Documents/;%USERPROFILE%Documents”;
#包括“basiljs/bundle/basil.js”;
函数绘图(){
var textframescont=20;
var字体=app.fonts;
对于(变量i=0;i
是的,Extendscript和basil.js很不错。因此,这是可行的。谢谢。
#includepath "~/Documents/;%USERPROFILE%Documents";
#include "basiljs/bundle/basil.js";

function draw() {
  var textFramesCount = 20;
  var fonts = app.fonts;

  for (var i=0; i < textFramesCount; i++) {
    var posX = b.random(0,600);
    var posY = b.random(0,850);
    var randomFontSize = b.round(b.random(2,20));
    var randomIndex = b.floor( b.random(app.fonts.length) );
    var fontName = fonts[randomIndex].fullName;
    b.println(fontName);

    b.textSize( randomFontSize );
    b.textFont( fonts[randomIndex] );
    var textFrame = b.text(fontName+" "+randomFontSize, posX,posY, 300,20);
  };
}

b.go();