イラレCS2での文字列の一括置換について

イラレCS2での文字列の一括置換についてです。

一定の文字列を他の文字列に一括で置換したり、一括で改行するなどのことは
「検索と置換」を使えば出来ますが、フォントの変更は出来ません。

一定の文字列を他のフォントに一括で置換する良い方法またはソフトなどはないでしょうか?

良い情報があれば教えて下さい。よろしくお願いします。
» 001
あなたの環境によってやり方は変わると思いますが・・・
» 002
言葉足らずですみません。
当方、G5、MacOSX10.4.10、イラレCS2で作業をしております。
» 003
書式メニュー → フォント検索 → 置換

こうゆうこと?
» 004
例えば、外字フォントを使う場合です。
「250A」「500A」「800A」というものがあったとして、「A」の部分だけを一括で外字フォントに変えたいということなのです。
» 005
JavaScriptを使う。
http://www.openspc2.org/book/IllustratorCS/
の以下の2つの記事のスクリプトを組み合わせればいいかも、です。

http://www.openspc2.org/book/IllustratorCS/easy/039/index.html

http://www.openspc2.org/book/IllustratorCS/hard/015/index.html

ドキュメントのオブジェクトを総当たりし、画像かパスかテキストかその種類を判断させたり、テキストを配列に読み込んで変換したり、あまりややこしいとScriptが固まった感じになることが多いんだけど、上記の組み合わせだと選択したテキストのみ処理するんで、いいんじゃないかな。
※CS2のほうは、サンプル記事がなかったような。
» 006
ご回答ありがとうございます。
参考にさせて頂きます。
» 007
一応、スクリプトの雛形を作ってみた。これを参考にするなり、手を加えるなりすればいいかも。
下記をテキストエディタにコピペして、.jsの拡張子をつけて試してください。
ただし、使用にあたっては自己責任で。

//指定文字列のフォントを変換するスクリプト
var myFont = app.textFonts.getByName("HiraKakuPro-W3"); //ここで置き換えるフォントを指定。フォント名は英語表記。
var myStr = "ABC"; //フォントを適用する文字、文字列を入れてね
var myStrCount = myStr.length;
var Counti = 0;

if ( app.documents.length > 0 )
{
var doc = app.activeDocument;
if ( doc.selection.length > 0 )
{
for ( i = 0; i < doc.selection.length; i++ )
{
myTextChr = doc.selection[i].characters;
for ( j = 0; j < myTextChr.length; j++ )
{
k = 0;
while ( myTextChr[j].contents == myStr[k] )
{

j++; k++;
if ( k == myStrCount )
{
l= myStrCount;
for (;0 < l; l-- ){myTextChr[j-l].textFont = myFont;Counti++;}
}
}

}
}
alert("終了しました。"+Counti+"箇所変換されました。");
} else {
alert("テキストが選択されていません。");
}
}
» 008
すみません、ただでさえ読みにくいのに、インデント(字下げ)が反映されてません。
ゴメン、修正版を貼付けます。
ちなみに、IllustratorCSで動作確認をしています。
エリアテキスト、ポイントテキストの両方OKです。
変換箇所のカウントを、文字列単位に改善しています。

//指定文字列のフォントを変換するスクリプト
var myFont = app.textFonts.getByName("HiraKakuPro-W3"); //ここで置き換えるフォントを指定
var myStr = "ABC"; //フォントを適用する文字列を入れてね
var myStrCount = myStr.length;
var Counti = 0;

if ( app.documents.length > 0 )
{
var doc = app.activeDocument;
if ( doc.selection.length > 0 )
{
for ( i = 0; i < doc.selection.length; i++ )
{
myTextChr = doc.selection[i].characters;
for ( j = 0; j < myTextChr.length; j++ )
{
k = 0;
while ( myTextChr[j].contents == myStr[k] )
{
j++; k++;
if ( k == myStrCount )
{
Counti++;
for (l= myStrCount;0 < l; l-- )myTextChr[j-l].textFont = myFont;
}
}
}
}
alert("終了しました。"+Counti+"箇所変換されました。");
} else {
alert("テキストが選択されていません。");
}
}
» 009
あれ? 最初はTABでインデント入れて、二度目は半角スペース。
両方食われたね。(恥)
» 010
バグ発見。
変換する文字、文字列がテキストの最後尾にある場合の不具合を解消しました。っていうか、まるで考慮にいれてませんでした。

//指定文字列のフォントを変換するスクリプト
var myFont = app.textFonts.getByName("HiraKakuPro-W3"); //ここで置き換えるフォントを指定
var myStr = "ABC"; //フォントを適用する文字列を入れてね
var myStrCount = myStr.length;
var Counti = 0;

if ( app.documents.length > 0 )
{
var doc = app.activeDocument;
if ( doc.selection.length > 0 )
{
for ( i = 0; i < doc.selection.length; i++ )
{
myTextChr = doc.selection[i].characters;
for ( j = 0; j < myTextChr.length; j++ )
{
k = 0;
while ( myTextChr[j].contents == myStr[k] )
{
j++; k++;
if ( k == myStrCount )
{
Counti++;
for (l= myStrCount;0 < l; l-- )myTextChr[j-l].textFont = myFont;
break;
}
}
}
}
alert("終了しました。"+Counti+"箇所変換されました。");
} else {
alert("テキストが選択されていません。");
}
}
» 011
ゴメン、これで最後。
僕としてはフォントの置換ってあんまり実用性を感じないんですよ。
スクリプトをばんばん貼付けて迷惑行為になってしまったんで、そのお詫びを込めて、フォントの置換じゃなくて文字スタイルを適用する応用板を貼付けて終わりにします。…ごめんなさい。

スクリプトの試し方の概要は、適用させたい文字スタイルを用意しておいて、”円スタイル”の部分にそのスタイル名を入れ、適用させる文字、文字列は冒頭の”円”と置き換えればいいいです。
チラシの価格表示で、「円」を文字スタイルでコントロールしたいってな時には便利かもしれません。

var myStr = "円"; //スタイルを適用する文字、文字列を指定
var myStrCount = myStr.length;
var Counti = 0;

if ( app.documents.length > 0 )
{
var doc = app.activeDocument;
myCharStyle = doc.characterStyles.getByName("円スタイル"); //適用する文字スタイルを指定
if ( doc.selection.length > 0 )
{
for ( i = 0; i < doc.selection.length; i++ )
{
myTextChr = doc.selection[i].characters;
for ( j = 0; j < myTextChr.length; j++ )
{
k = 0;
while ( myTextChr[j].contents == myStr[k] )
{
j++; k++;
if ( k == myStrCount )
{
Counti++;
for ( l= myStrCount; 0 < l; l-- ) myCharStyle.applyTo ( myTextChr[j-l], true );//trueでオーバーライド
break;
}
}
}
}
alert("終了しました。"+Counti+"箇所適用されました。");
} else {
alert("テキストが選択されていません。");
}
}
» 012
ありがとうございます。
参考にさせていただきます。

このページをシェア