今回も、常用漢字以外が使われているかどうか調べるスクリプトです。Photoshop CS以降で動作するようになっています。来年あたりに出ると思われるCS5でも多分、動くでしょう。
Photoshopの場合、イラストレータと違いスクリプトでは手軽に文字を処理できません。特に1文字ごと処理することが難しい(Scripting Listenerを使って記録すれば不可能ではない)ため、仕方なく常用漢字以外を■に置き換えるという方法をとっています。
まず、前回同様に以下のサイトから常用漢字のファイルをダウンロードしデスクトップなど分かりやすいところに保存してください。
●常用漢字データ
< http://www.openspc2.org/projectX/data/jyouyoukanjidata.txt
>
Photoshopの場合、イラストレータと違いスクリプトでは手軽に文字を処理できません。特に1文字ごと処理することが難しい(Scripting Listenerを使って記録すれば不可能ではない)ため、仕方なく常用漢字以外を■に置き換えるという方法をとっています。
まず、前回同様に以下のサイトから常用漢字のファイルをダウンロードしデスクトップなど分かりやすいところに保存してください。
●常用漢字データ
< http://www.openspc2.org/projectX/data/jyouyoukanjidata.txt
>
最初のスクリプトは単純に常用漢字以外が使われているかどうかを調べるものです。常用漢字以外があれば、ダイアログを表示します。
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.activeLayer; // 最初に選択したテキストブロックのみ対象
kanjiChecker(sel.textItem.contents);
}else{
alert("ファイルが開けませんでした");
}
}
上記のスクリプトでは、常用漢字以外が多数含まれている場合に不便なのと、どこが常用漢字なのかわかりません。
そこで、常用漢字以外であれば■に文字を置換することで分かりやすくしたものが以下のスクリプトです。ただし、実行前に注意しておくことがあります。それは、文字の色などを1文字単位で設定していると、文字属性が失われてしまうということです。このため、文字属性を個別に設定する前にスクリプトを実行するようにしてください。
function kanjiChecker(txt){
for (var i=0; i<32; i++){
k += String.fromCharCode(i);
}
k += kanjidata;
var result = "";
for(i=0; i< txt.length; i++){
var p = k.indexOf(txt.charAt(i));
if (p < 0){
result += "■";
}else{
result += txt.charAt(i);
}
}
return result;
}
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.activeLayer.textItem; // 最初に選択したテキストブロックのみ対象
sel.contents = kanjiChecker(sel.contents);
}else{
alert("ファイルが開けませんでした");
}
}
【古籏一浩】openspc@po.shiojiri.ne.jp
< http://www.openspc2.org/
>
サンシャイン牧場、いきなり有料アイテムが。肥料が有料で、高い肥料ほど早く作物が育つ、と。金で時間を買うという仕組みの方向みたい。デコレーションアイテムよりいいのかもしれません。
毎度おなじみ(?)アスキーの連載もよろしく
【Yahoo! UI Library 3で驚きのアニメーションを作成】
< http://ascii.jp/elem/000/000/469/469234/
>
さりげなく、どこかで聞いたような感じのジョークも追加しました。
< http://www.openspc2.org/serif/index.html
>

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.activeLayer; // 最初に選択したテキストブロックのみ対象
kanjiChecker(sel.textItem.contents);
}else{
alert("ファイルが開けませんでした");
}
}
上記のスクリプトでは、常用漢字以外が多数含まれている場合に不便なのと、どこが常用漢字なのかわかりません。
そこで、常用漢字以外であれば■に文字を置換することで分かりやすくしたものが以下のスクリプトです。ただし、実行前に注意しておくことがあります。それは、文字の色などを1文字単位で設定していると、文字属性が失われてしまうということです。このため、文字属性を個別に設定する前にスクリプトを実行するようにしてください。
function kanjiChecker(txt){
for (var i=0; i<32; i++){
k += String.fromCharCode(i);
}
k += kanjidata;
var result = "";
for(i=0; i< txt.length; i++){
var p = k.indexOf(txt.charAt(i));
if (p < 0){
result += "■";
}else{
result += txt.charAt(i);
}
}
return result;
}
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.activeLayer.textItem; // 最初に選択したテキストブロックのみ対象
sel.contents = kanjiChecker(sel.contents);
}else{
alert("ファイルが開けませんでした");
}
}
【古籏一浩】openspc@po.shiojiri.ne.jp
< http://www.openspc2.org/
>
サンシャイン牧場、いきなり有料アイテムが。肥料が有料で、高い肥料ほど早く作物が育つ、と。金で時間を買うという仕組みの方向みたい。デコレーションアイテムよりいいのかもしれません。
毎度おなじみ(?)アスキーの連載もよろしく
【Yahoo! UI Library 3で驚きのアニメーションを作成】
< http://ascii.jp/elem/000/000/469/469234/
>
さりげなく、どこかで聞いたような感じのジョークも追加しました。
< http://www.openspc2.org/serif/index.html
>

- 改訂第4版 JavaScript ポケットリファレンス
- 技術評論社 2006-10-18
- おすすめ平均
実用的で分かり易い
JavaScriptを使ったプロジェクトのお供に是非
JavaScript仮免者以上の方へ
バランスの良いバイブル
中級者向けです。