3.まぎれこんでしまった不要な色を退治する

 1色刷り用のIllustratorファイルをシアンのみで作って、いざプリフライトソフでチェックする。すると、あってはいけないイエローなどがまぎれこんでいるではないか。で、泣きながらIllustratorでオブジェクトの色設定をひとつひとつ調べているうちに夜が明けてしまった。という経験はないだろうか。そのまぎれこんでしまった不要な色を退治するというのが今回のテーマだ。

 今回、実験用のIllustratorファイルをわざわざ作った。シアン1色で作ったつもりなのにイエローが混入してしまったIllustrator5.5Jのファイルだ(ここからダウンロードできる)

 さて、その「実験用5.5J」で話を進めよう。例によってテキストエディタで「実験用5.5J」を開いてみる。8行目に次のように書かれているのが見つかる。

%%DocumentProcessColors: Cyan Yellow

これで、このファイルにはシアンとイエローが使われているということがわかる(注1)。さらにずっと下の行までスクロールしていくと、末尾に K もしくは k と書かれた行があちこちに見つかるはずだ。例えば次のような記述が379行目にある。

0.6325 0 0 0 k

これは、この後の行に書かれたオブジェクトに対するペイント設定を表していて、基本形はスペースで区切られた「数字 数字 数字 数字 k(またはK)」で、左からシアンの割合(1=100%)、マゼンダの割合、イエローの割合、クロの割合、そして線か塗り(K=線、k=塗り)を意味している(注2)。この例では、シアン63.25%の塗りが設定されている。

 ということは、ペイント設定が定義されたこれらの中から、イエローの項目(左から3番目の数字)が0でない行を見つければ今回の目標が達成できそうだ。次のような作戦を考えてみた。

(1)イエローの含まれたオブジェクトの正確なペイント設定を知る。

(2)Illustratorで、問題のファイルを開き、(1)で得たペイント設定のオブジェクトを作る。

(3)(2)で作ったオブジェクトを選択した状態で「フィルタ-->選択-->同一色の塗り(または、同一色の線)」(5.5Jの場合)を行う。

(4)選択された、問題のオブジェクトを削除、あるいは色変換する。

 しかし、テキストエディターで開いたファイルのすべての行をひとつひとつしらみつぶしに見ていたのでは、Illustratorでひとつひとつのオブジェクトを調べるのと同じ位時間がかかってしまう。

 そこで、テキストエディターの検索機能を使う。ところが今回検索したいのは「スペースで区切られた3番目の数字が0でない行」だ。通常の検索ではそんなもの検索できない。なので「正規表現」を使う。

 正規表現とは「スペースで区切られた3番目の数字が0でない行」などの特定できない文字列を表現するための約束事だ。例えば「0から9までのどれかの数字ひと文字」を検索したい場合は[0-9]というように表現する。実験で使用しているテキストエディターYooEditは幸い正規表現に対応しいる。Jeditなど他のエディターも多くは正規表現に対応しているはずだ。

 では、YooEditの対応している正規表現にもとづいて(注3)、検索設定ウインドウの検索文字列に次のように入力しよう。

^[01]\.?\d*\s[01]\.?\d*\s\(1\|\(0\.\d+\)\)\s[01]\.?\d*\s[kK]

 不気味な文字列だ。これをあえて日本語に訳すと、「行頭に0か1があり、続いてピリオドがあるか又はないかで、その後に数字が0個以上続いた後にスペースがある。そしてまた0か1があり、続いてピリオドがあるか又はないかで、その後に数字が0個以上続いた後にスペースがある。次に1があるかもしれない、でも1ではなく0かもしれない、0だった場合はその後ろにピリオドがあって、さらに数字が最低1個続く。そしてスペースがある。そしてまた0か1があり、続いてピリオドがあるか又はないかで、その後に数字が0個以上続いた後にスペースがある。で、あとはkか、またはKがある。」となる。

 これをキーとして検索すると例えば、

0 0 1 0 k
0.25 0.25 0.325 0.25 K
1 1 1 1 K

などにはヒットするが

0 0 0 0 k
1 0.32 0 0.23 k
1 1 0 1 K

 などは無視されるので、イエローの項目(左から3番目の数字)が0でない行を見つけることができるというわけだ。それでは、一括検索を実行しよう。検索設定ウインドウに正しく入力していれば、イエローを含むペイント設定の行がいくつか検索されたはずだ。


 
 ただし、ここで検索されたペイント設定がすべてファイル内で実際に使用されているとは限らない。というのも、検索された行の中には、Illustratorのペイントウインドウに登録してあるペイント設定(注4)も含まれているからだ。
 ということで検索されたペイント設定の中から、実際に使用している設定のみを見つけなければならない。そのためにテキストエディターで開いたファイルの中で次の記述を探す。

%%EndSetup
%AI5_BeginLayer

 今回の例では293行目および、294行目にある。この2行が意味しているのは、

ここまでが準備
ここからが実際のオブジェクト

 ということで、準備というのは、使用しているフォントを準備したり、カスタムカラーやグラデーションやパターンを準備したり、ペイントパレットに表示する色を準備したり、などなどだ。

 したがって、これより後が実際に使用しているペイント設定の行だということになる。というわけで今回の場合は、294行目以降にある299行目と8933行目の二つが問題の色設定だということになる。

0 0 0.09 0 K
0.9 0 0.02 0 k

 これでシアンだけで作ったつもりの「実験用5.5J」には、イエロー9%の線のオブジェクトと、シアン90%×イエロー2%の塗りのオブジェクトが含まれていることが判明した(注5)。あとは、はじめにに考えた作戦通りIllustratorでそのオブジェクトを退治するだけだ。

 今回はイエローを退治したが、他の色でもやり方は同じだ。それぞれの色に対応した正規表現をあらかじめ用意しておくと、いざというとき重宝することまちがいなしだ。