2013-10-03 2 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 вместе с родным 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(); 

 Смежные вопросы

  • Нет связанных вопросов^_^