長体方法のうちのひとつ。テキストボックスに収まるように、まずテキストボックスの横幅を測り、1行のときの文字列の幅も測り比率をだして長体をかけます。ポイントはテキストボックスを複製し、横幅を10倍にします。(それで1行になると思われるため)さらに文字列をアウトラインし正確な文字幅を求めます。あとは比率を出してやるだけです。
もっと普通に長体をかける方法もありますがInDesignの長体を参照していただければと思います。
tell application "Adobe Illustrator" tell document 1 set mySelObjList to selection --選択されたオブジェクトを調べる repeat with mySelObj in mySelObjList --選択分繰り返す if class of mySelObj is text frame then --もしtext frameなら my chouTai(mySelObj) end if end repeat end tell end tell on chouTai(mySelObj) tell application "Adobe Illustrator" set myW to width of mySelObj --text frameの幅を調べる --長体horizontal scaleを調べる(平体はvertical scale)-- --Illustrator10ではscalingで縦横の比率がとれる set SCL to horizontal scale of paragraph 1 of mySelObj --横幅10倍サイズで複製する set dupTextObj to duplicate mySelObj to beginning of document 1 ¬ with properties {width:myW * 10} --長体も10倍になるので長体を101%にする(なぜか100%にはならない) if SCL = 100 then set SCL to 101 end if set horizontal scale of paragraph 1 of dupTextObj to SCL --行数を調べる set Pcount to count paragraph of dupTextObj if Pcount > 1 then --行数が2行以上なら display dialog "1行のテキストのみに有効です。" return --処理終了 end if --行揃えを左にしておく。両揃えだと正しくはかれない set justification of paragraph 1 of dupTextObj to left --アウトライン作成 set outLinePath to convert to paths dupTextObj --アウトラインの領域を調べる set myBounds to control bounds of outLinePath --control/visible --長さを取り出す set myW2 to (item 3 of myBounds) - (item 1 of myBounds) --(width of TBOX) delete outLinePath --アウトラインは消す if myW < myW2 then --もしアウトラインの方がtext frameよりも長ければ set myWhi to myW / myW2 --比率を求めて set SCL to SCL * myWhi - 1--誤差が出るので1%マイナスする set horizontal scale of paragraph 1 of mySelObj to SCL end if end tell end chouTai
コメントする