コンテンツにスキップ

垂直方向の処理

本文書では,minitype にてブロックが垂直方向にどのように配置されるかを説明します.

ブロックは横組では上→下,縦組では右→左に配置されます. ゆえに,本文書にて「幅」,「高さ」,「上」「下」と記載されている場合,縦組においてはそれぞれ「高さ」,「幅」,「右」,「左」と読み替えてください.

隣接するブロックの間には,DocumentStyle または BoxStyle の gaps で定義した間隔が挿入されます. 間隔の量はブロックの種別の組み合わせによって決定されます.

ただし,wrap を指定したボックスの直後に続くテキストブロックには間隔が挿入されません. 回り込みを実現するために,テキストはボックスと同じ位置から開始します.

ボックスのマージンは背景の外側,パディングは背景の内側に挿入されます. したがって,ボックスと隣接するブロックとの間隔には,ボックスの margin とブロック間の gaps の両方が含まれます.

- 前のブロック
- ブロック間の間隔
- margin-block-start
------ 背景の開始端 ------
- padding-block-start
- コンテンツ
- padding-block-end
------ 背景の終了端 ------
- margin-block-end
- ブロック間の間隔
- 次のブロック

テキストブロックの各行は,lineHeight で指定した行送りを保ちながら配置されます. 最終行も行の開始位置から lineHeight 分のスペースが確保されますが,文字より後に残る lineHeight と文字サイズの差は,段全体のサイズを算出する際には除外されます. そのため,テキストブロックの後に続く別のブロックとの間の実際のスペースは,次の通りになります.

(lineHeight - 最終行の文字サイズ) + blocks 間のアキ

ボックスのコンテンツサイズからは lineHeight - 最終行の文字サイズ が除外されます. 例えば,背景を持つボックスでは,最終行の文字の下端から背景の終了端まで,終了側の padding 分の余白が確保されます. ただし,blockSize が指定されたボックスのブロックでは,コンテンツサイズにかかわらず,背景を含むボックスの高さは指定値になります.

分割可能(splitable: true)なボックスが段をまたぐ際,パディングの挙動は以下の通りになります.

  • 当該ボックスが paddingOnBreak: false の場合
    上側の padding は最初のボックス,下側の padding は最後のボックスにのみ適用されます.
  • 当該ボックスが paddingOnBreak: true の場合
    すべてのボックスに padding が適用されます.

見出し等が n 行分の高さに配置されるように処理することを「行取り」と呼びます. gyodori を指定すると,当該ブロックが n 行取りになるように,前後に均等な余白が挿入されます. コンテンツが行取りのサイズを超える場合,余白は挿入されません.

テキストブロックおよびボックスは,分割(splitable)の可否に応じて以下の通りに処理されます.

  • 分割不可(splitable: false,既定値)の場合
    ボックス全体が現在の段に収まらない場合に次の段へ送られます. ただし,ボックス全体が次の段にも収まらない場合は,現在の段にはみだして配置されます.
  • 分割可能(splitable: true)の場合
    現在の段に収まる分だけを現在の段に配置して,残りを次の段へ送ります.

needspace を指定すると,ブロックを配置した後に needspace 分のスペースが残らない場合に,ブロックごと次の段へ送ります. 見出しが段の末尾に取り残される等,ブロックの孤立を防ぐために使用します.

ブロック説明
newpage現在のページを終了して,次のページへ移動します.
clearpage未処理のフロートを全て配置してから,次のページへ移動します.
newcolumn現在の段を終了して,次の段へ移動します.一段組では改ページとして動作します.

フロートは,段の上端または下端に配置されます. フロートを現在の段に配置すると版面のブロックサイズを超える場合,次の段またはページの上端へ送られます.

wrap を指定したボックスは幅の一部を占有します. 後続するテキストブロックは残りの領域に回り込みます. ボックスのブロックサイズを超えた位置から,テキストは通常の幅で配置されます.

脚注は,本文中に参照が現れた行が処理されたタイミングにて,処理中のページの脚注領域に追加されます. 脚注を追加した結果,脚注領域が版面のブロックサイズを超える場合,その脚注は次のページに送られます. footnoteSpan: "column" を指定した段組では,脚注はカラムごとに独立して管理されます.

columnFill: "balance" を指定した段組では,各段の高さが均等になるよう自動的に調整されます. 均等割付は,ボックスが現在のページ内で完結し,かつフロートがない場合に適用されます. これらの条件を満たさない場合,子ブロックは各段の端まで順に配置されます.