InDesign居残り補習室

どれだけ勉強しても上達しない管理人の、InDesign備忘録を中心に。たまにブックレビューなども。

スポンサーサイト  --/--/--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


[InDesign][JS]num_glyph 0.3にラジオボタンを追加してみた  2008/02/14

市川せうぞーさんのとても便利なInDesign CS3用JavaScriptのnum_glyph 0.3に、ひとつ処理を追加してみました。
一桁数字は半角中付にして、二桁以上は等幅半角にする。
横組専用です。
8つのラジオボタンはそのまま、9つ目のラジオボタンが追加した奴です。
9つのラジオボタンはそのまま、10個目のラジオボタンが追加した奴です。
動作確認はWindows XP Pro SP2でしかとっておりません。
ご利用は自己責任でお願いします。


以下2行は上記リンク先に同梱されているReadmeファイルの一部です。
> このツールを改造して配布することはできません。もし、ソースを改変して使用される場合は、あなたが制作者であり、わたくし(市川)は何等無関係であることをご承知ください。
> わたくし(市川)はこのツールのいかなる不具合についても、それを保全する義務および責任がありません。ご承知置きください。


ここのソースをコピーして利用した上での疑問点は、間違っても市川せうぞーさんに直接問い合わせることはおやめください。

では、追記から。



/*
num_glyph.jsx
(c)2007 www.seuzo.jp
選択テキストの数字字形を変更します。
2007.08.08 ver.0.1 AppleScript版プロトタイプ。
2007.09.18 ver.0.2 GUIをつけた。いろいろ処理を選べるようにした。JavaScriptで書き直し。
2007.09.21 ver.0.3 リストダイアログをやめて、ラジオボタンにした。
*/


////////////////////////////////////////////エラー処理
function myerror(mess) {
if (arguments.length > 0) { alert(mess); }
exit();
}


////////////////////////////////////////////ラジオダイアログ
/*
myTitle  ダイアログ(バー)のタイトル
myPrompt  メッセージ
myList   ラジオボタンに展開するリスト

result   選択したリスト番号
*/
function radioDialog(my_title, my_prompt, my_list){
 var my_dialog = app.dialogs.add({name:my_title, canCancel:true});
 with(my_dialog) {
  with(dialogColumns.add()) {
   // プロンプト
   staticTexts.add({staticLabel:my_prompt});
   with (borderPanels.add()) {
    var my_radio_group = radiobuttonGroups.add();
    with (my_radio_group) {
     for (var i = 0; i < my_list.length; i++){
      if (i == 0) {
       radiobuttonControls.add({staticLabel:my_list[i], checkedState:true});
      } else {
      radiobuttonControls.add({staticLabel:my_list[i]});
      }
     }
    }
   }
  }
 }


 if (my_dialog.show() == true) {
  var ans = my_radio_group.selectedButton;
  //正常にダイアログを片付ける
  my_dialog.destroy();
  //選択したアイテムの番号を返す
  return ans;
 } else {
  // ユーザが「キャンセル」をクリックしたので、メモリからダイアログボックスを削除
  my_dialog.destroy();
 }
}


////////////////////////////////////////////正規表現検
//正規表現で検索して、ヒットオブジェクトを返すだけ
function my_regex(my_range_obj, my_find_str, my_change_str) {
//検索の初期化
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
//検索オプション
app.findChangeGrepOptions.includeLockedLayersForFind = false;//ロックされたレイヤーをふくめるかどうか
app.findChangeGrepOptions.includeLockedStoriesForFind = false;//ロックされたストーリーを含めるかどうか
app.findChangeGrepOptions.includeHiddenLayers = false;//非表示レイヤーを含めるかどうか
app.findChangeGrepOptions.includeMasterPages = false;//マスターページを含めるかどうか
app.findChangeGrepOptions.includeFootnotes = false;//脚注を含めるかどうか
app.findChangeGrepOptions.kanaSensitive = true;//カナを区別するかどうか
app.findChangeGrepOptions.widthSensitive = true;//全角半角を区別するかどうか

app.findGrepPreferences.findWhat = my_find_str;//検索文字の設定
//app.changeGrepPreferences.changeTo = my_change_str;//置換文字の設定
return my_range_obj.findGrep();//検索の実行
}


////////////////////////////////////////////字形の一括変換
/*
my_obj  字形を変更したいテキストオブジェクト
my_gliph グリフフォーム(ex. AlternateGlyphForms.MONOSPACED_HALF_WIDTH_FORM;//半角字形
*/
function all_glyph_change(my_obj, my_gliph) {
 for (var i = 0; i < my_obj.length; i++) {
  my_obj[i].glyphForm = my_gliph;
 }
}


/////実行
////////////////まずは選択しているもののチェック
if (app.documents.length == 0) {myerror("ドキュメントが開かれていません")}
var mydocument = app.activeDocument;
if (mydocument.selection.length == 0) {myerror("テキストを選択してください")}
var myselection = mydocument.selection[0];
var myclass =myselection.reflect.name;
myclass = "Text, TextColumn, Story, Paragraph, Line, Word, Character".match(myclass);
if (myclass == null) {myerror("テキストを選択してください")}

////////////////処理の選択
var myList = ["すべてを標準字形にする",
"すべてを二分字形にする",
"すべてを三分字形にする",
"すべてを四分字形にする",
"2桁だけを二分字形にする",
"3桁だけを三分字形にする",
"4桁だけを四分字形にする",
"2桁を二分字形に、3桁を三分字形にする",
"2桁を二分字形に、3桁を三分字形、4桁を四分字形にする",
"【横組】1桁を二分字形中付に、2桁以上を二分字形にする"];
var ans_int = radioDialog("num_glyph", "数字の字形を変更します。処理を選択してください\n", myList);
//myList[ans_int];

////////////////検索の実行
var hit_obj = my_regex(myselection, "[0-9]+", "");

if (ans_int == 0) {//すべてを標準字形にする
 all_glyph_change(hit_obj, AlternateGlyphForms.NONE);
} else if (ans_int == 1) {//すべてを二分字形にする
 all_glyph_change(hit_obj, AlternateGlyphForms.MONOSPACED_HALF_WIDTH_FORM);
} else if (ans_int == 2) {//すべてを三分字形にする
 all_glyph_change(hit_obj, AlternateGlyphForms.THIRD_WIDTH_FORM);
} else if (ans_int == 3) {//すべてを四分字形にする
 all_glyph_change(hit_obj, AlternateGlyphForms.QUARTER_WIDTH_FORM);
} else if (ans_int == 4) {//2桁だけを二分字形にする
 for (var i = 0; i < hit_obj.length; i++) {
  if (hit_obj[i].contents.length == 2) {
   hit_obj[i].glyphForm = AlternateGlyphForms.MONOSPACED_HALF_WIDTH_FORM;
  }
 }
} else if (ans_int == 5) {//3桁だけを三分字形にする
 for (var i = 0; i < hit_obj.length; i++) {
  if (hit_obj[i].contents.length == 3) {
   hit_obj[i].glyphForm = AlternateGlyphForms.THIRD_WIDTH_FORM;
  }
 }
} else if (ans_int == 6) {//4桁だけを四分字形にする
 for (var i = 0; i < hit_obj.length; i++) {
  if (hit_obj[i].contents.length == 4) {
   hit_obj[i].glyphForm = AlternateGlyphForms.QUARTER_WIDTH_FORM;
  }
 }
} else if (ans_int == 7) {//2桁を二分字形に、3桁を三分字形にする
 for (var i = 0; i < hit_obj.length; i++) {
  if (hit_obj[i].contents.length == 2) {
   hit_obj[i].glyphForm = AlternateGlyphForms.MONOSPACED_HALF_WIDTH_FORM;
  } else if (hit_obj[i].contents.length == 3) {
   hit_obj[i].glyphForm = AlternateGlyphForms.THIRD_WIDTH_FORM;
  }
 }
} else if (ans_int == 8) {//2桁を二分字形に、3桁を三分字形、4桁を四分字形にする
 for (var i = 0; i < hit_obj.length; i++) {
  if (hit_obj[i].contents.length == 2) {
   hit_obj[i].glyphForm = AlternateGlyphForms.MONOSPACED_HALF_WIDTH_FORM;
  } else if (hit_obj[i].contents.length == 3) {
   hit_obj[i].glyphForm = AlternateGlyphForms.THIRD_WIDTH_FORM;
  } else if (hit_obj[i].contents.length == 4) {
   hit_obj[i].glyphForm = AlternateGlyphForms.QUARTER_WIDTH_FORM;
  }
 }
} else if (ans_int == 9) {//1桁を二分字形中付に、2桁以上を二分字形にする
 for (var i = 0; i < hit_obj.length; i++) {
  if (hit_obj[i].contents.length == 1) {
   hit_obj[i].glyphForm = AlternateGlyphForms.MONOSPACED_HALF_WIDTH_FORM;
   hit_obj[i].leadingAki = 0.25;
   hit_obj[i].trailingAki = 0.25;
  } else if (hit_obj[i].contents.length >= 2) {
   hit_obj[i].glyphForm = AlternateGlyphForms.MONOSPACED_HALF_WIDTH_FORM;
  }
 }
}
スポンサーサイト

コメントの投稿





管理者にだけ表示を許可する

トラックバック

http://kstation2.blog10.fc2.com/tb.php/217-e8a51354

(新しい記事)← 【フチ文字のラウンド】CS2でもセーフな手法
PAGE 2008 セミナー受講レポート →(古い記事)

 | HOME | 

カレンダー

03 | 2017/04 | 05
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -

FC2カウンター

2006年3月28日カウント開始

Amazon

FC2 Affiliate

動くPDF

プロフィール

あわせて読みたい

あわせて読みたいブログパーツ

最近の記事

最近のコメント

最近のトラックバック

Lc.ツリーリンク

RSSリンク

直感カテゴリーツリーV1.1

ブログ内検索

ブロとも一覧

marumi

神楽崎 ゆう


■ ブログ名:I'm writing NOVEL

七篠 銀字


■ ブログ名:風と夜空と氷の国

MS


■ ブログ名:へなちょこDTP

桜桃


■ ブログ名:追憶の桜吹雪

瑪瑙 輝遊


■ ブログ名:千里の道も一歩から

magatu


■ ブログ名:unsigned

暁 鷲 (あかつき しゅう)


■ ブログ名:空を裂け!

NewMark

C-Roll


FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。