2015-06-23T16:24:25+09:00 [Tue]
--> [無芸DTPツール]
indesign 1桁、2桁数字のみ文字種変換
description
作りかけ。
スタイルは破壊します。全テキストフレーム対象。
予定。
- 選択ストーリーとか選べるようにする。
- 桁数を指定できるようにする。
- スタイル維持は遅いっぽいのでスタイル破壊はまま。最初にやって下さい形式。
perlのtrって便利だったんだな……。
つかいかた。
最初にindesignの文字種変換で全ての数字をどちらかに統一。
zh=0 半角数字の海から一桁数字のみ全角に変更(横書き時、一桁数字を全角幅にしたい)
zh=1 全角数字の海から二桁数字のみ半角に変更(縦書き時、二桁数字を組文字にしたい)
var zh = 0;//[0=一桁数字のみ全角、1=2桁数字のみ半角] var zen_list = '0123456789'; var han_list = '0123456789'; var hl = han_list.length; var zen_han = {}; var regex; pageObj = app.activeDocument.pages; if(zh === 0){ regex = /([^0-9])([0-9]{1})(?![0-9])/g;//JSには後読みがないのでグループ化 for(i = 0; i < hl; i++){ zen_han[han_list[i]] = zen_list[i];//半角数字をキーにハッシュ的な何かにする } } else { regex = /([^0-9])([0-9]{2})(?![0-9])/g; for(i = 0; i < hl; i++){ zen_han[zen_list[i]] = han_list[i];//全角数字をキーにハッシュ的な何かにする } } for (j = 0; j < pageObj.length; j++){ for (k = 0; k < pageObj[j].textFrames.length; k++){ txt = pageObj[j].textFrames[k].contents; result = txt.replace(regex, repFunc); pageObj[j].textFrames[k].contents = result; } } function repFunc(){ var replist = arguments[2].split(''); var rpl = replist.length; var stx = arguments[1]; for(i = 0; i < rpl; i++){ key = (replist[i]); stx += (zen_han[key]); } return(stx); }