4 返信 最新の回答 日時: Dec 3, 2007 2:30 PM ユーザー:(by鴨)

    半角数字を等幅半角字形に変換

    Level 1
      ドキュメント内の半角数字を等幅半角字形に変換するASを作ったのですが、

      tell application "Adobe InDesign CS2_J"
      activate
      tell document 1
      set CNT to count of every text frame
      repeat with i from 1 to CNT
      tell text frame i
      tell every character
      set glyph form to monospaced half width form
      end tell
      end tell
      end repeat
      end tell
      end tell

      これをJSやVBSに書き換えるとどのように記述するのでしょうか?
      “every”のところが良くわかりません。
      よろしくお願い致します。

      ちなみにVBSで“monospaced half width form”に該当するIDは
      “1247897453”のようです。JSはわかりません。

      (このスクリプトだと表組内は拾ってこないのでまだまだ改良が必要ですが)
        • 1. Re: 半角数字を等幅半角字形に変換
          Level 1
          あ……、欧文や約物も半角になってしまう……
          • 2. Re: 半角数字を等幅半角字形に変換
            Level 1
            >これをJSやVBSに書き換えるとどのように記述するのでしょうか?
            >“every”のところが良くわかりません。

            JSの場合だと、everyItem()を使うことになるかと思います。
            こんな感じ。
            app.activeDocument.textFrames.everyItem().characters.everyItem().glyphForm = AlternateGlyphForms.monospacedHalfWidthForm;

            ただ、これだと等幅半角字形をもつ全ての文字(仮名なども含む)を等幅半角字形にしていしまうので、自分ならば
            1.検索search()を使って「数字("^9")」を選び出し
            2.「半角数字」の範囲の文字コードならば、「等幅半角字形」にする
            という形にします。

            あと、表組内もそうですが、Document.textFramesだと、Document直下のテキストフレームだけで、インラインやアンカー付きオブジェクト化されていたり、グループ化さ れているテキストフレームは含まれないので、なおのこと検索を使うべきかと思います。
            • 3. Re: 半角数字を等幅半角字形に変換
              Level 1
              お返事ありがとうございます。
              VBSで以下のようにしました。

              Set myInDesign = CreateObject("InDesign.Application.CS2_J")
              Set mySearch = myInDesign.ActiveDocument.Search ("0", true, true, false, true)
              For myCounter = 1 To mySearch.Count
              mySearch(myCounter).GlyphForm = 1247897453
              Next

              同様に9まで繰り返します。
              あんまりスマートじゃないけど変換はできてるみたいです。
              • 4. Re: 半角数字を等幅半角字形に変換
                Level 1
                期待通りに動けば問題ないと思います。<br />(CS2用の)JSだとこんな感じですか。<br /><br />app.findPreferences = NothingEnum.nothing;//検索設定のクリア<br />app.changePreferences = NothingEnum.nothing;//置換設定のクリア<br />var HitList = app.activeDocument.search("^9");//数字を検索<br />for (var i=0;i<HitList.length;i++){<br />     if ("0"<=HitList[i].contents && HitList[i].contents<="9"){<br />          HitList[i].glyphForm = AlternateGlyphForms.monospacedHalfWidthForm; <br />     }<br />}