なんでやねんDTP・新館

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

テキストフレーム内のインラインオブジェクト_結

(昨日の続き)
次に、
●「仮想ボディの中央」の場合

  • すべて1段落、改行は入れていない
  • 目安としてレイアウトグリッドを表示しているが、フレームはあくまでもテキストフレーム



  • オブジェクトサイズが行中の文字サイズ以下の場合……(文字揃えに関係なく)文字に対して「仮想ボディの下」揃えで配置される……3・4行目
  • オブジェクトサイズが行中の文字サイズ以上の場合で、
  • 行送り値を超えない場合……文字揃えに従って、「仮想ボディの中央」揃えで配置される……5行目(右は5・6行目)
  • 行送り値を超える場合………(当然のことながら)次行との中間位置(行間センター)を超えて配置されることはない……6・7行目(右は7行目)
  • 異なるサイズのインラインオブジェクトがある場合……(上記ルールに従って配置された)最大のオブジェクトに下揃えで配置される……2行目(この場合も下限は行間のセンター)

とみることができる。


これらのインラインオブジェクトも、すべて配置した直後のデフォルト状態(インライン、Yオフセット=0mm)
前例同様に2行目のオブジェクトを一部削除したり、行末の■を20Qの長体80%に変更したりした場合……



  • 挙動としては上に記したのと同様
  • 上下位置が変わった部分も「Yオフセット=0mm」は不変


行中の何らかのサイズ変更がインラインオブジェクトの上下位置に影響を与える場合があるのは、やはり同じ。

この場合も、オプションでYオフセットの数値を変更しても思い通りに動かない場合があるので、上下位置を変更したい場合はベースラインシフトで調節してやるのがいいだろうが、なんらかの変更があった場合に(上下位置が動く可能性があるので)注意しなければならないのは(「仮想ボディの上」と)同じ。


これまで見てきた二つの例では、

  • インラインオブジェクトサイズが行中の文字サイズ以下の場合は、(文字揃えの設定に関係なく)文字に対して「仮想ボディの下」揃えで配置される
  • インラインオブジェクトサイズが行中の文字サイズ以上で行送り値以下の場合は、文字揃えに従って配置される
  • インラインオブジェクトサイズが行中の文字サイズ以上かつ行送り値以上の場合は、(行送りの基準位置に縛られた)下限がある(上限ではない)
  • 本文サイズあるいは他のインラインオブジェクトサイズとの関係で上下位置が動く場合があるが、その場合も位置オプションの数値は「Yオフセット=0mm」のママ

ということは一貫している。


では、文字揃えの設定に関係なく「仮想ボディの下」揃えで配置されるとしても、その設定自体が……
●「仮想ボディの下」の場合



なんとなく判っていた予想通り、見事に「仮想ボディの下」で揃えられている。


もちろん、前例通りに一部のサイズ変更を施しても揃え位置は同じで、オブジェクト自体の上下位置の移動は見られない



上下位置を調整する場合は「オプション」の「Yオフセット」で調整しても、「ベースラインシフト」で調整しても同じ結果が得られるだろうし、計算も容易。行中に何らかのサイズ変更があっても揃え位置は不変。


これらの結果を見ると、テキストフレーム内でインラインオブジェクトを多用する必要がある場合は、「行送りの基準位置」「文字揃え」共に「仮想ボディの下」で統一するのがコントロールしやすい……ということになるだろう。


また、1行(1段落)がインラインオブジェクトのみの場合は、そのサイズを行送り値に設定すれば前行とのアキが「0」となることも容易に理解できるだろう。
あとは必要なアキを足すなり、「前行とのアキ」で調整するなり……自在にコントロール可能である。

なお、インラインオブジェクトをドラッグして下に下げる場合の限度は、オブジェクトの上端が行中の最大文字サイズの仮想ボディの下端に揃う位置であることも確認した。「文字揃え=仮想ボディの下」以外では、行中の文字サイズが1字でも大きくなった場合には、オブジェクトの位置が動くという結果を招くので注意が必要(この場合の「アンカー付きオブジェクト/オプション/インライン/Yオフセット」の数値はオブジェクトサイズとなっている:3例とも)。*1

参考画像*2


蛇足ながら……
縦組みでは挙動が違うと思われるので別に検証が必要ではある*3
次回は、ついでなのでフレームグリッド内のインラインオブジェクトについて探ってみる……つもり。


【memo】20110902追記

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

*1:ここでも「仮想ボディの下」にある意味の基準があることが判る

*2:画像右ブロックの■は20Qの長体80%としてある

*3:が、私の場合基本的に「行送りの基準位置」「文字揃え」共に「仮想ボディの中央」で統一しているので(一般的にもそうだろうが)……