Skip to main content
Participant
April 17, 2021
Answered

フォントサイズを変えずに検索、置換をしたい

  • April 17, 2021
  • 3 replies
  • 1288 views

4月からの税込表示に関する作業についての質問です。

500円、という表示を550円、にする際に

500を検索して550に置換するのですが

例えば500、よりも円のフォントサイズが小さい場合

そちらに引っ張られて550のフォントサイズも小さくなってしまいます。

今は置換したあとに文字スタイルで元の大きさに戻していますが

フォントサイズが変更されない置換方法があるのかどうか知りたいです。

    This topic has been closed for replies.
    Correct answer Ten A
    とても面倒なテキストエンジンの仕様なので回避策としてスクリプトを用意しています。
    以下のスクリプトを値組のテキストフレームを選択した状態で実行すると10%の内税に変更可能です。値組のテキストフレームは外税の数字1桁〜コンマ付きの5桁(四捨五入で切り上げられる5円〜999,999円の範囲)までをサポートします。
    var taxCalc = {
    tax : 10,
    base : 0,
    inTax : false,
    re : /(\d{1,3},)?(\d{1,3})/,
    exe : function (tg){
    if(tg.contents.match(this.re)!=null){
    var str = tg.contents.match(this.re)[0];
    var idx = tg.contents.indexOf(str);
    for (var i = idx+1;i<idx+str.length;i++) {
    tg.characters[idx+1].remove();
    }
    var num= this.rtTax(this.toN(str));
    tg.characters[idx].contents = this.toS(num);
    }
    },
    toS : function (n){
    if ((n+"").length<4) return String(n);
    var dl = ",";
    var str = String(n);
    var rslt = "";
    while (str.length>3){
    rslt = dl + str.substr (-3, 3) + rslt;
    str = str.slice(0,str.length-3);
    }
    rslt = str + rslt;
    if (rslt.substr(0,1)==",") 
    rslt = rslt.substr(1,rslt.length-1);
    return rslt;
    },
    toN : function(st){
    st = st.replace (/,/g, "");
    if (this.inTax) return Math.round(Number(st/(1+this.base/100)));
    else return Number(st);
    },
    rtTax : function (n){
    return Math.round(n*(1+this.tax/100));
    }
    }
    
    
    for (var i=0;i<app.selection.length;i++){
    taxCalc.exe(app.selection[i]);
    }
     
     
    ちょっと改造すると8%の内税からの変換も可能です。スクリプトを少し扱えるようになっておくと、このようなちょっとした定形処理を自動的に処理したりできるので学ぶ価値はあるかと思います。

     

    3 replies

    Ten A
    Community Expert
    Community Expert
    April 19, 2021

    基本的には先の投稿のバックに色がついた部分をテキストエディタにコピペして「任意の名前.jsx」という名前で保存します。それを以下のフォルダに移します。


    Mac アプリケーション/Adobe Illustrator CC/プリセット/ja_JP/スクリプト
    Win Program Files\Adobe\Adobe Illustrator CC\Presets\ja_JP\スクリプト

     

    Illustratorが立ち上がっている場合は一旦終了してから再度起動します。メニューを「ファイル→スクリプト」とたどると先程移動したスクリプトがリストアップされていますので、それを選べば実行されます。
    ここに登録されたスクリプトはアクションに登録可能ですから、アクション登録してショートカット付加という手も使えます。

    Participant
    April 19, 2021

    使い方まで丁寧に教えて頂きありがとうございます!

    やってみます(^^)

    Ten A
    Community Expert
    Ten ACommunity ExpertCorrect answer
    Community Expert
    April 18, 2021
    とても面倒なテキストエンジンの仕様なので回避策としてスクリプトを用意しています。
    以下のスクリプトを値組のテキストフレームを選択した状態で実行すると10%の内税に変更可能です。値組のテキストフレームは外税の数字1桁〜コンマ付きの5桁(四捨五入で切り上げられる5円〜999,999円の範囲)までをサポートします。
    var taxCalc = {
    tax : 10,
    base : 0,
    inTax : false,
    re : /(\d{1,3},)?(\d{1,3})/,
    exe : function (tg){
    if(tg.contents.match(this.re)!=null){
    var str = tg.contents.match(this.re)[0];
    var idx = tg.contents.indexOf(str);
    for (var i = idx+1;i<idx+str.length;i++) {
    tg.characters[idx+1].remove();
    }
    var num= this.rtTax(this.toN(str));
    tg.characters[idx].contents = this.toS(num);
    }
    },
    toS : function (n){
    if ((n+"").length<4) return String(n);
    var dl = ",";
    var str = String(n);
    var rslt = "";
    while (str.length>3){
    rslt = dl + str.substr (-3, 3) + rslt;
    str = str.slice(0,str.length-3);
    }
    rslt = str + rslt;
    if (rslt.substr(0,1)==",") 
    rslt = rslt.substr(1,rslt.length-1);
    return rslt;
    },
    toN : function(st){
    st = st.replace (/,/g, "");
    if (this.inTax) return Math.round(Number(st/(1+this.base/100)));
    else return Number(st);
    },
    rtTax : function (n){
    return Math.round(n*(1+this.tax/100));
    }
    }
    
    
    for (var i=0;i<app.selection.length;i++){
    taxCalc.exe(app.selection[i]);
    }
     
     
    ちょっと改造すると8%の内税からの変換も可能です。スクリプトを少し扱えるようになっておくと、このようなちょっとした定形処理を自動的に処理したりできるので学ぶ価値はあるかと思います。

     

    Participant
    April 19, 2021

    ご回答いただきありがとうございます!

    ソフトのシステムだけでは解決出来ない問題のようですね。

    スクリプトまで教えていただき感謝です。

    こういった知識には本当に疎いのでまずは使い方から調べてみます。

    ありがとうございました(^^)

    silk-m
    Community Expert
    Community Expert
    April 17, 2021

    古いバージョンでも同じことになりますから、見過ごされているんでしょうね。

    その場合なら「50」を検索して「55」に置換でいいのですが、そんなに都合良くはないでしょうね。

    --Susumu Iwasaki
    Participant
    April 18, 2021

    ご回答いただきありがとうございます。

    古いバージョンからそうなのですね。

    それならそういう仕様ということでしょうね。

     

    「50」を検索して「55」に置換、なるほど!

    一の位が変わらない場合に使えそうです!

    今度試してみます。ありがとうございます(^^)