ルビ入力を行うスクリプト
ルビ入力をIndesignのダイアログで行うスクリプトを書いてみた。
しかしルビを一度振るごとにスクリプトが終了してしまうので面白くない。
VBか何かで書けばいいのだろうか。
//
// ルビ入力支援スクリプト
//
// 【使い方】
// 親文字を選択し、このスクリプトを実行。ルビを入力しOKボタンを押す。
//
// 注1:ルビ入力をせずにOKを押すとルビは解除される。
// 注2:ルビを親文字ごとに空白で区切って入力すると、モノルビになる。
// 注3:親文字の字数とルビ入力の空白で区切られ文字の数が一致しない場合はグループルビになる。
// 注4:ルビを空白で全く区切らずに入力すると、グループルビになる。
//
// ドキュメントが開いているか?
if(app.documents.length != 0) {
var mySel = app.activeDocument.selection;
// 文字が選択されているか?
if( (mySel.length == 1) && (mySel[0].constructor.name == "Character") ||
(mySel[0].constructor.name == "Text") || (mySel[0].constructor.name == "Word") ) {
var oyamoji = mySel[0].contents;
// ダイアログの生成
var myDialog = app.dialogs.add( {name:"ルビ入力支援"} );
with(myDialog) {
with(dialogColumns.add() ){
with(dialogRows.add() ){
staticTexts.add({staticLabel:"親文字:" + oyamoji});
}
with(dialogRows.add() ){
staticTexts.add({staticLabel:"ルビ:"});
var rubyTBox = textEditboxes.add({minWidth:200 });
}
}
}
// ダイアログ表示
var myReturn = myDialog.show();
// OKが押されたか?
if (myReturn == true) {
var tmpFlag = true;
var rubyText = rubyTBox.editContents;
// ルビ入力がなければフラグはfalse
if(rubyText.lengh == 0) tmpFlag = false;
// 入力したルビに空白文字がなければフラグはfalse
if(rubyText.match(/ | /g) == null) tmpFlag = false;
// フラグがtrueならば空白で区切られたルビの数をカウント
if(tmpFlag == true) delimitCnt = rubyText.match(/ | /g).length;
// フラグがtrueで、親文字の字数と空白で区切られたルビの数が一致していればモノルビ
if( (tmpFlag == true) && (mySel[0].characters.length == delimitCnt + 1) ) {
// 空白区切りを全角に変換
rubyText = rubyText.replace(/ /g, " ");
// 全角空白で切り出す
rubyText = rubyText.split(" ");
// モノルビで親文字一字ごとにルビを付加
for(i=0; i < mySel[0].characters.length; i++) {
mySel[0].characters[i].rubyFlag = true;
mySel[0].characters[i].rubyType = 1249013859;
mySel[0].characters[i].rubyString = rubyText[i];
}
} else {
// ルビ入力の空白を削除
rubyText = rubyText.replace(/ | /g, "");
// グループルビでルビを付加
mySel[0].rubyFlag = true;
mySel[0].rubyType = 1249011570;
mySel[0].rubyString = rubyText;
}
}
// ダイアログを消去
myDialog.destroy();
} else alert("親文字を選択して下さい。");
} else alert("ドキュメントを開き、親文字を選択して下さい。");
しかしルビを一度振るごとにスクリプトが終了してしまうので面白くない。
VBか何かで書けばいいのだろうか。
//
// ルビ入力支援スクリプト
//
// 【使い方】
// 親文字を選択し、このスクリプトを実行。ルビを入力しOKボタンを押す。
//
// 注1:ルビ入力をせずにOKを押すとルビは解除される。
// 注2:ルビを親文字ごとに空白で区切って入力すると、モノルビになる。
// 注3:親文字の字数とルビ入力の空白で区切られ文字の数が一致しない場合はグループルビになる。
// 注4:ルビを空白で全く区切らずに入力すると、グループルビになる。
//
// ドキュメントが開いているか?
if(app.documents.length != 0) {
var mySel = app.activeDocument.selection;
// 文字が選択されているか?
if( (mySel.length == 1) && (mySel[0].constructor.name == "Character") ||
(mySel[0].constructor.name == "Text") || (mySel[0].constructor.name == "Word") ) {
var oyamoji = mySel[0].contents;
// ダイアログの生成
var myDialog = app.dialogs.add( {name:"ルビ入力支援"} );
with(myDialog) {
with(dialogColumns.add() ){
with(dialogRows.add() ){
staticTexts.add({staticLabel:"親文字:" + oyamoji});
}
with(dialogRows.add() ){
staticTexts.add({staticLabel:"ルビ:"});
var rubyTBox = textEditboxes.add({minWidth:200 });
}
}
}
// ダイアログ表示
var myReturn = myDialog.show();
// OKが押されたか?
if (myReturn == true) {
var tmpFlag = true;
var rubyText = rubyTBox.editContents;
// ルビ入力がなければフラグはfalse
if(rubyText.lengh == 0) tmpFlag = false;
// 入力したルビに空白文字がなければフラグはfalse
if(rubyText.match(/ | /g) == null) tmpFlag = false;
// フラグがtrueならば空白で区切られたルビの数をカウント
if(tmpFlag == true) delimitCnt = rubyText.match(/ | /g).length;
// フラグがtrueで、親文字の字数と空白で区切られたルビの数が一致していればモノルビ
if( (tmpFlag == true) && (mySel[0].characters.length == delimitCnt + 1) ) {
// 空白区切りを全角に変換
rubyText = rubyText.replace(/ /g, " ");
// 全角空白で切り出す
rubyText = rubyText.split(" ");
// モノルビで親文字一字ごとにルビを付加
for(i=0; i < mySel[0].characters.length; i++) {
mySel[0].characters[i].rubyFlag = true;
mySel[0].characters[i].rubyType = 1249013859;
mySel[0].characters[i].rubyString = rubyText[i];
}
} else {
// ルビ入力の空白を削除
rubyText = rubyText.replace(/ | /g, "");
// グループルビでルビを付加
mySel[0].rubyFlag = true;
mySel[0].rubyType = 1249011570;
mySel[0].rubyString = rubyText;
}
}
// ダイアログを消去
myDialog.destroy();
} else alert("親文字を選択して下さい。");
} else alert("ドキュメントを開き、親文字を選択して下さい。");
<<JavaScriptで書いたルビ支援入力のスクリプトをVisual Basicで書いてみた。 | HOME | イラストレータでJAN/EAN-13バーコードを生成するスクリプト>>
COMMENTS
COMMENT FORM
TRACKBACK
| HOME |