JavaScriptで文字揃えの制御がおかしい?

[8233]JavaScriptで文字揃えの制御がおかしい? 投稿者:OIMO 投稿日:2006/02/12(Sun) 02:36
MacOS10.3.9、InDesignCS3.01です。
JavaScriptで文字揃えを制御しようとして
欧文ベースラインにあわせようと
docObj = app.activeDocument.selection[0];
docObj.texts[0].characterAlignment = CharacterAlignment.alignBaseline;
というスクリプトを書いたのですが、
動かしてみるとなぜか「仮想ボディの中央」に合ってしまいます。
これはおかしいと、今度は仮想ボディの下にあわせようとして
alignEmBottomと入れてみたら、今度は「平均字面の下」に合ってしまいます。
これは自分のところだけでしょうか?
それともスクリプトが間違っている?

どなたか動かして検証してみてください。よろしくお願いします。
» 1
[8233へのレス]Re: JavaScriptで文字揃えの制御がおかしい? 投稿者:ron. 投稿日:2006/02/12(Sun) 08:51
この手のことは、実際の動作が正しいと判断するしかないでしょう。

AppleScriptでも変です^^。
» 2
[8233へのレス]Re: JavaScriptで文字揃えの制御がおかしい? 投稿者:OIMO 投稿日:2006/02/12(Sun) 17:34
>ron.さん
返信ありがとうございます。

そうなのですか…
これってInDesign(少なくとも同一バージョンまで)で
共通のバグなんでしょうか?
それとも個々のマシンで違うものですか?

例えば共通の表組スクリプトを作って
会社のオペ全員に「これ使って」と渡したとして、
一個一個のマシンで挙動が違うようだと
それぞれのマシンに合わせて書き直さなくちゃいけないわけで
それはすごく困るんですが…。
» 3
[8233へのレス]Re: JavaScriptで文字揃えの制御がおかしい? 投稿者:ron. 投稿日:2006/02/12(Sun) 18:59
そのくらい、ちょっと試せば分かることじゃないですか?
» 4
[8233へのレス]Re: JavaScriptで文字揃えの制御がおかしい? 投稿者:流星 投稿日:2006/02/12(Sun) 23:10
>例えば共通の表組スクリプトを作って
>会社のオペ全員に「これ使って」と渡したとして、
>一個一個のマシンで挙動が違うようだと
>それぞれのマシンに合わせて書き直さなくちゃいけないわけで
>それはすごく困るんですが…。
認識不足では?
開発環境で正しく動くように作成して、
正しく動いているか、各端末で調査して
下さい。それが基本です。

ちょこっとVB6.0(IDE)で調べました。
下記のような結果です。参考になれば…

******** VBのオブジェクトブラウザでのタイプライブラリ定義 ********
Const idAlignBaseline = 1247896172 (&H4A61626C) 欧文ベースライン
Const idAlignEmBottom = 1247896173 (&H4A61626D) 仮想ボディの下/左
Const idAlignEmCenter = 1247896436 (&H4A616374) 仮想ボディの中央
Const idAlignEmTop = 1247900784 (&H4A617470) 仮想ボディの上/右
Const idAlignICFBottom = 1248420461 (&H4A69626D) 平均字面の下/左
Const idAlignICFTop = 1248425072 (&H4A697470) 平均字面の上/右

******** InDesignでの設定を自力で取得した値とTLB定義との照合 ********
自力取得の値=InDesignでの設定 TLB定義との照合用 結果
1247896436=仮想ボディの上/右 1247896436=仮想ボディの中央 ×
1247896172=仮想ボディの中央 1247896172=欧文ベースライン ×
1852796517=欧文ベースライン 1852796517=??? ×
1247900784=仮想ボディの下/左 1247900784=仮想ボディの上/右 ×
1248425072=平均字面の上/右 1248425072=平均字面の上/右 ○
1247896173=平均字面の下/左 1247896173=仮想ボディの下/左 ×
» 5
[8233へのレス]Re: JavaScriptで文字揃えの制御がおかしい? 投稿者:OIMO 投稿日:2006/02/13(Mon) 18:34
>ron. さん
会社で試して来ました。(Mac10.4.4,InDesignCS)

alignBaseline→仮想ボディの中央×
alignEmTop→仮想ボディの下/左×
alignEmCenter→仮想ボディの上/右×
alignEmBottom→平均字面の下/左×
alignICFTop→平均字面の上/右○
alignICFBottom→?(表示なし・ベースラインに合っているように見える)×

という結果で、家で試した時と同じ結果が出ました。
InDesignの最インストールをしても直らなかったので、
CSではほぼ同じ結果が出ると思ってよさそうです。
少し安心しました。お騒がせしてすみませんでした。

>流星さん
お返事ありがとうございます。
確かにちょっとスクリプトに期待しすぎていたかも知れません。
とても参考になりました。ありがとうございました。
» 6
[8233へのレス]Re: JavaScriptで文字揃えの制御がおかしい? 投稿者:小泉 投稿日:2006/02/14(Tue) 08:02
ASです。
none で 欧文ベースラインになりますね。

修正されたときのために、
バージョンチェックは付けといたほうがいいですが、
こうゆうもんだと思えばとりあえずは使えます。

align baseline→仮想ボディーの中央
align em top→仮想ボディーの下/左
align em center→仮想ボディーの上/右
align em bottom→平均字面の下/左
align ICF top→平均字面の上/右
none→欧文ベースライン
align ICF bottom→???
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア