2013-10-03 29 views
0

我想從我安裝的字體中選擇一種隨機字體並將其應用到文本框中。我使用basil.js來方便編碼。如何通過腳本InDesign將隨機字體應用於文本框?

我不希望由我自己寫的所有可用的字體列表,就像這樣:

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

非常感謝!

回答

0

您的basil.js與ID本地的Extendscript一起玩還不錯嗎?如果是這樣,你可以使用這個:

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

第一行訪問現場 app.fonts在InDesign對象,而且由於這是緩慢的,我更喜歡使用everyItem().getElements()招「轉換」到一個靜態數組第一。通常,您只需在腳本開始附近執行一次此操作。

+0

是,Extendscript和basil.js發揮好。因此,這是有效的。非常感謝。 – user1774611

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(); 
相關問題