DTP作業者にとっての難易度 ★★☆☆☆(2)
昨日ご紹介した囲み文字の作成方法は制約が多かったり、計算で正確に文字の位置やサイズをコントロールすることが困難だったりと、完成度の低いものでした。
そこで今回はGlyphsを使って囲み枠の外字フォントを作成し、きちんと計算でベタ組みを実現する方法を考えてみました。
※ものかのさん、ひらくんさん、きえださん、アドバイスをありがとうございました。
作成した外字フォントはシンプルなものです。拡大しなくても内側に文字がおさまるよう、大きめの枠を1000×1000のエリアに作成しただけです。あとは先日のセミナーで教わった「dlig」を使って「●■」が角丸の黒い四角形になるように……などを設定しました。
InDesign側では「●●」などの文字を入力したら正規表現スタイルにより《外字フォントを指定》→《dligで目的の文字(枠)を表示》→《文字位置などを調整》→《枠の直後の文字の位置やサイズを(枠に正確に収まるように)調整》となるよう設定してあります。
この方法の良いところは、枠の内側の文字の拡大率(サンプルでは80%)を変更した場合もそれに対応する文字スタイルを簡単な計算で求められる(ベタ組みが実現できる)という点だと思います。計算方法は下図を参照ください。

※ものかのさんより「合字を利用する方法は、日本語コンポーザーのみで有効です」とのコメントをいただきました。詳しくは下のコメント欄をご覧ください。
サンプルデータもご用意しましたので、よろしければお試しください。また、何か情報がありましたらご提供いただけると嬉しいです。
サンプルデータはこちら《0206d_minimum.zip》です(CS4以降)。
私はこっちの方が好きです(笑
★ちょっと気になったところ:
文字スタイルで前後アキをベタ/ベタにしていますが、ジャスティファイで字間がうまく開くように「囲み文字は後のみベタ、囲み内文字は前のみベタ」といった具合に必要なところだけベタにしてみてはいかがでしょうか。
(dligでグリフ置換した文字列にはジャスティファイのアキが発生しないので)
★注意点:
合字を利用する方法は、日本語コンポーザーのみで有効です。欧文コンポーザーではジャスティファイでバラバラになりグリフ置換されなくなります。
(不具合ではなく、和文と欧文での合字の扱いの違いであり、筋の通った仕様だと思います)
注意点は大切なポイントですね。しっかり覚えておきます。
1.白抜き文字の囲み文字だけ濃淡を75%に落としたい。
2.2文字を囲み文字にする方法について
3.上の修正で、「音1」は2文字の囲み文字で、「音」は1文字の囲み文字とする方法について
1.について
文字スタイル「囲み文字」の「文字カラー」で「黒」を選択し「濃淡」を「75%」に設定してください。
2.について
@段落スタイルの正規表現スタイルを編集します。
「(?<=[●○□][○□]).」→「(?<=[●○□][○□])..」とします(いずれもピリオドを1つ追加する)。
A文字スタイル「囲み内文字」および「白抜き文字」の設定を変更します。
「詳細文字形式」の「水平比率」を「80%」→「53.3%」に変更し、「文字後のアキ量」を「アキなし」とします。また「基本文字形式」の「トラッキング」を「0」とします。
B文字スタイル「数字」を新たに作成します。
「詳細文字形式」の「異体字」を「等幅半角字形」と設定します。また「基本文字形式」の「トラッキング」は「188」とします(125の1.5倍)。
C段落スタイルに正規表現スタイルを追加します。
今回の場合「(?<=音)\d」にBの文字スタイル「数字」を適用するよう設定します。
3.について
まず「音1」などに関しては
「(?<=[●○□][○□])..」→「(?<=[●○□][○□])音\d)」と対象を絞ったほうが良いでしょう(「.」だと任意の1文字になるため)。
さらに「音」だけの場合の文字スタイル「音のみ」を用意します。
「詳細文字形式」の「水平比率」「垂直比率」は「80%」、「文字前のアキ量」「文字後のアキ量」は「アキなし」と設定。「基本文字形式「の「トラッキング」は「250」と設定します。
段落スタイルに正規表現スタイルを追加します。
「音(?!\d)」に対して上記の文字スタイル「音のみ」を適用します(「音(?!\d)」は、直後が数字ではない「音」の文字にヒットします)。
以上の回答で思い通りの結果を得ることができました。
若干私が加えた修正。
1.について、濃淡75%の設定は正規表現スタイル●●適用分だけですむので、文字スタイル「囲み文字」を[●○□][○■□]に変更して次と重複しないようにして、「囲み文字75%」を新しく追加して、[●][●]と設定しました。
2.と3.について、段落スタイルの正規表現スタイルで□□だけに2文字を限定したので、段落スタイルは「(?<=[●○□][□])音\d」としました。文字スタイル「囲み内文字」は、他の文字に影響が出ないように「囲み内文字音1」を新しく作成しました。段落スタイの正規表現スタイルも、「(?<=音)\d」は音1、音2以外も含んでしまうため、「(?<=音)[12]」として、音1、音2だけに限定しました。また段落スタイルの正規表現スタイル「音(?!\d)」は後ろが数字でない音を全て含むため、適用したいものに限定するために「音(?=:)」としました。
長くなってしまいましたが、なんとか思い通りの結果にたどり着いたことを報告して、感謝の言葉とします。