こちらは無料公開スクリプトです。どうぞお試しください。
(クリックで動きます)
G66_AddEmBox

■デザインの授業にどうぞ!イラストレーターで仮想ボディの正方形をサクッとつくる方法

おつかれさまです。@gorolibです。

先般の記事、
を具現化したスクリプトを公開いたします。

<スクリプトファイル名>
G66_AddEmBox.jsx


<ダウンロード先>


<使い方>
(1)ポイント文字を選択する
(2)スクリプトを実行する


<仕様>
(1)1行だけのポイント文字が対象です。
(2)カーニング、トラッキング、ベースラインシフトOKです。
(3)ただし全部同じ文字サイズが前提です。途中の文字サイズ変更には対応しておりません…。
(4)自動カーニングはカーニング値が取得できないので解除されます。ご注意ください。
(5)仮想ボディサイズの線は0.1ミリです。

(クリックで動きます)
G66_AddEmBox

制作で使う機会はほとんどないと思いますが、デザインの授業ではこういう図が必須ですので、無料アカデミック版という感じでお願いいたします。


G63p_ellipseBack

のベースとなったスクリプトです(ベーススクリプトのほうは未公開でした)


■バウンディングボックスの左上=仮想ボディの原点としています(仮想的に)


バウンディングボックス≠仮想ボディなのは周知のとおりですが、バウンディングボックスの左上は


まぁいわゆるひとつの仮想ボディの左上としてよいでしょう!


という仮定に基づいたスクリプトです。仮想ボディだけに仮想的です(うまくないっ!)



お役に立てれば幸いです!

ではでは出羽の海。





ソースも公開いたします(その昔、AS400というオフコンでRPGというプログラム言語を使っていましたが、なんだかその書き方に寄ってきたなぁ(笑))
━━━━━
DOC = activeDocument
SEL = DOC.selection
LAY = DOC.activeLayer
ptEQ = 25.4/72
mm1 = 0.1/ptEQ

MAINfn()

function MAINfn(){
for (s=0; s<SEL.length; s++){
if(SEL[s].typename == "TextFrame") PARAfn(SEL[s]);
}
}

function PARAfn(SEL){
BND = SEL.geometricBounds
PARA = SEL.paragraphs
SIZ = PARA[0].size
LED = PARA[0].leading
CHA = PARA[0].characters
CHAfn()
}

function CHAfn(){
BAS1 = 0
KER = []
TRA = []
for (c=0; c<CHA.length; c++){
CHA[c].kerningMethod = AutoKernType.NOAUTOKERN
KER[c] = SIZ*CHA[c].kerning/1000
TRA[c] = SIZ*CHA[c].tracking/1000
if(CHA[c].baselineShift > 0){
if(BAS1 < CHA[c].baselineShift) BAS1 = CHA[c].baselineShift
}
}

BAS0 = BND[1]- BAS1

for (c=0; c<CHA.length; c++){
BAS2 = CHA[c].baselineShift
T1 = BAS0 + BAS2
if(c==0){
L1 = BND[0]
} else {
L1 = L1 + SIZ + KER[c] + TRA[c-1]
}
NEWfn()
}
}

function NEWfn(){
NEW = LAY.pathItems.rectangle( T1, L1, SIZ, SIZ )
NEW.move(DOC, ElementPlacement.PLACEATEND)
NEW.filled = false
NEW.stroked = true
NEW.strokeWidth = mm1
}
━━━━━