選択物の中の全角英数を半角英数にするスクリプトと、その逆の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;
}
})();