テキストのカラー処理

今回はカラーモードがCMYKの場合という前提です。文字の色は黒いけど、よく見たらC=M=Y=100%だった、ということがあります。このような場合にC=M=Y=0でK=100%に手作業で行っていたりするのは面倒です。幸いにしてアクションで色指定ができるのでスクリプトを使う必要はなさそうです。と思って実際にアクションに登録してみると文字全体の場合には有効ですが、文字ごとに色づけされている場合にはアクションではできません。
このような場合にはスクリプトを使うしかありません。以下が実際のスクリプトになります。色を変更したい文字ブロックを(複数)選択してから実行します。Illustrator CS2上からでもExtend Script Toolkit上からでも、どちらでも大丈夫です。

selObj = activeDocument.selection;
for (i=0; i<selObj.length; i++)
{
txt = selObj[i].textRange.characters;
for (j=0; j<txt.length; j++)
{
C = txt[j].characterAttributes.fillColor.cyan;
M = txt[j].characterAttributes.fillColor.magenta;
Y = txt[j].characterAttributes.fillColor.yellow;
BL = txt[j].characterAttributes.fillColor.black;
C = Math.floor(C);
M = Math.floor(M);
Y = Math.floor(Y);
if ((C = 100) && (C == M) && (M == Y))
{
C = M = Y = 0;
BL = 100;
}
txt[j].characterAttributes.fillColor.cyan = C;
txt[j].characterAttributes.fillColor.magenta = M;
txt[j].characterAttributes.fillColor.yellow = Y;
txt[j].characterAttributes.fillColor.black = BL;
}
}

逆に黒(K)が100%の場合にC=M=Y=100にしたい場合には

if ((C = 100) && (C == M) && (M == Y))
{
C = M = Y = 0;
BL = 100;
}

if (BL = 100)
{
C = M = Y = 100;
BL = 0;
}

に変更します。条件式さえ変えれば特定の色の場合のみ、他の色に変更することもできます。
もう1つ、おまけで色を10%刻みにするスクリプトを載せておきます。10%刻みにしたいテキストをブロックごと(複数)選択してから実行します。

selObj = activeDocument.selection;
for (i=0; i<selObj.length; i++)
{
txt = selObj[i].textRange.characters;
for (j=0; j<txt.length; j++)
{
C = txt[j].characterAttributes.fillColor.cyan;
M = txt[j].characterAttributes.fillColor.magenta;
Y = txt[j].characterAttributes.fillColor.yellow;
BL = txt[j].characterAttributes.fillColor.black;
C = Math.floor(C / 10) * 10;
M = Math.floor(M / 10) * 10;
Y = Math.floor(Y / 10) * 10;
BL = Math.floor(BL / 10) * 10;
txt[j].characterAttributes.fillColor.cyan = C;
txt[j].characterAttributes.fillColor.magenta = M;
txt[j].characterAttributes.fillColor.yellow = Y;
txt[j].characterAttributes.fillColor.black = BL;
}
}



[サンプルをダウンロード]