特定の文字列のみ色を変更する

■プログラム説明(ソースコード説明)
 変更する文字列の色を定義します。サンプルではCMYKカラーで指定し赤色にしています。変数srchTextに色を変える文字列を入れます。ここではEPSという文字列を指定します。ドキュメントで現在選択されているオブジェクトはselection配列に入っていますので、この配列の長さだけ繰り返し処理を行います。選択されたテキストのcontentsプロパティをindexOf()を使って一致する文字列があるかどうか調べます。一致した場合はtextRange()を使ってテキストオブジェクトを作成しcharacters配列に入っている文字情報のfillColorプロパティに変更する文字の色を指定します。文字列がない場合にはbreakを使って検索処理を中止しwhileループから抜けます。

■ソースコード
txtColor = new CMYKColor();
txtColor.cyan = 0;
txtColor.magenta = 100;
txtColor.yellow = 100;
txtColor.black = 0;
cColor = new Color();
cColor.cmyk = txtColor;

srchText = "EPS";
sel = activeDocument.selection;
for (i=0; i<sel.length; i++)
{
ptr = 0;
while (ptr < sel[i].contents.length)
{
ptr = sel[i].contents.indexOf(srchText,ptr);
if (ptr != -1)
{
txtRange = sel[i].textRange();
for (k=ptr; k<ptr+srchText.length; k++)
{
txtRange.characters[k].fillColor = cColor;
}
ptr = ptr + srchText.length;
}else{
break;
}
}
}


■使い方
1:色を変更するテキストをブロックごと選択します。
2:ファイルメニューからスクリプトを実行します。
3:EPSという文字のみ色が変わります。


■ポイント
 色でなくベースラインシフトなど他の処理を行いたい場合にはcharactersオブジェクトの以下のプロパティを操作してください。

baselineShift ベースラインシフト
contents 文字
direction 文字方向
fillColor 塗りの色
filled 塗りつぶし状態(true、false)
font 書体/フォント
kerning カーニング
leading リーディング
scaling 文字比率
size 文字サイズ
strokeColor 線の色
stroked 線あり/なし(true、false)
strokeWidth 線幅
tracking トラッキング

■実際のスクリプトをダウンロード(sample.js.zip)