InDesignのスクリプトで、なかなか解決方法が見つからずに、悩んでいますので、もし、よい方法をご存じのかたがいましたら、
アドバイスをよろしくお願いいたします。
InDesignはCS2とCS3で作業しています。
今回の質問としましては、スクリプト言語はAppleScript以外であれば、問いませんので、よろしくお願いいたします。
文字列としてたとえば1000文字がテキストフレームにあるとします。
その文字列を1~50文字までが90%の長体として、51~1000文字までを80%にしないといけないと仮定した場合に
すべてのCharacterをLoopしながら属性を与えていくのはできるのですが、それだと、あまりにも処理時間がかかってしまっています。
フレームの数、文字列の数もそうとうな場合に上記のようなLoop以外の方法がありますと、とても助かります。
1~50文字までのCharacterと、51~1000文字までのCharacterを、それぞれ一気に処理することはできるのでしょうか?
AppleScriptの参照のように
set properties of text from character A to character B to {color:RED,size:S}
などのように
●●~●●の範囲の属性を一度に与えるというやり方をご存じのかた、アドバイスよろしくお願いいたします。
milligrammeさんの回答に、
>AppleScriptの参照のように
>set properties of text from character A to character B to {color:RED,size:S}
の部分を加えると
sel.characters.itemByRange(0,49).properties = {horizontalScale:90,fillColor:RED,pointSize:S};
sel.characters.itemByRange(50,999).properties = {horizontalScale:80,fillColor:RED,pointSize:S};
という形になるでしょうか。
milligramme 様、アドバイスありがとうございました。
itemByRangeで出来るのですね!
とても参考になりました。
明日、会社で記述をして確認させていただきます。
Rangeが使えるのと使えないのとでは、相当処理効率に差は出てくると思います。
とても大きな成果につながるアドバイスをしていただき、本当に感謝しています。
今まで、処理時間でかなりストレスを感じていた部分を、この記述の仕方で書き直せば
相当のスムーズな処理になるものがたくさんあります。
今まで作ったものを、改良するのが楽しみです。
本当にありがとうございました。
bykamo 様、アドバイスありがとうございました。
とても感謝しています。
なかなかこの問題に関しては、調べても答えが長い間、得られなかったため、今回アドバイスいただいて
本当に助かりました。
byKamo様のアドバイスでは、こちらが記述しましたサンプルに対しての記述を教えていただき、とてもわかりやすかったです。
これから、今回のアドバイスでいただいたitemByRangeを使って、今まで作ったものを改良したいと思います。
この記述を使えば、相当な動作の改善になると思います。
またソース自体もスッキリとしますし、改善するのが楽しみです。
とてもアドバイス、感謝しています。
本当にありがとうございました。
P.S ただ、このサイトの仕組みが少し理解不足なところがあり、bykamo様のほうもmilligramme様と同じく、Correct answerっていうのを押したかったのですが、
押せなくなってしまったので、helpful answerというのを押させていただきました。
North America
Europe, Middle East and Africa
Asia Pacific
Copyright © 2012 Adobe Systems Incorporated. All rights reserved.
Use of this website signifies your agreement to the Terms of Use and Online Privacy Policy (updated 07-14-2009).