JavaScript
illustrator
SLOGANDay 11

Illustratorのスクリプトで、名刺の氏名部分のカーニングを自動調整

More than 1 year has passed since last update.

Illustratorのスクリプトのリファレンスはpdf形式

_人人人人人人人人人人人人_
> リファレンスがpdf  <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄

https://www.adobe.com/devnet/illustrator/scripting.html

これは見つけにくいよ!
先人のブログが少ないので取っ掛かりにくく感じますが、実際にはただのJSなので恐るに足りません。まずは挑戦あるのみ。

名刺の氏名部分のカーニング調整を自動で行うスクリプト

名刺の「氏名」部分は、住所などの普通の文字よりも間隔が開いています。また、姓と名の間も、微妙に大きな間隔があります。
namespace.PNG
※「ディレクター」の部分の文字間隔より、赤ライン部分、青ライン部分の文字間隔が広い

この微妙な間隔はIllustratorのカーニング機能でデザインしているのですが、なんと変数でaiデータに氏名を流し込むと、カーニング情報が消えてしまいます。手でポチポチ何十人分もカーニング設定し直すのは大変…

ということで、変数で氏名情報を流し込んだ後、カーニング情報を再設定してあげる小さいスクリプトを書くことにしました。

解説

氏名情報は「佐藤 太郎」のように、姓名の間に全角スペースが入った状態で流し込んでいます。今回は、

  • 1文字目と全角スペースのカーニングは0
  • 名前の1文字目(この場合は「太」)のカーニングは250
  • それ以外の文字のカーニングは750

としてみました。

使ったメソッドなど

activeDocument.selection

クリックしたオブジェクトの情報を取得します。今回は、氏名部分をクリックしてからこのスクリプトを実行するので、取得するのは「氏名」部分のオブジェクトになります。

activeDocument.selection[0]

文字を選択した状態では、0番目で文字情報が取得できます。

characters.length

文字列の長さ。

characters.contents

文字をstringで取得します。

kerning

カーニングの値を指定します。Illustrator上で普段使っているのと同じです。

完成

kerning.jsx
var headOfLine = 0;
var spaceKerning = 0;
var afterSpace = 250;
var ordinaly = 750;

var nameInfo = activeDocument.selection[0];

for (i=0; i<nameInfo.characters.length; i++) {
  targetChar = nameInfo.characters[i];
  if(i==0){ //1文字目
    targetChar.kerning = headOfLine;
  }else if(targetChar.contents == " "){ //スペース
    targetChar.kerning = spaceKerning;
  }else{
    beforeChar = nameInfo.characters[i-1];
    if(beforeChar.contents == " "){ //名前の1文字目
      targetChar.kerning = afterSpace;
    }else{ //上記以外
      targetChar.kerning = ordinaly;
    }
  }
}

まとめ

リファレンスがpdfな時点で心がくじけそうになりましたが、思ったよりシンプルで直感的にIllustratorのさまざまなプロパティをいじることができます。名刺など、多種の制作物と戦うデザイナーの心を軽くすることでしょう。スクリプト怖くない!