はじめに
前回の記事に続き、また新しいInDesign用のスクリプトです。
段落の箇条書き機能を割と頻繁に使うのですが、特に源ノ角ゴシックなどで設定しようとすると文字が小さすぎて選ぶのに難儀します。
そもそも、源ノ角ゴシックは字形がめちゃくちゃ多いので選ぶのも大変なんですよね。とはいえよく使う箇条書き記号ってだいたい決まってます。なのでよく使うやつを効率よく設定できるようなスクリプトを作ってみました。
SwitchBullets.jsx
動作はこんな感じです。
設定ファイル
スクリプトと同階層に、SwitchBulletConfig.txt というテキストファイルを置きます。このファイルに記述してある設定に従って、スクリプトで箇条書き記号をトグルさせます。
// サンプルです // 行頭に半角スラッシュを入れるとその行は読み込まれません // フォントファミリー スタイル(ウェイト) GID値 後続テキスト // という形でタブ区切りテキストを用意してください // 最後の後続テキストは省略可能です 源ノ角ゴシック JP Bold 1242 ^> 源ノ角ゴシック JP Bold 1244 ^> 源ノ角ゴシック JP Bold 1246 ^> 源ノ角ゴシック JP Bold 1248 ^> 源ノ角ゴシック JP Bold 1258 ^> // A-OTF UD新ゴ Pr6N M 12224
こんな形でタブ区切りテキストとして記述してください。同時に後続テキストの設定ができるようにしてあります*1。
コード
コードはGistにあります。
技術的な話
大したことではないんですがメモとして残しておきます。
エラー処理
以前InDesign 2020(15.0.2)で実装されたコミュニティスクリプトの内容を少し詳しく読み込みました。
その中でエラー処理を一箇所にまとめているスクリプトがあって、これは賢いな〜と思って今回それを真似てみたのが、スクリプト最後のmyError
関数です*2。
この使い方気に入ったのでしばらく使いそう。特に規模の大きなスクリプトや複数人でメンテしているものには非常に良さそう。
型変換
1箇所、+
演算子を使って文字列型を数値型に変換しているところがあります。はじめはparseInt()
メソッドで実装していたのですが、メソッドの仕様上、これだと数値型に変換できるところまで先頭から数値型に変換してくれてしまいます。
どういうことかというと、例えば誤って123あ
と入力されていたとします。このとき、parseInt()
メソッドでは頭から数値型に変換できるだけしてしまうので、parseInt("123あ", 10)
の値は123
になります。
parseInt("123あ", 10); // 123 <-数値型に変換できない文字列があったらNaNにしたい
これは下手にきちんとした数値型の値が返ってきてしまうので都合が悪い。なのでその部分は+
演算子による型変換を利用しています。そうすれば、間に余計な文字列が紛れていたら意図通りNaN
を返してくれるからです。
Bullet.characterValue
は数値型
このプロパティは文字列型を渡してもダメで、数値型で渡さないと何もしません*3。もともと数値型なので挙動としては分かるんだけども。JSの暗黙の型変換に慣れすぎているとこういうときにつまづいてしまう…。
おわりに
というわけで面倒くさい箇条書き設定を少しだけ楽にするスクリプトでした。
*1:箇条書き記号へ文字スタイルを設定できるようにするかも考えたのですが、フォントのチェックやグループ化された文字スタイルへの対応、文字スタイルが利用できるかどうかなど、確認する手間と実装する手間が多くてやめました。あしからずです…
*2:元の記事はこれ
InDesign 15.0.2 コミュニティスクリプトを紐解く 3 - DTPab
記事のスクリプトではSwitch文で処理していましたが、記事に書いたとおり僕は連想配列で実装してみました
*3:エラーすら吐かない