文字の処理2(カラー)

使われている書体一覧よりも特定の書体以外が使われていたら警告を出すスクリプトは以下のようになります。

check = [ "[TextFont HiraKakuPro-W6]",
"[TextFont Times-Roman]"];

function checkErrorFont(fnt)
{
var i;
for (i=0; i<check.length; i++)
{
if (check[i] == fnt) return false;
}
return true;
}

function checkFont(fnt)
{
var i;
for (i=0; i<total; i++)
{
if (errFont[i] == fnt) return false;
}
return true;
}

errFont = new Array();
CR = String.fromCharCode(13);
total = 0;

sel = activeDocument.selection;
for (j=0; j<sel.length; j++)
{
selObj = sel[j];
for (i=0; i<selObj.textSelection[0].characters.length; i++)
{
fntName = selObj.textSelection[0].characters[i].textFont;
if (checkErrorFont(fntName))
{
if (checkFont(fntName)) errFont[total++] = fntName;
}
}
}

txt = "エラー書体の総数:"+total+CR;
for (i=0; i<errFont.length; i++)
{
txt += errFont[i] + CR;
}
resultRectObj = activeDocument.textFrames.add();
resultRectObj.top = 0;
resultRectObj.left = 0;
resultRectObj.contents = txt;


 それでは次に文字のカラーを読み出すスクリプトです。これはCMYKモードで動作するものです。テキストブロックを選択すると、選択されたテキストブロック内の文字の塗りのCMYKの値を表示します。

CR = String.fromCharCode(13);
sel = activeDocument.selection;
selObj = sel[0];
for (i=0; i<selObj.textSelection[0].characters.length; i++)
{
cmykColor = selObj.textSelection[0].characters[i].fillColor;
c = cmykColor.cyan;
m = cmykColor.magenta;
y = cmykColor.yellow;
k = cmykColor.black;
alert("C:"+c+CR+"M:"+m+CR+"Y:"+y+CR+"K:"+k);
}

 実際に表示してみると、カラーパレットで表示されている値と違うことが分かります。スクリプトで表示すると、より細かく値が表示されています。
 カラーを表示するだけでは役に立たないので、特定の文字の場合のみ色を変更するスクリプトが以下のものです。選択されたテキストブロック内に半角数字の0〜9がある場合に、暗い緑色に色を変更します。

colObj = new CMYKColor();
colObj.cyan = 100;
colObj.magenta = 10;
colObj.yellow = 100;
colObj.black = 20;

repStr = "0123456789";
sel = activeDocument.selection;
for (j=0; j<sel.length; j++)
{
selObj = sel[j];
for (i=0; i<selObj.textSelection[0].characters.length; i++)
{
c = selObj.textSelection[0].characters[i].contents;
if (repStr.indexOf(c) > -1)
{
selObj.textSelection[0].characters[i].fillColor = colObj;
}
}
}

 2行目から5行目までが色の値を設定している部分です。CMYKの値ですが0〜100の値になり、単位はパーセントになります。50であれば50%、85ならば85%となります。repStrの部分がカラーを変更する文字になります。ここに色を変更したい文字を指定します。
 CMYKでなくRGBで指定する場合には以下のようになります。

colObj = new RGBColor();
colObj.red = 100;
colObj.green = 128;
colObj.blue = 255;

repStr = "0123456789";
sel = activeDocument.selection;
for (j=0; j<sel.length; j++)
{
selObj = sel[j];
for (i=0; i<selObj.textSelection[0].characters.length; i++)
{
c = selObj.textSelection[0].characters[i].contents;
if (repStr.indexOf(c) > -1)
{
selObj.textSelection[0].characters[i].fillColor = colObj;
}
}
}

違うのは先頭のカラー設定の部分です。RGBの場合はred、green、blueに0〜255までの値を設定します。グレーカラーで指定する場合には先頭のカラー設定の部分をGrayColorに変更し、grayに0〜100までの値(単位はパーセント)を設定します。実際のスクリプトは以下のようになります。

colObj = new GrayColor();
colObj.gray = 75;

repStr = "0123456789";
sel = activeDocument.selection;
for (j=0; j<sel.length; j++)
{
selObj = sel[j];
for (i=0; i<selObj.textSelection[0].characters.length; i++)
{
c = selObj.textSelection[0].characters[i].contents;
if (repStr.indexOf(c) > -1)
{
selObj.textSelection[0].characters[i].fillColor = colObj;
}
}
}



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