常用漢字以外が使われているか調べる (Illustrator CS2/CS3/CS4編)

今回はイラストレーターのテキストブロック内に常用漢字以外が使われているかどうか調べるスクリプトです。
2009年10月時点での常用漢字は1945文字が示されています。普通の文章中では常用漢字以外が多く使われていますし、常用漢字かどうかは気にせず入力してしまっているでしょう。また、常用漢字は時代によって変わるため、追加される文字もあれば外される文字もあります。
今回は常用漢字を調べるスクリプトですが、調べる対象とする漢字は以下にあるファイルにまとめて記述してあります。このファイル内容を書き換えれば使ってはいけない記号や文字などを手軽にチェックすることができるという仕組みです。

●常用漢字データ
http://www.openspc2.org/projectX/data/jyouyoukanjidata.txt

まず、上記の常用漢字データ(テキストファイル)をダウンロードしてデスクトップなど分かりやすいところに保存してください。
準備はこれだけです。次にイラストレータで調べたいテキストブロックを1つ選択します。
あとは以下のスクリプトを実行させれば常用漢字以外が使われているかどうか調べてくれます。

function kanjiChecker(txt){
for (var i=0; i<32; i++){
k += String.fromCharCode(i);
}
k += kanjidata;
for(i=0; i<txt.length; i++){
var p = k.indexOf(txt.charAt(i));
if (p < 0){
alert((i+1)+"番目に常用漢字以外の漢字が含まれています。");
break; // 1文字でもあったら以後は処理しません
}
}
}
var kanjidata;
var filename = File.openDialog("常用漢字ファイルを指定してください");
if (filename){
var fileObj = new File(filename);
var flag = fileObj.open("r");
if (flag == true){
kanjidata = fileObj.read();
fileObj.close();
sel = app.activeDocument.selection[0]; // 最初に選択したテキストブロックのみ対象
kanjiChecker(sel.contents);
}else{
alert("ファイルが開けませんでした");
}
}

1文字でも常用漢字以外が見つかったら処理を停止しますが、連続して調べたいのであれば以下の一行を削除してください。

break; // 1文字でもあったら以後は処理しません

常用漢字以外がたくさん使われていると上記のスクリプトでは文字位置を示すだけなのでどれが常用漢字以外なのかわかりません。
そこで、常用漢字以外だったら文字サイズを大きくして示すスクリプトが以下になります。文字が入力/配置された直後に実行してチェックするのが無難です(文字サイズなどが変わってしまうため)。

function kanjiChecker(selObj){
for (var i=0; i<32; i++){
k += String.fromCharCode(i);
}
txt = selObj.contents;
k += kanjidata;
for(i=0; i<txt.length; i++){
var p = k.indexOf(txt.charAt(i));
if (p < 0){
selObj.characters[i].size = 24; // 24pt;
}
}
}
var kanjidata;
var filename = File.openDialog("常用漢字ファイルを指定してください");
if (filename){
var fileObj = new File(filename);
var flag = fileObj.open("r");
if (flag == true){
kanjidata = fileObj.read();
fileObj.close();
sel = app.activeDocument.selection[0]; // 最初に選択したテキストブロックのみ対象
kanjiChecker(sel);
}else{
alert("ファイルが開けませんでした");
}
}

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