クリエイター手抜きプロジェクト[318]Illustrator CS3/CS4/CS5/CS6編 段落を行単位で分割する/古籏一浩

投稿:  著者:  読了時間:5分(本文:約2,300文字)


今回は、Illustratorで選択されたテキストフレームを、行単位で分割するスクリプトです。ポイントテキスト専用です。行間を基準にして位置決めを行っているため、行の途中に大きな文字があると、その行だけずれてしまいます。ただし、他の行には影響を与えません。行間が1/1000単位で指定されている場合は、誤差が発生して若干ずれる可能性もあります。

段落内の文字サイズやスタイルは、そのまま引き継がれます。また、以下のスクリプトは、縦書きでも横書きでも時自動判別して分割処理を行います。新規に分割された段落は新規レイヤーに作成されるため、以前の文字の位置と比較して調整したり、一括して削除しやり直すことができます。





// 段落分割
(function(){
var lineH = []; // 行間を入れておく配列
var selObj = app.selection;
if (selObj.length == 0){ return; } // 何も選択されていない場合
var newLayer = app.activeDocument.layers.add();
for(var i=0; i<selObj.length; i++){
var p = selObj[i].paragraphs.length;
for(var j=0; j<p; j++){
lineH[j] = getMaxHeight(selObj[i], j);
}
var linePos = 0;
for(var j=0; j<p; j++){
var dupText = selObj[i].duplicate(newLayer);
removeParagraphs(dupText, j);
if(selObj[i].orientation == TextOrientation.VERTICAL){
dupText.translate(linePos,0);
}else{
dupText.translate(0, linePos);
}
linePos = linePos - lineH[j];
}
}
})();
// 指定した段落以外を消す
function removeParagraphs(txtObj, num){
for(var i=txtObj.paragraphs.length-1; i>num; i--){
txtObj.paragraphs[i].remove();
}
for(var i=txtObj.paragraphs.length-2; i>-1; i--){
txtObj.paragraphs[i].remove();
}
}
// 最終行の最大の行の高さを返す
function getMaxHeight(txtObj, count){
var para = txtObj.paragraphs[count];
var max = 0;
for(var i=0; i<para.characters.length; i++){
var n = para.characters[i].leading;
if (n > max){ max = n; }
}
return max; // 最終行の行の最大の高さを返す
}


すべての文字の高さを調べているため、文字数が多いと数分近く待つ場合があります。また、レイヤー名の設定などはPhotoshopをバックグランドにまわすか、Tabキーを押してパレットを消すと高速に処理されます。


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

金環日食は太陽でなく周辺を撮影しました。外の明るさが変化する様子がわかります。5時42分から1秒間隔で撮影しているので、だいたい3分12秒あたりが金環日食時の明るさになります。単純に映像を暗くした場合とは何か違う、日食独特の明るさです。

・金環日食時の外の明るさの変化
< >

PDF構造解説本が発売になりました。付録AでAcrobatのJavaScriptについて解説しています。役立ちそうなサンプルなども収録しています。興味のある方はどうぞ。

・PDF構造解説【発売中】
< http://www.amazon.co.jp/dp/4873115493 >

・10日で覚えるHTML5入門教室
< http://www.amazon.co.jp/dp/4798124184 >

・AndroidのためのHTML5本格アプリ開発
< http://www.amazon.co.jp/dp/4897978971/ >

・新標準HTML5 & CSS3辞典
< http://www.amazon.co.jp/dp/4844331752/ >

・改訂5版JavaScriptポケットリファレンス
< http://www.amazon.co.jp/dp/4774148199 >

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

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

・Adobe Illustrator CS3 + JavaScript 自動化サンプル集
< http://www.openspc2.org/book/PDF/Adobe_Illustrator_CS3_JavaScript_Book/ >
吉田印刷所の「印刷の泉」でも購入できるようになりました。