なんでやねんDTP・新館

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

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

以前から気になっていた、テキストフレームにおけるインラインオブジェクトと「行送りの基準位置」および「文字揃え」の関係を少し検証してみた。


以下のように基本16Qの文字列の中にそれぞれのサイズのインラインオブジェクトを配置してみた。


  • 基本文字サイズ=16Q、行送り=20H
  • すべて1段落、改行は入れていない
  • インラインオブジェクトはすべて配置した直後のデフォルト状態(インライン、Yオフセット=0mm)
  • 目安としてレイアウトグリッドを表示しているが、フレームはあくまでもテキストフレーム


ご覧の通り、やはり「行送りの基準位置」と「文字揃え」が同一でないと基本文字サイズの行送りに狂いが生じ、コントロールし難い(持論通り)ので、以下ではその部分だけをみていくことにするが、色々とやっているとややこしいことになってきたので、「テキストフレーム内のインラインオブジェクト」として、「仮想ボディの上・中央・下」の少なくとも3回に分けて連載とすることにする。


まず、
●「仮想ボディの上」の場合(行送りを24Hに変更したものを並べた)……


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

とみることができる。


これらのインラインオブジェクトは、すべて配置した直後のデフォルト状態(インライン、Yオフセット=0mm)であることには注意が必要。
例えば、2行目の大きいオブジェクトを削除すると上下位置は変更されるし、行中の文字サイズが(大きく)変更されても上下位置は変わるが「Yオフセット=0mm」は不変(行末にあった■を20Qの長体80%に変更)。


  • 最大オブジェクトに下揃え(2行目)、オブジェクトサイズが行中の文字サイズ以下の場合は(文字揃えに関係なく)文字に対して「仮想ボディの下」揃えなどの結果は、上の挙動の通り。


さらに、オプションでYオフセットの数値を変更しても思い通りに動かない場合があるので、上下位置を変更したい場合はベースラインシフトで調節してやるのがいいだろうが、同一行になんらかのサイズ変更があった場合に(上下位置が動く可能性があるので)注意しなければならないのは同じ。
※あるいはカスタム設定でアンカーに対する位置関係を固定するのがいいだろうと思ったが、次の文字に対する回り込みは効かないので不採用。


あと2種類の設定は後日……