Adobe Illustrator CS4〜CC編 半角カナ←→全角カナ変換

Illustratorではテキストフレーム内にある全角カナを、半角カナに変換することが手軽にはできません。半角カナから全角カナへの変換も同様です。
一文字ずつ検索・置換処理する方法もありますが、さすがにこれでは手間がかかります。

そこで、スクリプトを使ってまとめて変換すると楽です。ただし、今回のスクリプトは文字のスタイルは解除されてしまいますので注意してください。

まずは、選択した複数のテキストフレーム内の全角カナを半角カナに変換するスクリプトです。


// 選択したテキストフレームの文字を全角カナから半角へ
for(var i=0; i<app.activeDocument.selection.length; i++){
var text = app.activeDocument.selection[i].contents;
app.activeDocument.selection[i].contents = toHankaku(text);
}
function toHankaku(srcText){
var han = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッ、。ー「」゙゚";
var zen = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホ";
zen+= "マミムメモヤユヨラリルレロワヲンァィゥェォャュョッ、。ー「」";
zen+= "     ガギグゲゴザジズゼゾダヂヅデド     バビブベボ";
zen+= "                              ";
zen+= "                         パピプペポ";
zen+= "                             ";
for (var i=0,str=""; i<srcText.length; i++){
var c = srcText.charAt(i);
var n = zen.indexOf(c,0);
if ((n >= 0) && (c != " ")){
  if (n > 60){
if (n > 120){
c = han.charAt(n-120);
c = c + "゚";
}else{
c = han.charAt(n-60);
c = c + "゙";
}
}else{
c = han.charAt(n);
}
}
str += c;
}
return str;
}
次に、半角カナを全角カナに変換するスクリプトです。半角カナの濁点などの処理も行っています。ただし「ヴ」のような場合は変換しません。「ガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ」だけが対象です。
// 選択したテキストフレームの文字を半角カナから全角へ
for(var i=0; i<app.activeDocument.selection.length; i++){
var text = app.activeDocument.selection[i].contents;
app.activeDocument.selection[i].contents = toZenkaku(text);
}
function toZenkaku(srcText){
var txt = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッ、。ー「」゙゚";
var zen = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホ";
zen+= "マミムメモヤユヨラリルレロワヲンァィゥェォャュョッ、。ー「」";
zen+= "     ガギグゲゴザジズゼゾダヂヅデド     バビブベボ";
zen+= "                              ";
zen+= "                         パピプペポ";
zen+= "                             ";
for (var i=0,str=""; i<srcText.length; i++){
var c = srcText.charAt(i);
var cnext = srcText.charAt(i+1);
var n = txt.indexOf(c,0);
var nnext = txt.indexOf(cnext,0);
var flag = false;
if (n >= 0){
if ((nnext == 60) && (n < 56)){ // 濁点の場合
c = zen.charAt(n+60);
i++;
flag = true;
}
if ((nnext == 61) && (n < 56)){ // 半濁点の場合
c = zen.charAt(n+120);
i++;
flag = true;
}
if (!flag){ c = zen.charAt(n); }
}
if ((n != 60) && (n != 61)){ str += c; }
}
return str;
}

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