今回は任意の文字数で改行するスクリプトです。ワープロなどでは横80文字に揃える機能がありますが、ほぼ同様のものです。ただし、手抜きのため禁則処理は行っていません。
以下のスクリプトは横10文字に揃えるものです。
使い方は横の文字数を揃えたいテキストレイヤーを選択してから実行します。テキストレイヤーを選択するだけでテキスト自体を選択する必要はありません。
選択したレイヤーがテキストではない場合には何も処理されません。
wordCount = 10; // 10文字ごと改行
CR = String.fromCharCode(13);
docObj = activeDocument;
layObj = docObj.activeLayer;
if (layObj.kind == LayerKind.TEXT)
{
txt = layObj.textItem.contents;
result = "";
count = 0;
for (i=0; i<txt.length; i+=wordCount)
{
result += txt.substr(count*wordCount, wordCount);
count++;
result += CR;
}
layObj.textItem.contents = result;
}
文字数が固定できない場合にはダイアログで入力させることもできます。この場合は以下のようにprompt()を使います。
wordCount = parseInt(prompt("横の文字数",10));
CR = String.fromCharCode(13);
docObj = activeDocument;
layObj = docObj.activeLayer;
if (layObj.kind == LayerKind.TEXT)
{
txt = layObj.textItem.contents;
result = "";
count = 0;
for (i=0; i<txt.length; i+=wordCount)
{
result += txt.substr(count*wordCount, wordCount);
count++;
result += CR;
}
layObj.textItem.contents = result;
}
MacOS X版では動作を確認していますが、Windows版では2行目を以下のようにしないと動作しないかもしれません。
CR = String.fromCharCode(13)+String.fromCharCode(10);