なんでやねんDTP・新館

はてなダイアリーから移行しました…

フレームグリッド内でのインラインオブジェクト

テキストフレーム内のインラインオブジェクトの挙動を調べたついでと言ってはなんだが、フレームグリッド内でのインラインオブジェクトの挙動も検証しておく。

  • 今回も“「グリッド揃え」「文字揃え」は同一にしておいた方がコントロールし易い”という持論に基づいて、主要な3パターンを検証した
  • 文字サイズ16Q、行送り20Hのレイアウトグリッドを設定し、テキストフレームの際に使った作例をフレームグリッドに変更し、レイアウトグリッドを適用
  • 各種設定はフレームグリッド用に変更し、行送り値を変えて、その挙動を確認した(予めのテストで行送り値の設定で挙動が変わるのが判明したため)
  • 各作例の画像の2段目は行末の■を20Qの長体80%としている(但し、3行目以降)
  • フレームグリッドでは「行送りの基準位置」はあまり関係ないと認識していたが、(作例では前回データを流用したこともあって)同じ設定にしてある
  • すべてのインラインオブジェクトはデフォルトで挿入した状態(インライン/Yオフセット=0mm)


●行送りをグリッドの文字サイズと同じ値にした場合



行送りをグリッドの文字サイズ(16Q)と同じ値(16H)に固定すると、行末の■を20Qの長体2(80%)にした例に見られるように、(文字揃えに応じて配置された)行中の最大文字サイズの「仮想ボディの下」揃えで配置される。


●行送りをグリッドの行送りと同じ値にした場合



  • これらはテキストフレームの例とほぼ同じようにみえる


行送りをグリッドの行送り(20H)と同じ値(20H)に固定する*1と、(テキストフレームの例と同じように)オブジェクトサイズが行中の最大文字サイズ以下の場合は、(文字揃えに関わらず)その文字の「仮想ボディの下」揃えで配置され、行中の最大文字サイズ以上、かつ行送り値以下の場合は文字揃えに従って配置されるが、行送り値以上の場合はそれぞれ下限がある。


この場合、「行送りの基準位置」を変更するとオブジェクトサイズを考慮した行取りが行われ結果は変わる。(下限は)行送りの基準位置と行送りの値に縛られているのだろうと考えられるが、上の行送り16Hの例では変わらない……フレームグリッドの行送り値(20H)未満である 基本的な文字サイズ(16Q)と同一であることが関係しているのであろうが、ややこしいので考えないことにする。


●行送りを自動(文字サイズの100%)とした場合


  • この場合も「行送りの基準位置」を変更した場合は行取りされる部分(行)が変わる


行送りをフレームグリッドのデフォルトである自動(100%)とした場合は、(やはり)オブジェクトサイズが行中の最大文字サイズ以下の場合は、(文字揃えに関わらず)その文字の「仮想ボディの下」揃えで配置され、行中の最大文字サイズ以上の場合は「文字揃え」に従って配置される。但し、オブジェクトサイズが(フレームグリッドの)行送り値(20H)を超える場合は(グリッド揃えの設定に応じて)行取りが行われ、それなりにアキが発生する。

いずれの場合も、行中に異なるサイズのインラインオブジェクトがある場合は、上記の各ルールに従って配置された最大サイズのオブジェクトに下揃えで配置される。


という行送り値の設定によって異なるそれぞれの挙動が見えてくる。
※いずれも「行送りの基準位置」も同じ設定に揃えておかないと結果が異なる場合があるのは確認した。


これらの結果から、フレームグリッドの場合もインラインオブジェクトをコントロールし易いのは、やはり「グリッド揃え」「文字揃え」(「行送りの基準位置」も)共に「仮想ボディの下」と設定する方法ではないかと思う(あるいは文字サイズが一定の場合は、フレームグリッドの文字サイズを行送りに設定する)。


以上、3回に分けてテキストフレーム内とフレームグリッド内におけるインラインオブジェクトの挙動を検証し、コントロールしやすい設定を考えてみたが、これらの挙動の特徴を頭に入れておきさえすれば、(たとえ各揃えの設定がどうであれ)例えば、挿入したい「オブジェクト」を「行送り値と同サイズのオブジェクト」とグループ化し、あらかじめその位置関係を調整しておくことによって、行中の位置は比較的容易にコントロールできるだろう。


(以下、公開当日13:00頃追記
なお、先日の記事の末尾にも記したが、インラインオブジェクトを下方向にドラッグして、ベースラインシフトで調整する方法も有効ではあるが、その移動の基準となるのは行中の最大文字サイズの仮想ボディの下端(がオブジェクトの上端にそろう位置)であるため、テキストの増減などによって行中の最大文字が次の行へ移動するなどした場合は、再度位置調整が必要であるということを頭に入れておく必要がある*2


【memo】20110902追記

  • 小さなインラインオブジェクトの場合…(文字揃えの設定に関わりなく)「仮想ボディの下揃え」で配置される
  • 大きなインラインオブジェクトの場合…行送りの基準位置と行送り値に縛られた範囲の中で文字揃えに従って配置され(オブジェクトが揃えの基準)、行送り値をオーバーする場合は上に延びることになるが、そのオーバーした部分は文字揃えの計算から除外される
  • 行中に異なるサイズのインラインオブジェクトがある場合は、最大サイズのオブジェクトに「下揃え」で配置される
  • 上記の3点はフレームの種類や各種揃えに関係なく、インラインオブジェクトがデフォルトで配置される際の挙動

*1:よくお目にかかる設定方法だが…操作性に関しては、あまり意味はない

*2:この場合も文字揃えが「仮想ボディの下」ならその限りではないし、(揃えがどうであっても)行中(段落中)の文字サイズが一定なら、これも問題とはならない