遠近法ノート

本好きのデザイナー、西岡裕二の日記帳なのです。デザインと読書について書くはず。

正規表現でかな詰めの範囲を制限してみる。

以下、InDesignの文字組版とフォントの知識がある方向けです。
中級以下の方は読まないほうが良いです。

ここ1年くらいのあいだに、ようやくInDesignの仕事環境をCS3/5からCS6に移行することができました(CCに移行するのは4年後くらいかな……)。
近年のめぼしい新機能と言えば正規表現スタイルぐらいです。これはまあまあ便利なので、ちょこちょこ使い始めています。

この機能、パッチ当てのように使うのもいいんですが、なにかこう、もっと大技を任せても大丈夫なような気がしてきました。で、正規表現スタイルのこんな使い方を考えてみました。

まず、[メトリクス][プロポーショナルメトリクス]を設定した文字スタイルを用意します。

この文字スタイルを「かな」だけに当て、約物は文字組みアキ量設定で詰める段落スタイルを作ります。

「かな」の範囲は正規表現スタイルで、
「ぁ(小書き)」から「け(小書き)」、「ァ(小書き)」から「ヶ(小書き)」、「ー(音引き)」

としました。

するとどうなるか。

こちらはベタ組み。何も問題ないが……

全体に[メトリクス]+[プロポーショナルメトリクス]+[約物半角]としたとき、フォントによって約物の挙動がバラバラになります。
参考:一部のフォントでノノカギの困るバグ。

詰めの範囲を制限すると、約物の挙動が揃います。

「詰め」の範囲を「かな」だけに限定することで、漢数字の「一」などを詰めなくなり(前後を詰めるかどうかは好みの問題でもありますが)、「一部のフォントでノノカギの困るバグ」を回避したり出来るわけです(注:スポイトツールは使用不可)。
もちろん、こんな設定をいちいち施していたらキリがありませんから、例によって段落スタイルは階層で管理して、かな詰めが必要な要素を作るときはコレを適用してから作ればいいわけですね。
参考:InDesignの文字組み。
(このエントリ、もう10年近く前か。書き改めたい気もするけど諸事情でやる気が出ません)

というわけで、とりあえずこの技を「Regexかな詰め」と呼ぼう。
ちなみに、「Regexかな詰め」部分にさらに[文字ツメ]等を上掛けしたりとかも可能です。下位スタイルでやると継承元が見えなくなるのがちょっとアレですが(何のことか分からないと思いますが、やってみたら分かります)。

余談

InDesignにおいて、特に[文字組みアキ量設定]と[合成フォント]はうまくいきそうでうまくいかない機能です。なぜうまくいかないかと言うと、

InDesign側で文字集合を決め打ちしてあって、変更はおろか、その文字集合に何が含まれているかさえ、ユーザーには分からない。

という点に尽きると思います。
[合成フォント]の「かな」とは何を指すのか、どこからどこまでが「半角欧文」なのか? [特例文字]指定で少しはごまかすことも可能ですが、「半角欧文」の範囲などはかなり広く、フォントによって実装が全然違います。取りこぼしが不可避です。
[文字組みアキ量設定]では[特例文字]のような融通も利きません。文字集合がやたら細かく分かれていて、いろいろ変更できそうに見えても、集合自体は変更できないのです。その集合ごとに挙動を決めるのですから、実際には自由度が低い。[文字組みアキ量設定]は、UIも複雑で、変更できなくてもいいようなところまで変更できる割りに、変更したいところは変更できない構造です。全体像が見えませんから、どこかにミスがあっても動かすまで(該当の文字が出てきて該当の挙動をするまで)分からないんですね。

正規表現文字集合を作ってあって、ユーザーが集合を変更できて、その集合単位で挙動を決めるようになっていれば……。そんな組版システムがあればいいのかもしれません。