:note

選択部分の文字コードをずらしてみる

InDesignでテキスト選択部分の文字コードの数値をずらしてみる。もちろん実用性はあまりないです。ちなみに一見可逆的変換の様に思えますが、制御文字類は+1して-1しても元に戻らないみたい。とりあえず改行だけ除外しています。

選択部分の文字コードをずらしてみる /images/2010/09/742-shift_char_code.jpg
選択部分の文字コードをずらしてみる /images/2010/09/743-shift_char_code_table.jpg

//選択部分の文字コードをずらす。(改行は除く)
//パラメーター:文字コードのずらし量を設定
var n= 1;
if(app.documents.length > 0 && app.selection.length > 0){
  main(n);
}
function main (n){
  var selObj=app.selection[0];
  switch(selObj.constructor.name){
    case "Character":
    case "Word":
    case "TextStyleRange":
    case "Line":
    case "Text":
    case "Paragraph":
    case "TextColumn": shiftCharCode (selObj, n); break;
    case "Table":
    case "Cell": shiftEachTable (selObj, n); break;
  }
}
function shiftCharCode (selObj, n){
  var convArr=new Array();
  for(var i=0, L=selObj.contents.length; i < L; i++){
    //改行は除外
    if(selObj.contents.charCodeAt (i)!=13){
      var charConv=(selObj.contents.charCodeAt (i)+n).toString(16);
      var convChar=String.fromCharCode(parseInt("0x"+charConv));
      //$.writeln(convChar);
      convArr.push(convChar);
    }
    else{
      convArr.push(selObj.contents.charAt(i));
    }
  }
  selObj.contents=convArr.toString().replace(/\,/g,"");
}
function shiftEachTable(selObj, n){
  var cellObj=selObj.cells;
  for(var ii=0, LL=cellObj.length; ii < LL; ii++){
    shiftCharCode (cellObj[ii].texts[0], n);
  }
}
 
comments powered by Disqus
back to top