other

No.06 正規表現を使って合成フォントのような表現を目指す

InDesignには、「かな」や「欧文」に異なるフォントを指定できる「合成フォント」という機能が用意されています。[書式]メニューから[合成フォント]を選択すると、[合成フォント]ダイアログが表示されるので、新規で合成フォントを作成し、下図のように目的に応じて各項目を設定すればOKです。ちなみに、下図は「A-OTF リュウミンPr6N R-KL」のベースフォントに対し、[半角欧文]と[半角数字]に「Garamond Premier Pro regular」を指定し、[サイズ]や[ベースライン]を調整したものです。
なお、合成フォントの各文字種に、それぞれどのような文字が含まれているかは、NAOIさんのサイトで詳しく解説されています。
http://d.hatena.ne.jp/NAOI/20091111/1257923050



あとは、フォントメニューからこの合成フォントを指定すれば良いのですが、合成フォントを使っていると「ドキュメントを開くたびに、合成フォントの複製が増えていく」「ドキュメントを開くと合成フォントがきちんと読み込まれない」」等、問題が起きるという話もよく聞きます。そこで今回は、合成フォントを使わずに、「正規表現スタイル」の機能を使って「欧文」に任意のフォントを指定する方法を考えてみたいと思います。なお、必ずしもこの方法がベストというわけではなく、こんな方法もあるということで覚えておいていただければと思います。
まず、「A-OTF リュウミンPr6N R-KL」を使用したテキストに対して段落スタイルを作成しておきます。ここでは「A」という名前の「段落スタイル」を作成しました(下図)。



次に「欧文」のテキストに対して適用する文字スタイルを作成します。ここでは「Garamond Premier Pro Regular」を指定し、さらにサイズと位置を調整するために、[垂直比率]と[水平比率]を「112%」、[ベースラインシフト]を「0.2H」、[言語]を「英語:米国」としました(下図)。
なお、[ベースラインシフト]の値は、その文字サイズに対して何%ぐらい上下させるかを計算して算出してください。また、[言語]にも目的のものを指定しておくのがお勧めです(スペルチェック等が可能になります)。



この設定を「文字スタイル」として保存しておきます。ここでは「欧文用」という名前で登録しました(下図)。



段落スタイル「A」をダブルクリックして[段落スタイルの編集]ダイアログを表示させたら、左側のリストから[正規表現スタイル]を選択し、[新規正規表現スタイル]ボタンをクリックします。そして[スタイルを適用]には、先程、作成した文字スタイル「欧文用」を指定します。さらに[テキスト]には、欧文部分をヒットさせるための正規表現を記述します。
ここでは、まず[テキスト]に
 [0-9a-zA-Z]
と記述しました(下図)。



このように記述することで、0から9までの数字とAからZまでの大文字と小文字がヒットし、文字スタイルが適用されます(下図では分かりやすいように文字スタイルが適用された部分にマゼンタのカラーも設定しています)。
※[☆-★]のように記述すると、☆から★までのユニコード番号の文字がすべてヒットします。なお、[テキスト]のポップアップメニューから指定できる正規表現の一覧は、市川せうぞーさんの以下のサイトを参照されることをお勧めします。
http://www.seuzo.jp/st/Other/InDesign_regex.html



しかし、実際にはこのままではうまくありません。ドットやカンマ等の約物や記号類の文字はヒットせず、指定した欧文フォントが適用されないからです。これらの文字を追加するには、いろいろな正規表現の記述方法があります。例えば、ドットとカンマ、ハイフンを追加したのであれば、
 [0-9a-zA-Z.,-]
のように記述していってもかまいません。でも、数が多いと面倒ですよね。そこで、ここではユニコード番号を指定して設定してみることにしますが、その前にInDesignの合成フォントの各文字種に、それぞれどのような文字が含まれているかを確認しておきましょう(下図)。青く色が付いている文字が、合成フォントを指定した際に、[半角欧文]と[半角数字]で使用される文字です。ちなみに、フォントには「Garamond Premier Pro Regular」を使用しています。









まずは、青く色が付いている最初の文字u+0020と最後の文字u+25CAの範囲を指定してみましょう。
 [\x{0020}-\x{25CA}]
のように記述します(下図)。



すると、適用したくない文字にも欧文フォントが当たってしまっているのが分かります(下図)。指定した範囲のコード番号には、欧文フォントを適用したくない文字もあったということです。



そこで、今度は下図のように指定してみました(下図)。
 [\x{0020}-\x{00B0}]
 [\x{00B2}-\x{00D6}]
 [\x{00D8}-\x{00F6}]
 [\x{00F8}-\x{02DD}]
 [\x{0020}-\x{25CA}]
 [–‚„•‹›⁄€™∆∏∑≈≤≥◊]

最終行の設定は、コード番号の範囲を指定せず、実際の文字を入力しています。なお、どの文字を欧文フォントとして使用したいかによって、この設定内容は変わってくるので注意してください。



この設定では、合成フォントの[半角欧文]と[半角数字]が適用される文字よりも多くの文字に欧文フォントが適用される内容となっていますが、おおむね思い通りに設定できました(下図)。



しかし、まだこれでOKではありません。次は、引用符を設定したいと思います。[段落スタイルの編集]ダイアログの[正規表現スタイル]で下図のように設定します。
 [“”‘’]
シングルクォーテーションマーク「u+2018」「u+2019」
ダブルクォーテーションマーク「u+0201C」「u+0201D」



これにより、欧文用の正しい引用符にも指定した欧文フォントが反映されます(下図)。



(最後に)
今回、正規表現スタイルを使用して合成フォントと同様の見た目になるよう考えてみましたが、もっと良い設定方法や、気をつけた方が良いポイントがあるのではないかと思います。ご意見をいただければ幸いです。

(追記)
なお、InDesign CS6までとInDesign CC以降では、[半角数字]に適用されるアキ量が異なるので注意が必要です。InDesign CS6までは、[半角数字]が[半角欧文]として認識され、文字組みアキ量設定の[和文と欧文の間]のアキ量が適用されていました。しかし、InDesign CC以降は、[半角数字]は[半角数字]としてきちんと認識され、[和文と英数字の間]のアキ量が適用されるように修正されています。
この件に関しては、こちらの記事『InDesign CC No.07 合成フォント使用時に文字組みが変わる?』もご覧下さい。

また、u+2014のEMダーシに対しても欧文フォントが適用された方がよいとのご指摘を受けましたので、正規表現スタイルの最後の行にu+2014も追加しておくと良いかと思います(下図)。



(追記 2017.6.23)
正規表現スタイルでベースラインを調整している場合、「欧文と和文にまたがって下線を引くとずれる」等、下線・打ち消し線・圏点・上付き文字等の文字修飾機能に影響が出るので注意が必要です。

(追記 2017.7.5)
works014さんからご指摘を受けましたが、
フレームグリッドでこの正規表現スタイルを使用する際には、[文字]パネルのパネルメニューにある[文字の比率を基準に行の高さを調整]はオフにして使用してください。フレームグリッドの1行目等が2行取りになってしまう場合があります。詳細は、Study Room CS『No.21 文字の比率を基準に行の高さを調整』を参照してください。