deco-set
deco-set は型の名前であり、単に deco * deco * deco * deco のエイリアスです。つまり、 deco 型の値の4つ組(タプル)です。以下の2つのプリミティヴを扱うとき、引数に渡す必要のある型です。
inline-frame-breakable
block-frame-breakable
そもそもなぜ4つも deco 型の値を指定する必要があるのでしょうか?それはどちらのプリミティヴも「分割可能な囲み枠」を提供するためのものだからです。
もしページ分割のことを考える必要がないのならば、1つの対象を囲むための1種類の装飾 (deco) を考えればよいことになりますが、行分割やページ分割が発生する場合はその限りではありません。たとえば以下のように途中で行分割が発生しうる場合、単なる四角いフレームだけでなく、 コ の字型や 匚 の字型のフレームも追加で与える必要があります。
code:text-example
+--------------
... jumps over the lazy dog. | The quick fox
-------------------------+ +--------------
jumps over the lazy dog. |
-------------------------+
つまり inline-frame-breakable の場合は、行の状態に合わせて4通りの囲み枠を与える必要があります。
始端・終端を含む箱 (ロ)
始端のみを含む箱(匚)
始端も終端も含まない箱 (ニ)
終端のみを含む箱(コ)
ページ分割可能な囲み枠を与える block-frame-breakable も考え方としては同様で、こちらの場合は以下の4通りとなります。
始端・終端を含む箱 (ロ)
始端のみを含む箱(冂)
始端も終端も含まない箱 (| |)
終端のみを含む箱(凵)
これらの4つ組を合わせたものが deco-set です。