忍者ブログ

ぼんぷろぐ

InDesignとかイラレとかのスクリプトよもやま話

新しいブログに引っ越しました。

こちらのブログはもう更新しませんが、コメント欄は生きてますので疑問、ご指摘などありましたらどうぞ。

[イラレ]
Sppyにスポイト機能を追加しました

Illustratorスクリプトをキーボードショートカットなどで実行するソフト『Sppy』を更新しました。

ダウンロードはこちら

▼「画面上の好きな位置をクリックすると、その点でのRGB値でIllustratorにスウォッチを作る」というスポイト機能を追加しました。

こんなんです


なおイラレのアクティブなドキュメントがCMYKモードだった場合、「カラーはCMYKに変換されています」というメッセージが出て、実際変換されます。必ずしも元の色と同一にはならないのでご注意ください。

▼既に使われているキーを使おうとしたときに出るエラーメッセージに、何のスクリプトに使われているか表示するようにした。

今まで出なかったのかよっていう感じですが
PR

[InDesign]
別言語の[基本段落]を見てみよう

えっとInDesignで段落スタイルの[基本段落]には小塚明朝 Pro R、13Q、行末約物半角などが設定されていますが、これはどう見ても日本人だけに向けた設定です。

他の言語はどうなってるのか気になりますね。
急によく分からん言語の文章を意味は分からなくともとにかく組まなきゃいけないってこともあるかもしれません。

そういうときわざわざその言語のバージョンのInDesignをインストールしなくても、新規ドキュメントの設定だけその言語に変える方法があります。

たとえばアメリカ英語にするならスクリプトで

app.setApplicationPreferences(LanguageAndRegion.UNITED_STATES_ENGLISH)

を実行します。新規ドキュメントを作成してテキストフレームに「サンプルテキストの割り付け」をやってみると…

なんかそれっぽい書体で怪文書が流し込まれました!

普通に日本語モードて作ったドキュメントにコピペして段落スタイルを作ると、日本語版の設定との違いがよく分かります。


中国語でもやってみましょう
app.setApplicationPreferences(LanguageAndRegion.SIMPLIFIED_CHINESE)


その他の言語はこちらを参照。
http://jongware.mit.edu/idcs6js/pe_LanguageAndRegion.html
全部使えるわけではなく、「THAILAND_THAI」とかだとエラーが出ました。設定ファイルかフォントがないんでしょうね。

最後は
app.setApplicationPreferences (LanguageAndRegion.JAPAN_JAPANESE)
で日本語に戻しましょう。

オワリ

[ExtendScript]
ExtendScriptのMath.randomはわりといい加減

前にMath.random()使っててやたら値が被るなぁと思って調べんたんですけど、

ExtendScriptのMath.randomが作る値は65536通りしかありません。

そして、Math.random()*65536は常に整数です。

2進数で書くと
0.0000000000000000
0.0000000000000001
0.0000000000000010
0.0000000000000011

0.1111111111111111
のような小数点以下16桁の数の中からランダムに出てくるわけです。

65536通りって案外少ないです。たとえば100個の乱数を取得したとすると、その中で値が被ってしまう確率が7%もあります。

なおAfterEffectsにはgenerateRandomNumber()という組み込み関数があって、Math.randomの代わりに使うことが推奨されているそうです。

[InDesign]
InDesignスクリプトの基礎的なことを掘り下げてみる:isValidの副作用とか

たとえばInDesignでドキュメントを新規作成して、そこにテキストフレームを1つ作ったとして、
このテキストフレームをスクリプトから取得するにはどんな方法があるでしょうか。

とりあえず

var doc = app.activeDocument;

ってドキュメントを取得しておくとして、普通にやるなら

var tf1 = doc.textFrames[0];

って書きますよね。
テキストフレームはページアイテムでもあるので

var tf2 = doc.pageItems[0];

としてもいいですね。
また、どのスプレッドかを明確にして

var tf3 = doc.spreads[0].textFrames[0];

ていうのもアリです。
あるいはまわりくどく

var tf4 = doc.stories[0].textContainers[0];

のようにストーリーを経由して取得することもできます。
ちょっとやり方を変えて、ドキュメント上でテキストフレームを選択しておいてから

var tf5 = doc.selection[0];

という手もあります。

プロフィール

kawamoto_α
(あるふぁ(仮))


InDesignで新聞組版のようなことをしています。

ツイッタ

※ブラウザによっては当ブログからDLしたzipファイルが拡張子なしになることがあるようですが、.zipを補って開いてください。



イラレ用トーンカーブスクリプト(¥1500)



クロソイド式角丸長方形スクリプト(¥500)
Illustrator用
InDesign用



イラレスクリプトをキーボードショートカットで実行するやつ(Win用)