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()最初に静的配列に「変換」するトリックを使用することを好みます。通常、これはスクリプトの開始近くで 1 回だけ実行します。

于 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 に答える