mdslide

ADR-0018 本文量の見積もりはマスターの行間・段落間隔・内側余白に合わせ、本文はヘッダとフッタの手前に収める

状況

決定

  1. importMaster はレイアウトの本文プレースホルダーから、行間(a:lnSpc)、段落前後の間隔(a:spcBef / a:spcAft、行に対する割合か pt)、内側余白(a:bodyPrlIns tIns rIns bIns、既定 0.1in / 0.05in)を読む。レイアウト → マスターの本文プレースホルダー → マスターの bodyStyle の順に継承する。
  2. 見積もり(src/model/fit.ts)は、1 行の高さをマスターの行間(無ければ文字サイズ × 1.2)とし、テキストの段落ごとに段落前後の間隔を行数に換算して足す。本文枠は内側余白を引いた大きさで数える。空行・表の行・画像行には段落間隔を足さない。
  3. 本文を置いてよい上下の範囲(contentBand)をマスターから求める。Body-Text レイアウトとマスターの図形・画像・日付 / フッター / スライド番号のうち、本文の列にかかり、スライドの上 3 分の 1 に収まるものをヘッダ、下 3 分の 1 から始まるものをフッタとみなす。範囲はそれらからスライド幅の 1% 離す。
  4. 画像スライドの画像と本文はこの範囲に収める(プレビュー、見積もり、deck.json の geometry が同じ範囲を使う)。テキストと 2 カラムは本文プレースホルダーの位置を変えず、見積もりとプレビューの本文の下端だけをフッタの手前で切る(文字は上から流れるので、正しく分割すればフッタに届かない)。
  5. 本文枠がフッタやヘッダと重なっているマスターは、設定のマスター画面で警告する。ヘッダとの重なりは PowerPoint 側で直してもらう。
  6. 書き出し時の溢れの警告は、deck.json の fit(アプリの見積もり)を使う。deck.json の契約は変えない(fit.used / fit.capacity は v2 から存在する)。

結果

状態