line-break
line-break: bool -> bool -> context -> inline-boxes -> block-boxes
テキスト処理文脈とインラインボックス列を受け取り,行分割を行って段落を作成するためのプリミティヴ.
read-inlineを「inline-textをinline-boxesに変換する関数」と見做すのであれば,line-breakは「inline-boxesをblock-boxesに変換する関数」と見做すことができます.長い一本の行として組まれたインラインボックス列を,位置を考慮しつつ適切にほぐしながら行分割します.
1番目と2番目のbool型の値は,「作る段落の手前または直後でページ分割してもよいか」を決める値です. true ならばページ分割を許容し, falseならば禁止します(もしかすると抑制かもmonaqa.icon).
3番目の引数で渡すテキスト処理文脈は
行幅
段落間の空白
行送り
単語間で行分割を行うときのペナルティ
といったパラメータを決定するのに用いられます.4番目でinline-boxesになっている(=既に組まれている)ものを引数として渡すわけですから,フォントサイズなどinline-boxesで組まれる時点で決まってしまうものについては変更されません.たぶん
引数が4つもあり少し複雑な関数ですが,様々な場面で用いられます.主に
段落を作成したいとき(+p の実装とか.これは当たり前ですね)
インラインボックス列をブロックボックス列へと変換したいとき
前または後でページ分割を抑制するようなブロックを作成したいとき
といった用途が代表的です.