文字の処理1(書体)

 英文字だけ違う書体にしたい、数字だけ文字サイズを少し大きくしたい場合に手作業でやると手間がかかって面倒です。そこでIllustrator CSで文字の処理を行うスクリプトをいくつか説明します。

 まず、テキストブロックを選択してから以下のスクリプトを実行すると選択したテキストブロックの先頭の文字のフォントがアラートダイアログに表示されます。

sel = activeDocument.selection;
alert(sel[0].textSelection[0].textFont);

 アラートダイアログでなくテキストとして残したい場合には以下のようにします。この場合は選択したテキストの内容がフォント名に入れ替わります。

sel = activeDocument.selection;
sel[0].contents = sel[0].textSelection[0].textFont;

 表示された書体名は[TextFont フォント名]となります。日本語書体の場合は日本語でなく英文字の名前になります。例えばヒラギノ角ゴW6であれば

[TextFont HiraKakuPro-W6]

となります。
次は特定の文字だけに書体を指定するスクリプトです。これは半角数字の0〜9までをArial Black書体にするものです。まず、最初にテキストブロックを1つ選択しておきます。選択したら以下のスクリプトを実行してみてください。

fntArialBlack = app.textFonts.getByName("Arial-Black");
repStr = "0123456789";
sel = activeDocument.selection;
selObj = sel[0];
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].textFont = fntArialBlack;
}
}

 実行すると数字だけがArial Blackの書体に変わります。書体名は先頭の行の"Arial-Black"を変更すれば任意の書体にできます。前にも書きましたが、日本語書体の場合は"ヒラギノ角ゴW3"などと指定せずに英文字で指定するようにしてください。数字のみでなく英文字または任意の1文字の書体を変えたい場合には2行目のrepStrで指定されている文字を変更してください。
 1つでなく複数のテキストブロックを選択して一括して処理したい場合は以下のようになります。

fntArialBlack = app.textFonts.getByName("Arial-Black");
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].textFont = fntArialBlack;
}
}
}


 書体を変更するだけでなく調べたい場合もあります。他の所で作成されたデータの場合、何らかの手違いやミスにより書体が違っているものが入ってしまう場合があります。以下のスクリプトでは選択されたテキストブロックで使われている書体を調べて、原点(左下)にテキストデータとして表示します。

function checkFont(fnt)
{
var i;
for (i=0; i<total; i++)
{
if (check[i] == fnt) return false;
}
return true;
}
check = 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 (checkFont(fntName)) check[total++] = fntName;
}
}

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


 保存する場合は文字コードはSHIFT JISにしてください。使われている書体一覧よりも特定の書体以外が使われていたら警告を出す方が良いかもしれません。これはスクリプトが長いので次回に掲載します。



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