IllustratorのnextFrameって???

本日のエントリはIllustratorについてなんだ。以前Illustratorで自動処理させたスクリプトにメールアドレスを一定の範囲に自動的に追込むコードをかませていたのだけど、これを汎用的な機能にブラッシュアップしようと思い立った訳なんだ。要するに箱組時のオーバーフローの自動調整。Indesiginでやった「オーバーセットテキストを探そう」のIllustrator版だね。でも今回のエントリはその事についてじゃないんだけどね。
目的の機能はメールアドレスを所定の範囲に収めるって感じだったので、箱組でオーバーフローしたら長体かけるって感じのスクリプトを用意していたんだ。この時は条件が単純で、テキストボックスはリンクされていない状態でなおかつ中身が1行という前提がwあったので、下の様な感じでparagraphsとlinesのcontentsを比較すればオバーフローは検出できるんだね。とりあえずその時のファンクションを挙げてみよう

//Compare paragraph length and line length, to adjust horizontal scale.
function ovflow(obj){
    plen = obj.paragraphs[0].length;
    vlen = obj.story.lines[0].length;
    hscale = 1.0;
    stepNum = 0.01;
    while (plen != vlen) {
        obj.paragraphs[0].scaling = [hscale,1];
        vlen = obj.story.lines[0].length;
        hscale = hscale-stepNum;
        }
    }

名刺なんかでemailとかの文字数にばらつきが多い部分を箱組にして、長くて収まらない時に長体かけて追込むといった感じなんだね。

sample1.png

上の図を見てもらえればパラグラフとラインの関係は良く分かると思うのだけど、この2者、若干性質が異なるのだね。linesプロパティはあくまでも表示された行に含まれるコンテンツしか内包しない。一方paragraphsというのは改行までを一つの塊としてコンテンツを内包するんだ。どう言う事かと言うと、「途中でオーバーフローしようが、paragraphsのコンテンツは改行までを内包する」ということなんだ。
この性質を利用するとオーバーフローを検出できる訳だね。
軽く解説を。
テキストフレームオブジェクトを引数にこのファンクションを呼ぶと、パラグラフとラインの文字数を比較するんだ。もし、文字数が異なればそれはオーバーフローしているって事だから文字数がイコールになるまでパラグラフ全体に対して長体をかけていくんだね。

ex textObj.scaling = [horizontalScale, verticalScale];

と言う具合に長体の場合はhorizontalScaleを平体の場合はverticalScaleを変化させれば良いんだ。両方とも数値は倍率になっているので120%の変形率の場合は1.2を設定すると良いよ。正体の場合は1を設定するんだ。
コード自体の流れはIndesignのときとほぼ同じだし、単純なスクリプトなので解説はこれ位にするね。
今回の本題は、更に汎用性を持たせる為に、リンクしたテキストフレームについても一番最後のフレームで同様にオーバーフローを探そうと色々試していた時に、またもやハマってしまった感じなんだねwww

続きを読む

しつこく続けるIndesignでSocketなんとかw

終わりと言いつつも続けてしまう、ダメダメな子ですみません。ずっとHTTPプロトコルばかり弄っていたので、他の事も試したいと思ってずっとテストしているのですが、まだまだモノになるには程遠い状態なわけです。
pollメソッドとかぐぐってもまともな情報が出てこない。きっと、こんなバカな事考えるのは世界広しと言えどわたし一人なのではないかと思ってしまうわけなんだけど、取りあえず中途半端でも全世界に向けて垂れ流してしまえば良いよね!
何を言いたいかというと、世の中にはわたしよりも優秀な方々が沢山いらっしゃるわけです。きっと頭の良いお方が素晴らしい利用方法を思いついて、こんな使い方があるよって情報を発信してくれるのではないかと期待しているわけなんだwww

続きを読む

選択したセルのoverflowsがおかしい?その後の調査

最近思うのですが、わたし以上にExtendScript ToolKit2のヘルプとかリファレンスと仲が良い人間はいないのでは無いかってwww
半ば愛読書の様に暇があれば(いや、苦しい時こそ)それこそ、モニタに穴があきそうな位熱い視線を毎日送り続けているわけです。しかし、見れば見るほどなんだかなぁってなる事は受け合いですwwwこのヘルプ舌っ足らずで穴だらけ。まあscriptの方にもバグがありますけど、それ以上に中身が意味不明な位説明不足だったりするのです。一部のオブジェクトとかエレメントは記述さえされてなかったりしてねw日本語にもなっていないしね。安い買い物ではないのだから、ローカライズはしっかりとやって欲しいものです。

またもや前置きが長くなってしまいましたが、今回は以前のバグ?の回避方法をやっと見つけたので報告しようと思うんだ。

続きを読む

Indesignでsocketを利用する 3.53

夏です…しかしこのブログは灰色でどんよりしていますwww決してわたしの趣味ではありません。本当はもっとかっこ良い体裁が好きなのです。でも派手にするとお仕事中に参照される方が多い情報だし、見づらいかなって思うと抑えたデザインでいいやって思ってしまう、わたしの優しい心遣いと思って下さいね。広告チカチカもそういった理由で入りません…と言いつつも基本、備忘録なので自分が仕事中に見づらくなるのは嫌だからなんだねwww
ようやくある程度のかたちとなりました。socket関連はこれで終了ということにしようと思うんだ。今回もパケットの解析手法とか色々勉強になったんだけど、なんだかなぁwもう少し、しっかりと実装してくれたらこんな事にはならないような気がするのですが、Adobeさん。年末にはCSシリーズも5となるようですが、その辺りは大丈夫でしょうか???
7や雪彪に合わせて慌てて作って、またもやぐだぐだなんて事にならないよう祈っておきますね。

続きを読む

Indesignでsocketを利用する 3.52

正直、ここまで苦労するとは考えてもいませんでした。IndesignもIllustratorも素晴らしいアプリケーションです。ですが、バグも沢山あるんだね。もうちょい開発期間を長めにとってβテスタとかもっと投入した方が良いと思うのはわたしだけではないよね。決して安価ななアプリケーションではないのだから、もう少し完成度の高いものになって欲しいと思うんだ。まあ、バグバグ言ってますが、追々書かせてもらう事が沢山あるんだ。
苦言はこれ位にして、前回の続きをお届けしようと思うんだ。変な具合に分岐してしまった感じのsocket関連のエントリなんだけれど、同じ事をしても全然面白くないので、こちらでは実装をがらりと変えて、より使い易い実践的な機能にしようと思うんだ。ただ、PHPにある程度の処理を割り振った為、機能追加した割には本筋のスクリプトよりコンパクトになっているよ。

続きを読む