紙,トランスペアレンシ(OHPシート),コンピュータ画面に表示されるページなどのページ付けしたメディアは,文書内容が一つ以上の別々のページに分割されるという点で, 連続メディアとは異なる。改ページを処理するために,CSS2は, 次のとおり視覚フォーマットモデルを拡張する。
CSS2 ページモデルは,長方形の領域内で文書がどのようにフォーマットされるかを指定する。この長方形の領域が, ページボックスであり,有限の幅及び高さをもつ。 ページボックスは, 文書が完全に可視化される実際のシート(紙, トランスペアレンシ, 画面など)に必ずしも対応するわけではない。 CSSページモデルは,ページボックス中のフォーマット化を指定するが,ページボックスをシートに転送するのは利用者エージェントの責任とする。転送は, 次を含む。
CSS2は,利用者エージェントがどのようにページボックスをシートに転送するかを指 定しないが,対象シートのサイズ及び向きを利用者エージェントに知らせるための機構を含む。
ページボックス は次の二つの領域を含む長方形の領域とする。
文書作成者は,@page規則の中で,ページボックスの寸法,向き,マージンなどを指定する。 @page規則は,キーワード"@page", (オプションのページ擬似クラスによってスペースを入れない)ページ選択子,及び(ページ文脈 の中に置くといわれる)宣言のブロックから構成される。
ページ選択子 は,どのページに宣言が適用されるかを指定する。CSS2では, ページ選択子は, 最初のページ,すべての左ページ,すべての右ページ,又は固有の名前をもつ ページを指定できる。
ページボックスの寸法は, 'size'特性を用いて設定される。ページ領域の寸法は, ページボックスの寸法からマージン領域を引いたものとする。
例:
例えば, 次の@page規則は, ページボックスのサイズを8.5 x 11インチに設定し,ページボックス辺とページ領域との間の全サイドに'2cm'のマージンを生成する。
@page { size 8.5in 11in; margin: 2cm }
マージン特性('margin-top', 'margin-right', 'margin-bottom', 'margin-left', 及び'margin')は, ページ文脈の中で適用される。次の図は,シート,ページボックス及びページマージンの関係を示す。
ページ領域の上部又は下部におけるボックスマージンの計算値は,'0'とする。
ページ文脈はフォントの概念をもたないので, 'em'単位及び'ex'単位は使用できない。マージン特性のパーセント値は, ページボックスの寸法に対して相対的とする。左マージン及び右マージンに関しては,パーセント値はページボックスの幅を参照し, 上マージン及び下マージンに関しては,パーセント値はページボックスの高さを参照する。各CSS2特性に関連するその他すべての単位が使用できる。
(ページボックス若しくは要素のどちらかの)負のマージン値又は絶対位置決めによって, 内容が, ページボックスの外部にはみ出すことがある。しかし, この内容は, 利用者エージェント,プリンタ, 又は最終的にはページ裁断機で切られることになる。
値: | <length>{1,2} | auto | portrait | landscape | inherit |
初期値: | auto |
適用対象: | ページ文脈 |
継承: | N/A |
パーセント値: | N/A |
メディア: | 視覚メディア, ページ付けしたメディア |
この特性は, ページボックスのサイズ及び向きを指定する。
ページボックスのサイズは, "絶対的"(固定サイズ)であるか, "相対的"(変倍可能, つまり利用可能なシートサイズに合わせる)であるかのどちらかとする。相対ページボックスは, 利用者エージェントが文書の大きさを変えて対象サイズの最適利用を行うことを可能にする。
'size'特性の三つの値は, 相対ページボックスを生成する。
例:
次の例では, ページボックスの外辺が対象シートに揃う。 'margin'特性のパーセント値は, 対象サイズ に対して相対的であるので, 対象シートの寸法が 21.0cm x 29.7cm(つまりA4)であれば, マージンは2.10cm及び2.97cmとなる。
@page { size: auto; /* auto is the initial value */ margin: 10%; }
'size'特性の長さの値は, 絶対ページボックスを生成する。一つだけの長さの値が指定されると, それは, ページボックスの幅及び高さの両方を設定する。即ち, ボックスは正方形になる。ページボックスは初期包含ブロック であるため, パーセント値は, 'size'特性には使用できない。
例:
次に例を示す。
@page { size: 8.5in 11in; /* width height */ }
この例は, ページボックスの幅を8.5インチに設定し,高さを11インチに設定する。この例のページボックスは, 8.5"x11"又はそれより大きいサイズの対象シートを必要とする。
利用者エージェントは, 利用者がシートへのページボックスの転送の制御するこ とを可能にする。例えば,印刷される絶対ページボックスを回転する。
ページボックスが対象シートの寸法に合わない場合は, 利用者エージェントは次を選 択してよい。
利用者エージェントは, これらの操作を実行する前に, 利用者に確認することが望ましい。
ページボックスが対象サイズより小さいとき, 利用者エージェントは, シート上のどこにでもページボックスを自由に置ける。しかし, 両面印刷のページを揃え, シートの端近くに印刷される情報が意図せずに欠落することを避けるために,ページボックスをシートの中央に置くことを推奨する。
値: | [ crop || cross ] | none | inherit |
初期値: | none |
適用対象: | ページ文脈 |
継承: | N/A |
パーセント値: | N/A |
メディア: | 視覚メディア, ページ付けしたメディア |
高品質印刷では, ページボックスの外にマークを付加することが多い。この特性は, クロスマーク, クロップマーク又はその両方がページボックスの辺のすぐ外側にレンダリングするのがよいかどうかを指定する。
クロップマークは, ページがどこで裁断するのがよいかを示す。クロスマーク は, レジスタマーク又は登録マークとしても知られ, シートを揃えるために使用される。
マークは, 絶対ページボックス('size' 特性を参照)の上だけで見ることができる。相対ページボックスでは, ページボックスは対象シートに揃えられ,マークは印刷可能な領域の外にくる。
クロスマークのサイズ,スタイル及び位置は, 利用者エージェントに依存する。
文書を両面印刷する場合, 左ページ及び右ページのページボックスは異なることが望ましい。 ページ文脈の中で定義できる二つのCSS擬似クラスによってこれを表現できる。
すべてのページは,利用者エージェントによって, :left擬似クラス又は:right擬似クラスのどちらかに自動的 に分類される。
例:
@page :left { margin-left: 4cm; margin-right: 3cm; } @page :right { margin-left: 3cm; margin-right: 4cm; }
左ページ及び右ページについて異なる宣言が行われた場合は,利用者エージェントは,たとえページボックスを左シート及び右シートに転送しなくても(片面印刷だけをするプリンタなど), これらの宣言を尊重しなければならない。
文書作成者は,:first擬似クラスをもつ文書の最初 のページにスタイルを指定してもよい。
例:
@page { margin: 2cm } /* All margins set to 2cm */ @page :first { margin-top: 10cm /* Top margin on first page 10cm */ }
文書の最初のページが:leftであるか:rightであるかは, 文書の主要な表記方向に依存し,この規定の適用範囲の外にある。しかし, 最初のページを:left又は:rightにするために, 文書作成者は最初に生成されるボックスの前に改ページを挿入してよい。例えばHTMLでは, BODY要素にこれを指定する。
:left(又は:right)@page規則において指定される特性は, 指定された擬似クラスをもたない@page規則において指定される特性を上書きする。 :first@page規則で指定される特性は, :left (又は :right)@page規則で指定される特 性を上書きする。
備考1 :left擬似クラス又は:right擬似クラスに宣言を加えることは, 文書を両面プリンタから出力するか,片面プリンタから出力するかに影響しない。これは, この規定の適用範囲外とする。
備考2 CSSの将来の版は, 他のページ擬似クラスを含んでよい。
ページモデルで内容をフォーマットする場合, 内容がページボックスからはみ出すことがある。例えば, 'white-space'特性が値'pre'をもつ要素は, ページボックスよりも幅の広いボックスを生成してよい。ボックスが絶対的に位置付けされる場合にも, それが"不都合な"位置にくることがある。 例えば画像は, ページボックスの辺に, 又はページボックスの下100,000インチに配置してもよい。
これらの要素の正確なフォーマット化に関する規定は, この規定の適用範囲外とする。 しかし,文書作成者及び利用者エージェントがページボックスの外の内容に関する次の一般原則を守ることを推奨する。
次に,CSS2におけるページフォーマット化を示す。五つの特性が, 利用者エージ ェントがどこでページを区切ってもよいか,又は区切ることが望ましいか,及びどちら(左又は右)のページで後続の内容を再開するのがよいかを示す。各改ページが, 現ページボックスのレイアウトを終了し, 文書ツリーの残りの部分を新しいページボックスにレイアウトさせる。
値: | auto | always | avoid | left | right | inherit |
初期値: | auto |
適用対象: | ブロックレベル要素 |
継承: | しない |
パーセント値 | N/A |
メディア: | 視覚メディア, ページ付けしたメディア |
値: | auto | always | avoid | left | right | inherit |
初期値: | auto |
適用対象: | ブロックレベル要素 |
継承: | しない |
パーセント値: | N/A |
メディア: | 視覚メディア, ページ付けしたメディア |
値: | avoid | auto | inherit |
初期値: | auto |
適用対象: | ブロックレベル要素 |
継承: | する |
パーセント値: | N/A |
メディア: | 視覚メディア, ページ付けしたメディア |
これらの特性の値は, 次の意味をもつ。
潜在的な改ページの位置は, 親要素の'page-break-inside'特性,先行要素の 'page-break-after'特性,及び後続要素の'page-break-before'特性の影響を受け ることが多い。これらの特性が'auto'以外の特性をもつ場合, 値'always', 'left'及び'right'は, 値'avoid'に優先する。これらの特性が改ページをどのように強制又は抑制できるかについての厳密な規則は,改ページ可能な場所の節を参照されたい。
値: | <identifier> | auto |
初期値: | auto |
適用対象: | ブロックレベル要素 |
継承: | する |
パーセント値: | N/A |
メディア: | 視覚メディア, ページ付けしたメディア |
'page'特性を使用して,要素を表示することが望ましいページの特別な型を指定できる。
例:
次の例は,すべての表を右手の横長のページに配置する。この横長のページは "rotated"と命名されている。
@page rotated {size: landscape} TABLE {page: rotated; page-break-before: right}
'page' 特性の作動を次に示す。行内内容をもつブロックボックスが,行内内容をもつ先行ブ ロックボックスと異なる'page'特性をもつ場合は,一つ又は二つの改ページが それらの間に挿入され,改ページ後のボックスは命名された型のページボックスで可視化 される。後の"改ページの強制"を参照のこと。
例:
次の例では, 二つの表が横長のページで可視化され(可能な場合は,同じページに二つの表を収める), ページの型"narrow"は,DIVで設定されているにもかかわらず,全く使用されない。
@page narrow {size: 9cm 18cm} @page rotated {size: landscape} DIV {page: narrow} TABLE {page: rotated}上のスタイルシートを次の文書に用いる。
<DIV> <TABLE>...</TABLE> <TABLE>...</TABLE> </DIV>
値: | <integer> | inherit |
初期値: | 2 |
適用対象: | ブロックレベル要素 |
継承: | する |
パーセント値: | N/A |
メディア: | 視覚メディア, ページ付けしたメディア |
値: | <integer> | inherit |
初期値: | 2 |
適用対象: | ブロックレベル要素 |
継承: | する |
パーセント値: | N/A |
メディア: | 視覚メディア, ページ付けしたメディア |
'orphans'特性は,ページの下部に残さなければならない段落の最小行数を指定する。 'widows'特性は, ページの上部に残さなければならない段落の最小行数を指定する。改ページを制御するためにどのようにそれらを使用するかの例を, 後に示す。
段落のフォーマット化に関する情報については, 行ボックスを参照されたい。
正規フローでは, 改ページは次の場所で発生できる。
これらの改ページは, 次の規則に従う。
これらの規則が,内容をページボックスからオーバフローさせない改ページ位置を与えるのに充分でない場合,追加の改ページ位置を見つけるために,規則B及び規則Dを削除する。
それでも充分な改ページ位置が求まらない場合,もっと多くの改ページ位置を見つけるために, 規則Aも規則Cも削除される。。
絶対配置されるボックスの中では, 改ページはできない。
このマージンをもつボックスを生成するすべての要素の'page-break-after'特性及び'page-break-before'特性の中で, 'always', 'left', 又は'right'の値をもつ特性が少なくとも一つ存在する場合は, a)で改ページをしなければならない。
このマージンの上の最後の行ボックス,及びこのマージンの下の最初の行ボックスが 'page'に関して同じ値をもたなければ, a)でも改ページが発生しなければならない。
CSS2は,許可された改ページのセットのどれを用いなければならないかを規定しない。つまりCSS2は,利用者エージェントが改ページ可能なすべての位置で改ページすること,又は全く改ページしないことを禁止しない。しかしCSS2は,利用者エージェントが次の発見的手法を(それらが矛盾することがあることを認めた上で)遵守することを推奨する。
例:
例えば,スタイルシートが, 'orphans : 4', 'widows : 2'をもち, 現ページの末尾に20行(行ボックス)が利用できるとする。
次に,'orphans'が'10'であり, 'widows'が'20'であって,現ページの末尾に8行が利用できるとする。
ページ文脈の宣言は,正規のCSS2宣言と同様に 段階に従う。
例:
次の例を考えよう。
@page { margin-left: 3cm; } @page :left { margin-left: 4cm; }
擬似クラス選択子のより高い固有性によって,左ページの左マージンは'4cm'になり,その他のすべてのページ(つまり右ページ)は'3cm'の左マージンをもつ。