DTP駆け込み寺

[ 返信 ]

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

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

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

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

良い情報があれば教えて下さい。よろしくお願いします。

きよし 2007/07/30 11:17:40
Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC)

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

001

あなたの環境によってやり方は変わると思いますが・・・

匿名 2007/07/30 11:47:58
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/419.2.1 (KHTML, like Gecko) Safari/419.3

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

002

言葉足らずですみません。
当方、G5、MacOSX10.4.10、イラレCS2で作業をしております。

きよし 2007/07/30 12:53:28
Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC)

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

003

書式メニュー → フォント検索 → 置換

こうゆうこと?

こよし 2007/08/01 12:39:22
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/419.2.1 (KHTML, like Gecko) Safari/419.3

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

004

例えば、外字フォントを使う場合です。
「250A」「500A」「800A」というものがあったとして、「A」の部分だけを一括で外字フォントに変えたいということなのです。

きよし 2007/08/01 16:40:40
Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC)

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

005

JavaScriptを使う。
URL http://www.openspc2.org/book/IllustratorCS/
の以下の2つの記事のスクリプトを組み合わせればいいかも、です。

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

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

ドキュメントのオブジェクトを総当たりし、画像かパスかテキストかその種類を判断させたり、テキストを配列に読み込んで変換したり、あまりややこしいとScriptが固まった感じになることが多いんだけど、上記の組み合わせだと選択したテキストのみ処理するんで、いいんじゃないかな。
※CS2のほうは、サンプル記事がなかったような。

ぷり 2007/08/01 17:22:46
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/312.8.1 (KHTML, like Gecko) Safari/312.6

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

006

ご回答ありがとうございます。
参考にさせて頂きます。

きよし 2007/08/03 14:52:44
Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC)

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

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("テキストが選択されていません。");
}
}

ぷり 2007/08/04 03:16:07
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/419.2.1 (KHTML, like Gecko) Safari/419.3

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

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("テキストが選択されていません。");
}
}

ぷり 2007/8/4 3:39
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/419.2.1 (KHTML, like Gecko) Safari/419.3

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

9

あれ? 最初はTABでインデント入れて、二度目は半角スペース。
両方食われたね。(恥)

ぷり 2007/8/4 3:41
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/419.2.1 (KHTML, like Gecko) Safari/419.3

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

10

バグ発見。
変換する文字、文字列がテキストの最後尾にある場合の不具合を解消しました。っていうか、まるで考慮にいれてませんでした。

//指定文字列のフォントを変換するスクリプト
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("テキストが選択されていません。");
}
}

ぷり 2007/8/5 2:09
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/419.2.1 (KHTML, like Gecko) Safari/419.3

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

11

ゴメン、これで最後。
僕としてはフォントの置換ってあんまり実用性を感じないんですよ。
スクリプトをばんばん貼付けて迷惑行為になってしまったんで、そのお詫びを込めて、フォントの置換じゃなくて文字スタイルを適用する応用板を貼付けて終わりにします。…ごめんなさい。

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

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("テキストが選択されていません。");
}
}

ぷり 2007/8/5 2:21
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/419.2.1 (KHTML, like Gecko) Safari/419.3

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

12

ありがとうございます。
参考にさせていただきます。

きよし 2007/8/6 18:11
Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC)
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

[3144] 旧掲示板 (2007/07/30 Mon 11:17)

  1. [3144] イラレCS2での文字列の一括置換について 旧掲示板 2007/07/30 11:17