クリエイター手抜きプロジェクト[603]Adobe Illustrator CS6〜2020編 括弧内の文字を処理する/古籏一浩

投稿:  著者:  読了時間:7分(本文:約3,400文字)



今回は、久々のIllustratorの自動化ネタです。選択したテキストフレーム内の、括弧内の文字サイズを変えるという処理です。サンプルスクリプトは文字サイズを変更していますが、ベースラインや文字のカラーなど、文字属性であれば何でも変更することができます。

最初は【と】の間にある文字サイズを変更するスクリプトです。テキストフレームを選択してから実行します。





// 【】の中の文字サイズを変更する
var scale=prompt("割合を入れてください",0.8);
if(scale!=null){
scale=parseFloat(scale);
var selObj = app.activeDocument.selection;
for(var i=0; i<selObj.length; i++){
var type = selObj[i].typename;
if (type != "TextFrame"){ continue; }
selObj[i].contents.replace(/【.+?】/g, function(str, ptr, allStr){
for(var k=1; k<str.length-1; k++){
var fs = selObj[i].textRange.characters[ptr+k].characterAttributes.size;
fs = fs * scale;
selObj[i].textRange.characters[ptr+k].characterAttributes.size = fs;
}
return str;
});
}
}

/【.+?】/gのように、正規表現の1文字以上の最短マッチにしています。最短マッチは

【あいう】えお】

という文字があった場合、「あいう」にマッチします。?がないと最長マッチになるので「あいう】えお」にマッチします。

一種類の括弧だけでなく、複数の括弧内の文字を処理することもできます。以下のスクリプトは、4種類の括弧内の文字サイズを変更します。前のスクリプトと同様に、テキストフレームを選択してから実行します。


// 複数の【】内の文字サイズを変更する
var bracketList=[
/【.+?】/g,
/(.+?)/g,
/\(.+?\)/g,
/《.+?》/g
];
var scale=prompt("割合を入れてください",0.8);
if(scale!=null){
scale=parseFloat(scale);
var selObj = app.activeDocument.selection;
for(var i=0; i<selObj.length; i++){
var type = selObj[i].typename;
if (type != "TextFrame"){ continue; }
for(var j=0; j<bracketList.length; j++){
selObj[i].contents.replace(bracketList[j], function(str, ptr, allStr){
for(var k=1; k<str.length-1; k++){
var fs = selObj[i].textRange.characters[ptr+k].characterAttributes.size;
fs = fs * scale;
selObj[i].textRange.characters[ptr+k].characterAttributes.size = fs;
}
return str;
});
}
}
}

括弧内の文字だけでなく、括弧も含めて文字サイズを変えたい場合は、以下のようになります。

// 複数の【〜】の文字サイズを変更する
var bracketList=[
/【.+?】/g,
/(.+?)/g,
/\(.+?\)/g,
/《.+?》/g
];
var scale=prompt("割合を入れてください",0.8);
if(scale!=null){
scale=parseFloat(scale);
var selObj = app.activeDocument.selection;
for(var i=0; i<selObj.length; i++){
var type = selObj[i].typename;
if (type != "TextFrame"){ continue; }
for(var j=0; j<bracketList.length; j++){
selObj[i].contents.replace(bracketList[j], function(str, ptr, allStr){
for(var k=0; k<str.length; k++){ //★ここを修正
var fs = selObj[i].textRange.characters[ptr+k].characterAttributes.size;
fs = fs * scale;
selObj[i].textRange.characters[ptr+k].characterAttributes.size = fs;
}
return str;
});
}
}
}

なお、この正規表現では括弧内には最低1文字ないとマッチしません。【】や《》のように括弧内に何も文字がない場合でも、マッチさせるには先頭の正規表現が書かれている部分を以下のように変えてください。

/【.*?】/g,
/(.*?)/g,
/\(.*?\)/g,
/《.*?》/g


【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/

自分の勉強用として、地道にAdobe関係のアプリケーションのリファレンス(辞書&サンプル)を作ってます。が、作っているうちはCS6だったのが、あっという間に2020までバージョンアップされていってしまい、全然追いついてない状態になってしまいました。でも、CS6ベースでしっかり作ってしまえば、後は差分だからすぐできるはず、と甘い目論見……

http://www.openspc2.org/reibun/IllustratorCS6/ref/
http://www.openspc2.org/reibun/PhotoshopCS6/ref/
http://www.openspc2.org/reibun/InDesignCS6/ref/
http://www.openspc2.org/reibun/InDesign2020/ref/

・みんなのobniz入門
https://www.amazon.co.jp/dp/4865942165/

・InDesign自動化サンプルプログラム逆引きリファレンス上/下
https://www.amazon.co.jp/dp/4844396846/
https://www.amazon.co.jp/dp/4844396854/

・創って学ぼうプログラミング
https://news.mynavi.jp/series/makeprogram

・みんなのIchigoLatte入門 JavaScriptで楽しむゲーム作りと電子工作
https://www.amazon.co.jp/dp/4865940936
[正誤表]
http://www.openspc2.org/book/error/ichigoLatte/

・After Effects自動化サンプルプログラム 上巻、下巻
https://www.amazon.co.jp/dp/4844397591
https://www.amazon.co.jp/dp/4844397605

・IchigoLatteでIoT体験
https://www.amazon.co.jp/dp/B06X3X1CHP
http://digiconcart.com/dccartstore/cart/info/2561/218591

・みんなのIchigoJam入門 BASICで楽しむゲーム作りと電子工作
http://www.amazon.co.jp/dp/4865940332/

・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/

・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA/

・4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/

・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/