非表示のレイヤと描画されないパスを削除するIllustratorスクリプト

このスクリプトは、現在販売中のRuneAMN_Proフォントセットを制作していた時に作った。


 RuneAMN_Proフォント ブラックレター体
「シンボル」機能を活用してデザインされた


フォントを制作した際、文字のデザインも私が担当した。
ルーン文字の場合、最低でも26文字デザインする必要がある。文字はひとつずつ違う形を持っているが、文字をパーツに分けて見てみれば、複数の文字が同じ部品を共有している場合もある。

Illustratorで同じ形状のパスをいくつも置く場合に使われる「シンボル」機能は、そのまま使うとシンボルにした形状の位置決めが難しくなる。そこで、透明な長方形パスで囲ってシンボル化することで、位置決めしやすくするテクニックがよく使われる。

手製のフォント画像分割スクリプトと、フォント制作アプリケーションFontForgeの都合から、シンボルを解除して、透明なパスを削除する必要があった。
シンボル化の解除は、パスを全選択して、シンボル化機能の解除アイコンをクリックすれば良いので簡単に済む。
しかし、透明なパスの除去は、手作業ですれば面倒な作業になる。(字形を修正するために、何度も同じ作業が必要になるのでさらに大変。)


幸い、私はプログラマだった。すべてのパスをひとつずつチェックして、透明だったら削除するスクリプトを書くのは簡単だった。
そうして、以下の非表示レイヤと描画されないパスを削除するIllustratorスクリプトが誕生した。


/** 
 * 非表示のパス・レイヤを削除する。
 * Adobe Illustrator script(JavaScript).
 * Michinari.Nukazawa@gmail.com
 * License: BSD class2
 *
 * 既知の問題: 2回適用しないとすべての非表示パスが消えない場合がある。
 */


// 非表示のレイヤを削除する
layers = activeDocument.layers;
for (i=0; i<layers.length; i++)
{
 
if( !layers[i].visible ){
 
 
layers[i].locked = false;
 
 
// 非表示レイヤはremove()しようとするとエラー失敗する
 
 
layers[i].visible = true;
 
 
layers[i].remove();
 
}
}

pathObj = activeDocument.pathItems;
// 非表示のパスを削除する
for (i=0; i<pathObj.length; i++)
{
 

 
if( ((!pathObj[i].filled) && (!pathObj[i].stroked)) || pathObj[i].hidden ){
 
 
pathObj[i].locked = false;
 
 
pathObj[i].remove();
 
}
}


(このスクリプトは動作するが、古くなっている可能性がある。最新版は"delInvisiblePath.jsx"の名前で、RuneAMN_Proフォント 制作スクリプト公開ページにて公開されている。)

Illustratorのjsxスクリプトの使い方は、色々なサイトで説明されているので省略。

このスクリプトは、完全自動化を目指すことはせず、あくまで作業補助のために作ったので不出来ではあるけれど、きちんと機能はする。

Linuxコマンドライン上でSVGベクタ画像をJPG等へラスタライズ変換する

 Linuxコマンドライン上でSVGベクタ画像をJPG等へラスタライズ変換することができるが、上手く変換されない場合がある。   以前作った魔法陣イラスト素材をイラスト素材ストックサイトへ登録しようと思い立ち、改めて素材用にラスタライズ変換をかけようとした。   ラスタライズ変換...