クリエイター手抜きプロジェクト[322]Illustrator CS3〜6編 文字と書体を同時に置換する
── 古籏一浩 ──

投稿:  著者:


今回は、Illustratorのドキュメントで選択されたテキストの置換処理です。単純に文字だけを置換するだけでなく、同時に書体も置換します。

とはいっても、いくつか制限があります。ひとつは置換前と置換後の文字数が1文字に限定されていることです。また、置換後の文字と置換前の文字で同じものがあるとうまくいきません。つまり、

------------------------
置換前 置換後
------------------------
A Z
B D
C E
------------------------

はOKですが、以下のような置換は駄目です。

------------------------
置換前 置換後
------------------------
A B
B C
C D
------------------------

実際のプログラムは以下のようになります。





// 複数文字置換&フォント設定
var data = [
{ src : "日", dst : "S", font: "Optima-Bold" },
{ src : "月", dst : "M", font: "Arial-Black" },
{ src : "火", dst : "T", font: "BookAntiqua-Bold" },
{ src : "水", dst : "W", font: "Garamond" },
{ src : "木", dst : "h", font: "Cochin" },
{ src : "金", dst : "F", font: "Courier" },
{ src : "土", dst : "a", font: "Futura-MediumItalic" } // 最後に,を付けないように!
];
var selObj = app.activeDocument.selection;
for(var i=0; i<selObj.length; i++){
var ptrList = [];
var fontList = [];
for(var j=0; j<data.length; j++){
var regSrc = new RegExp(data[j].src, "gm");
var repStr = data[j].dst;
var repFont = data[j].font;
selObj[i].contents = selObj[i].contents.replace(regSrc, function(str,ptr,allStr){
ptrList.push(ptr);
fontList.push(app.textFonts[repFont]); // 重要!!
return repStr;
});
}
// alert("フォントを置換します");
for(var p=0; p<ptrList.length; p++){
var fontName = fontList[p];
selObj[i].textRange.characters[ptrList[p]].characterAttributes.textFont = fontName;
}
}


置換前の文字と置換後の文字、書体を変更する場合は

{ src : "日", dst : "S", font: "Optima-Bold" },

が並んでいる部分を変更してください。srcが置換前の文字、dstが置換後の文字、fontが置換後のフォントになります。

Illustratorではapp.textFonts[]でフォントを読む処理が非同期のため、フォントの読み込みが間に合わない場合は正しく処理されません。もし、運悪くフォントが置換されない場合は

// alert("フォントを置換します");

の//を削除してください。


【古籏一浩】openspc@alpha.ocn.ne.jp
< http://www.openspc2.org/
>

最新のパソコンだけが優れているわけじゃないなあ、という事でネタで書いてみたのが、これ。

◎あなたがmz-700でプログラムを作った方がいい10の理由
< http://www.openspc2.org/mz700/reasons10/
>

せっかくHTML5のWebRTC(リアルタイムに映像等を処理)で防犯カメラのプログラムを作ったのに、逃亡犯捕まってしまって何とも。顔認識プログラムと組み合わせると結構使えるかも。

・毎度おなじみアスキーの連載
 「WebRTCでブラウザーが防犯カメラに!」
< http://ascii.jp/elem/000/000/702/702494/
>

・PDF構造解説
< http://www.amazon.co.jp/dp/4873115493
>

・10日で覚えるHTML5入門教室
< http://www.amazon.co.jp/dp/4798124184
>

・AndroidのためのHTML5本格アプリ開発
< http://www.amazon.co.jp/dp/4897978971/
>

・新標準HTML5 & CSS3辞典
< http://www.amazon.co.jp/dp/4844331752/
>

・改訂5版JavaScriptポケットリファレンス
< http://www.amazon.co.jp/dp/4774148199
>

・ハイビジョン映像素材集
< http://www.openspc2.org/HDTV/
>

・クリエイター手抜きプロジェクト
< http://www.openspc2.org/projectX/
>

・Adobe Illustrator CS3 + JavaScript 自動化サンプル集
< http://www.openspc2.org/book/PDF/Adobe_Illustrator_CS3_JavaScript_Book/
>
吉田印刷所の「印刷の泉」でも購入できるようになりました。