Adobe InDesign CS3/CS4/CS5編 文字のサイズやフォントをランダムに設定する

今回のスクリプトは前回同様、選択されたテキストフレーム内の文字のサイズやフォントをランダムに設定するものです。IllustratorとInDesignはスクリプトのプロパティが非常によく似ていますが、やはり同じスクリプトでは動作しません。
最初のスクリプトは選択されたテキストフレーム内の文字を上下左右にずらします。ちなみに、このスクリプトに関してはIllustratorでもInDesignでも動作します。


var dx = 20; // 左右のずれ
var dy = 10; // 上下のずれ
var selObj = app.activeDocument.selection;
for(var i=0; i<selObj.length; i++){
for(var j=0; j<selObj[i].characters.length; j++){
var x = Math.random() * dx - dx/2;
var y = Math.random() * dy - dy/2;
selObj[i].characters[j].baselineShift = y;
selObj[i].characters[j].tracking = x;
}
}

次はさらに文字を回転、文字サイズも変更するものです。InDesignでは文字を回転する場合はcharacterRotationプロパティに回転角度を入れる必要があります。ここはIllustratorとは異なっています。

var dx = 20; // 左右のずれ
var dy = 10; // 上下のずれ
var rot = 30; // 最大30度
var size = 6; // 最大6pt差
var selObj = app.activeDocument.selection;
for(var i=0; i<selObj.length; i++){
for(var j=0; j<selObj[i].characters.length; j++){
var x = Math.random() * dx - dx/2;
var y = Math.random() * dy - dy/2;
var r = Math.random() * rot - rot/2;
var s = Math.random() * size - size/2;
selObj[i].characters[j].baselineShift = y;
selObj[i].characters[j].tracking = x;
selObj[i].characters[j].characterRotation = r;
var csize = selObj[i].characters[j].pointSize;
selObj[i].characters[j].pointSize = csize + s;
}
}

最後のスクリプトはさらにフォントも変更するものです。fontList=[]の[]内に文字に適用したいフォント名を指定します。他のフォントにしたい場合はフォント名を変更してください。もちろん追加することもできます。フォント名はIllustratorとは異なり日本語フォント名で指定します。

var fontList = [
"小塚ゴシック Pro", // 小塚ゴシックPro
"小塚明朝 Pro", // 小塚明朝Pro
"ヒラギノ角ゴ Pro" // ヒラギノ角ゴシックW6
];
var dx = 20; // 左右のずれ
var dy = 10; // 上下のずれ
var rot = 30; // 最大30度
var size = 6; // 最大6pt差
var selObj = app.activeDocument.selection;
for(var i=0; i<selObj.length; i++){
for(var j=0; j<selObj[i].characters.length; j++){
var x = Math.random() * dx - dx/2;
var y = Math.random() * dy - dy/2;
var r = Math.random() * rot - rot/2;
var s = Math.random() * size - size/2;
var n = Math.floor(Math.random() * fontList.length);
selObj[i].characters[j].baselineShift = y;
selObj[i].characters[j].tracking = x;
selObj[i].characters[j].characterRotation = r;
var csize = selObj[i].characters[j].pointSize;
selObj[i].characters[j].pointSize = csize + s;
selObj[i].characters[j].appliedFont = app.fonts.item(fontList[n]);
}
}

[サンプルをダウンロード]