忍者ブログ

ぼんぷろぐ

InDesign、イラレ、フォトショ(CS6 Win)の勉強中。。。(旧まとめいみブログ)

[イラレ]
全角英数←→半角英数を変換するイラレスクリプト

選択物の中の全角英数を半角英数にするスクリプトと、その逆の2点セットです。

いやこんなものとっくに誰かが作ってると思うんですが、これを使ったテキストの複数選択に対応したものが欲しかったので自分で書いてみました。たとえば「2文字以上の数字を半角にする」などという操作も正規表現検索選択との合わせ技で柔軟にできるわけです。

[ダウンロード]

以下ソース(全角→半角の方)

(function(){

var sel=app.selection;
var selTexts=[];
if (sel.constructor.name=="TextRange") {
    selTexts.push(sel)
} else {
    (function (items){
        for (var i=0;i<items.length;i++){
            switch (items[i].constructor.name){
                case "TextRange":
                    selTexts.push(items[i])
                    break;
                case "TextFrame":
                    if (!lockedOrHidden(items[i])) selTexts=selTexts.concat(items[i].textSelection);
                    break;
                case "GroupItem":
                    if (!lockedOrHidden(items[i])) arguments.callee(items[i].pageItems);
                    break;
            }
        }
    })(sel);
}

for (var i=0;i<selTexts.length;i++){
    var str=selTexts[i].contents;
    var offset=selTexts[i].characterOffset;
    var c=selTexts[i].characters[0];
    var n,s;
    for (var j=0;j<str.length;j++){
        n=str.charCodeAt(j);
        s="";
        if (n==0x3000) s=" ";
        else if (0xFF01<=n && n<=0xFF5E) s=String.fromCharCode(n-0xFEE0);
        if (s!=="") {
            c.characterOffset=offset+j-1;
            c.contents=s;
        }
    }
}

function lockedOrHidden(pageItem){
    return pageItem.locked || pageItem.hidden || pageItem.layer.locked || pageItem.layer.hidden;
}
})();
PR

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

編集可能かどうか

pageItemにはそのものずばりのeditableというプロパティがあるので,functionを作らなくてもOKです

Re:編集可能かどうか

ナサケさんありがとうございます
!lockedOrHidden(items[i])のところ、items[i].editableでいいんですね。InDesignにも欲しいプロパティです

  • あるふぁ(仮)
  • 2016/05/30(Mon.)

すばらしい

感動しました。
素敵すぎます。

プロフィール

あるふぁ(仮)
InDesignで新聞組版のようなことをしてる人です。

InDesignスクリプトについて

つくったInDesignスクリプトのまとめ

twitter

フリーエリア