ルビの親文字修正

[1749]ルビの親文字修正 | 投稿者:かず | 投稿日:2008/09/12(Fri) 08:58:10
ルビの親文字を修正すると、ルビ文字がなくなります。
これって皆さんどのように対処されてますか?
既出でしたら申し訳ございません。
» 1
[1751]Re: ルビの親文字修正 | 投稿者:works014 | 投稿日:2008/09/12(Fri) 09:34:04
当方、CS2ですが、
字形の変更でしたら、字形パレットのダブルクリックではなく、字形メニューから、当該字形(例えば78JIS字形など)を選択すればルビは解除されません。
検索置換でも、置換文字は空欄で、詳細文字形式で字形を指定するなら大丈夫です。
» 2
[1752]Re: ルビの親文字修正 | 投稿者:いき | 投稿日:2008/09/12(Fri) 11:01:48
Windowsですね。
流星さんのHPで親文字差替CS3(VB)が発表されています。
http://f42.aaa.livedoor.jp/~idscript/
» 3
[1767]Re: ルビの親文字修正 | 投稿者:かず | 投稿日:2008/09/19(Fri) 15:06:15
いきさんありがとうございます。でもCS3用なんですね。
CS2用はありませんでしたので、BBSに要望出しておきました。
» 4
[1770]Re: ルビの親文字修正 | 投稿者:梅花藻 | 投稿日:2008/09/20(Sat) 14:28:09
ちょっと書いてみました。
上手く動かない場合も多々あるとは思います。

/* ルビの親文字修正スクリプト InDesgin CS2
 まず先に、どこか適当なところに入力しておいた差し替えたい文字を選択してスクリプトを実行する。
 次にルビの振られた修正したい文字を選択して、スクリプトを実行する。(つまり2回スクリプトを実行する)
 エキスパート字形や修飾字形、全ての異体字などの「異体字」属性も適用されるようにしてある。

 問題点としては、CIDで入力されたようなユニコードを持たない文字では差し替えできない。
 また、より大きな問題であるが、ルビが振られている範囲をtextStyleRangeで調べているため、字形パレットをダブルクリックして文字を入力したり、異体字属性を付加した文字が、ルビの振られている文字範囲の文字に含まれているとtextStyleRangeがルビの振られている範囲の中で分かれてしまっている為に、望む結果を得られない。
*/
var txtObj = app.selection[0];
if (app.scriptArgs.isDefined("Char_contents")){
   try{
       //  ルビが振られているテキストの範囲をtextStyleRangeで探す。
       var txtSRs = txtObj.paragraphs[0].textStyleRanges;
       for (var i=0;i<txtSRs.length;i++){
           if ((txtSRs[i].characters[0].index <= txtObj.index)&&(txtObj.index <= txtSRs[i].characters[-1].index))
               break;
       }
       var ptr = txtSRs[i].characters[0].index;
       var len = txtSRs[i].characters.length;
       var prop = txtSRs[i].properties;
       with (txtObj) {
           contents = app.scriptArgs.get("Char_contents");
           glyphForm = eval(app.scriptArgs.get("Char_glyphForm"));//異体字属性
           opentypeFeatures = eval(app.scriptArgs.get("Char_opentypeFeatures"));//異体字属性
       }
       app.selection = txtObj.parent.characters.itemByRange(ptr,ptr+len-1);
       with (app.selection[0]){//ルビを振り直す
           rubyFlag = prop.rubyFlag;
           rubyString = prop.rubyString;
           rubyType = prop.rubyType;
       }
   } catch(e){
       alert("置換に失敗しました");
   }
   app.scriptArgs.clear();
} else {
   app.scriptArgs.set("Char_contents",txtObj.contents);
   app.scriptArgs.set("Char_glyphForm",""+txtObj.glyphForm);
   app.scriptArgs.set("Char_opentypeFeatures",txtObj.opentypeFeatures.toSource());
   alert("差し替える文字を記憶しました");
}
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア