漢字と仮名の割合を調べる (Photoshop, Illustrator, AfterEffects, InDesign CS3/CS4編)

今回は漢字と仮名の割合を調べるスクリプトです。インターネットで漢字と仮名の文章中の割合は、どのくらいがよいのか調べると、漢字が3割程度で残りが仮名だそうです。

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1221050887
http://www.j-tokkyo.com/2000/H04H/JP2000-031920.shtml
(【0015】の部分)

ということで、以下のスクリプトが文章中に漢字と仮名がどのくらいあるか調べるものです。
実行する前に、あらかじめテキストフレーム/テキストレイヤー/テキストブロックを選択してください。
ちなみに、このスクリプトは「Photoshop, InDesign, Illustrator, AfterEffects」共通で実行できます。アプリケーションごとに一部処理が違うのですが、アプリケーション別に対処して動作するようにしています(この連載始まってから初めてのパターン)。
4つのアプリケーションで動作するスクリプトを作成する人は、まずいないでしょう。でも、そういうスクリプトを作成する際のヒントにでもなればよいかと思います。

function kkpChecker(txt){
var kanji = 0;
var kana = 0;
for(i=0; i<txt.length; i++){
var p = txt.charAt(i);
var f1 = p.match(/[ぁ-ん|ァ-ン]/g);
var f2 = p.match(/[一-龠|々]/g);
if (f1 != null) kana = kana + 1;
if (f2 != null) kanji = kanji + 1;
}
var per1 = ((kana / txt.length) * 100).toFixed(2);
var per2 = ((kanji / txt.length) * 100).toFixed(2);
alert("仮名の割合:"+per1+"%/漢字の割合:"+per2+"%");
}
var sel, ap = app.name;
if (ap && app.name.indexOf("InDesign") > -1) { // Adobe InDesignの場合
sel = app.activeDocument.selection[0].parentStory; // 最初に選択したテキストブロックのみ対象
kkpChecker(sel.contents);
}
if (ap &&app.name.indexOf("Illustrator") > -1) { // Adobe Illustratorの場合
sel = app.activeDocument.selection[0]; // 最初に選択したテキストブロックのみ対象
kkpChecker(sel.contents);
}
if (ap &&app.name.indexOf("Photoshop") > -1) { // Adobe Photoshopの場合
sel = app.activeDocument.activeLayer.textItem; // アクティブなテキストレイヤーのみ
kkpChecker(sel.contents);
}
if(app.watchFolder) { // Adobe AfterEffectsの場合
sel = app.project.activeItem.selectedLayers[0]; // アクティブなレイヤーのみ
kkpChecker(sel.sourceText.value.toString());
}

 

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