0

我想从我安装的字体中选择一种随机字体并将其应用于文本框。我正在使用 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)] );     

(这个想法来自:http ://forums.adobe.com/thread/325180 )

非常感谢!

4

2 回答 2

0

你的 basil.js 和 ID 的原生 Extendscript 一起玩得好吗?如果是这样,你可以使用这个:

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

第一行访问 InDesign 中的实时app.fonts 对象,由于这很慢,我更喜欢先使用everyItem().getElements()技巧将其“转换”为静态数组。通常,您只会在脚本开头附近执行此操作一次。

于 2013-10-03T13:06:05.123 回答
0

除了 Jongware 的回答......现在还有一个例子可以做到这一点:https ://github.com/basiljs/basil.js/blob/master/examples/typography/RandomFonts.jsx

#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();
于 2013-10-08T15:52:36.490 回答