InDesignにて1ケタ数字を全角に、2ケタ以上数字を半角にするJavaScript

こんにちは、スクリプト担当Fです。

今回は、「1桁全角2桁以上半角」というスクリプトの紹介です。
組版の世界では、原稿用紙のマス目に並んだ文章の整合性をとるために数字を調整する習慣があります。「数字一桁は全角、二桁以上は半角にする」というルールです。

最近ではDTPでもこのルールを意識することが少ないかもしれません。また、PCやスマートフォンで文章を作成する機会が多いため、ルール自体を知らない方も多いのではないでしょうか。しかし、ビジネスや公式文書の作成などにおいては今でもこの「数字一桁は全角、二桁以上は半角」のルールに従うことが原則として多くあります。

 

● 数字の変換

さて、InDesignで組版作業をする際にこのルールをどのように処理すればいいでしょうか? ひとつひとつを打ち替えるとなるのは現実的ではありません。この一連の処理をなんとか効率化できないかと思ったのがスクリプトを作成するきっかけでした。

まず、数字の変換には「検索と置換」ダイアログボックスにある文字種変換を使用します。

ここで英数字の全角や半角の変換ができます。

● 1桁数字と2桁以上の数字を判別する条件

変換の方法が見つかったので、次は数字を条件によってさがす必要があります。
こちらも「検索と置換」ダイアログボックスにある正規表現タブを使用します。

1桁と2桁以上の数字を判別する条件を考えます。
以下はどちらも正規表現で使用する検索文字列です。

1桁数字…(?<![0-90-9]|.|.)[0-90-9](?![0-90-9]|,|,|.|.)
2桁以上の数字…(?<!.|.)[0-90-9,,]{2,}(?!.|.)

※「全角・半角を区別」はオンにします。

・全角でも半角でも数字が検索対象となる
・小数点を含む数字もあるのでピリオドも検索条件に含める
・価格をあらわす数字もあるのでカンマも検索条件に含める

詳細な正規表現につきましてはまた別の機会に説明しますが、検索文字列の条件は以上です。
これで条件によって数字を判別して検索することができます。

● 検索と置換

検索された数字ごとに文字種変換をしてあげれば処理は可能です。
条件ごとに検索を行い結果ごとに文字種変換を繰り返すようにスクリプトで記述します。

また、以下のオプションも追加しました
・ピリオドを検索に含める
・2桁以上を等幅半角字形に変換する
・1桁は等幅半角字形・文字アキ量を四分に変換する

● 修飾字形

InDesignにおいて、四角に囲まれた「1」は全角の「1」と同じ文字です。こういった修飾数字は変換しないように除外設定してあります。

● 縦組では

ちなみに、社内用に改変したバージョンでは縦書き仕様に対応しております。

・数字にはさまれた「.」は「・(ナカグロ)」に
・2桁半角3桁以上全角
というオプションを追加しています。

 

● 違う方法

違う方法で「数字一桁は全角、二桁以上は半角」のルールを実現する方法もあります。
あらかじめ詳細文字形式で異体字を「プロポーショナル字形」に適用する文字スタイルをつくっておきます。文章中の数字はすべて全角数字にしておきます。
正規表現スタイルで2桁以上の数字をこの文字スタイルが適用するように設定すると2桁は半角に変換されます。
ただし、以下の条件があります。
・OpenTypeフォントのみしか使用できない
・基本的にリュウミン系の書体でしか使用できない
この方法を使うのはかなり限定的な条件になりそうです。

スクリプト「1桁全角2桁以上半角」の紹介ページはこちらとなります。