複数行テキストを一行ごとに分割するJSX for Photoshop

PhotoShopでデザインを起こす時、
自分の場合、世界観などから画像やFlashなどでの表現が自然と多くなり、その際単語やパーツごとに分割されたテキストが必要となるため、一気にテキストをフォトショップへ持って行ってから単語ごとにコピペ…
もしくはフォトショへちまちまとコピペ…
これが実に面倒臭い!
イラレで、分割してから持ってきてもいいけど、フォント情報やら設定し直しでこれも面倒臭い。
そういう作業は機械様に任せるようということで
PhotoshopのスクリプティングガイドでAPIとかを見ながらスクリプトを書いてみた。
FlashのJSFLは少々書いたことがあったが今回初JSX。
var splitTexts = new Array() ; var selectedLayer = activeDocument.activeLayer; var selectedTxt = selectedLayer.textItem.contents; splitTexts = selectedTxt.split(/¥n|¥r/g); var len = splitTexts.length; for(i=0; i<len; i++) { var str = splitTexts[i]; if(str != "") { var layObj = selectedLayer.duplicate(); layObj.textItem.contents = str; layObj.textItem.position = Array(50,(50 + i*20)); } }
最小限の処理のみにしてます。
windowsXP / PhotoShop CS3で動作確認。
上のスクリプトをコピペしてjsxなんかで保存する。
>>Adobe Photoshop CS3/プリセット/スクリプト
的な所へ放り込みPhotoshopを起動するとで「ファイル > スクリプト」項目が追加されているはずなのでそれを実行するか、もしくは「ファイル > スクリプト > 参照」から実行。
使用法は、
複数行のテキストレイヤーを選択してから上記のいずれかの方法でjsxを実行してあげれば
そのレイヤースタイル含むフォント情報のままのものが一行ごとに分割されて作成されていきます。
段落テキストでもポイントテキストでも使用可。
元のテキストと同じ位置に分割後のテキストを作ってもよかったのだけども
どうせ位置やらもろもろ変えるし、スクリプトにフォントの高さの情報などなどの処理を走らせる必要性もあまりなさそうなので、だいたいカンバスの左上から順に作られていきます。
完成度は高くないけれども自分の環境ではこれで十分。
みんなはPhotoShopでデザインを起こす時テキストをどうやって持って行っているんだろ?
あ。利用に関しては自己責任でー。
続く
