行頭の数文字だけ色を変える(1)

行頭の1文字だけ色を変えるのであれば手間はかかりませんが、複数のブロックや行頭の4文字分だけ色を買えたい場合には結構な手間になってしまいます。そんな時はスクリプトを使えば、あっさりできます。以下のサンプルは行頭(段落)の先頭4文字だけ色を変えます。等幅フォントであれば先頭の文字が帯のような感じになります。使い方ですが、先頭の色を変更したいテキストブロックを選択してからスクリプトを実行します。

count = 4; // 先頭4文字だけ色を変える
textColor = new CMYKColor();
textColor.cyan = 0;
textColor.magenta = 100;
textColor.yellow = 0;
textColor.black = 0;

selObj = activeDocument.selection;
for (i=0; i<selObj.length; i++)
{
for (j=0; j<selObj[i].paragraphs.length; j++)
{
for (k=0; k<count; k++)
{
try { selObj[i].paragraphs[j].characters[k].fillColor = textColor; }
catch(e){ }
}
}
}


色を変更する文字数を変えるには先頭の行の数値を変更してください。この値が文字数を示しています。

count = 4

また、文字の色を変更するには以下の数値を変更してください。CMYKでの指定になります。

textColor.cyan = 0;
textColor.magenta = 100;
textColor.yellow = 0;
textColor.black = 0;


先頭ではなく末尾の文字の色を変更することもできます。これは以下のスクリプトになります。末尾から色を変更していく処理に変更しただけです。文字数や色の変更は上記のスクリプトと同じ箇所を修正してください。

count = 4; // 末尾4文字だけ色を変える
textColor = new CMYKColor();
textColor.cyan = 0;
textColor.magenta = 100;
textColor.yellow = 0;
textColor.black = 0;

selObj = activeDocument.selection;
for (i=0; i<selObj.length; i++)
{
for (j=0; j<selObj[i].paragraphs.length; j++)
{
len = selObj[i].paragraphs[j].characters.length;
for (k=len-1; k>len-1-count; k--)
{
try { selObj[i].paragraphs[j].characters[k].fillColor = textColor; }
catch(e){ }
}
}
}


最後におまけですが、文字の色を交互に指定していくスクリプトです。手作業でやると大変ですがスクリプトなら簡単です。

tempColor1 = new CMYKColor();
tempColor1.cyan = 0;
tempColor1.magenta = 100;
tempColor1.yellow = 0;
tempColor1.black = 0;
tempColor2 = new CMYKColor();
tempColor2.cyan = 100;
tempColor2.magenta = 0;
tempColor2.yellow = 0;
tempColor2.black = 0;
textColor = [tempColor1, tempColor2];
selObj = activeDocument.selection;
for (i=0; i<selObj.length; i++)
{
for (j=0; j<selObj[i].paragraphs.length; j++)
{
for (k=0; k<selObj[i].paragraphs[j].characters.length; k++)
{
selObj[i].paragraphs[j].characters[k].fillColor = textColor[k &1];
}
}
}


実際にはCMYKやRGBで指定されても困る、スウォッチで指定できないと駄目ということもあるでしょう。




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