DSSSLのフォーマット処理は次のような機能を指します。
- 表示スタイル指定表示スタイルを指定し表示位置を決定
- 内容の選択と並べかえ入力文書から出力する内容の取捨選択と表示順番の並べかえ
- 素材の作成新しい素材の作成や入力文書に明示的に存在しない素材の取り込み
- 素材の除去入力文書で使われている素材の除去
DSSSLでは、表示スタイルを指定するのに「特質」を使います。「特質」の集合は、様々な組版の概念として構成されています。
「流し込みオブジェクトクラス」は、組版の概念をまとめたもので、現在の規格では47あります。
流し込みオブジェクトクラスには、行外領域・行内領域・添付領域という考え方が導入されています。
流し込みオブジェクトクラスの組版機能は、「特質」で指定します。
DSSSL規格では、処理系独自の流し込みオブジェクトクラス集合の定義や独自の流し込みオブジェクトクラスを定義して良いことになっています。
どのような流し込みオブジェクトクラスがあるのかを簡単に見てみましょう。
(a) 文書の枠組みとしての流し込みオブジェクトクラス
文書の枠組みとして最上位の領域に指定することのできる流し込みオブジェクトクラスは次の3つです。
- ページ列(page−sequence)
- 単純ページ列(simple−page−sequence)
- スクロール(scroll)
「ページ列(page−sequence)」は「ページモデル」と呼ぶ制御方式で複数の「ページ区画」の構成が指定でき、先端的な組版技術を含む文書組版に必要な機能の全てを網羅できます。
単純ページ列(simple−page−sequence)」は単純なページ単位の組版機能に対応します。
「スクロール(scroll)」はオンライン表示を目的としたごく単純な組版機能に対応します。
(b) 結合のための流し込みオブジェクトクラス
複数の流し込みオブジェクトを結合するための流し込みオブジェクトは次の2つです。
- 列(sequence)
- 行外グループ(display−group)
「列(sequence)」は、下位の流し込みオブジェクトクラスが生成した領域を結合した領域を生成し継承可能特質を結合します。
「行外グループ(display−group)」は、下位の行外領域を生成する流し込みオブジェクトクラスを結合し、継承可能特質と非継承可能特質の全てを結合します。
(c) 段組みと段落のための流し込みオブジェクトクラス
段組みと段落のための流し込みオブジェクトは次の5つです。
- 段集合列(column−set−sequence)
- 段落(paragraph)
- 段落分割(paragraph−break)
- 揃い段(aligned−column)
- びょう(錨)(anchor)
「段集合列(column−set−sequence)」は、段組みのための領域を生成します。
「段落(paragraph)」は段落を表現します。
「段落分割(paragraph−break)」は、段落を分割します。が、できるだけ使わないことが望ましいことになっています。
「揃い段(aligned−column)」は、外から揃えられた段落をグループ化するために使います。
「びょう(錨)(anchor)」は、複数の段が存在する場合に内容の位置の同期をとるために使います。
(d) 行と文字や文字修飾のための流し込みオブジェクトクラス
行と文字と文字修飾のための流し込みオブジェクトクラスは次の8つです。
- 行フィールド(line−field)
- 文字(character)
- リーダ罫(leader)
- 埋め込みテキスト(embedded−text)
- 傍線・抹消線(score)
- グリフ修飾(glyph−annotation)
- 複数行行内注釈(multi−line−inline−note)
- 強調マーク(emphasizing−mark)
「埋め込みテキスト」は、表記方向モードが異なるテキストを埋め込むのに使います。ただし、規格で許されている表記方向は左から右へと右から左へとの2つで日本語の縦書き文書によく見られる表記方向が直交するような組版には使えません。
他の「行と文字や文字修飾のための流し込みオブジェクト」の機能は直感的に理解できます。その理由は普段使用しているワードプロセッサがここに見られるような組版の機能を中心にサポートしているからです。
(e) 側線と揃え点の流し込みオブジェクトクラス
側線と揃え点のための流し込みオブジェクトクラスは次の2つです。
- 側線(sideline)
- 揃え点(alignment−point)
「側線(sideline)」は、添付領域と添付物を生成し対象の領域に添付します。
「揃え点(alignment−point)」は、添付領域に対する対象領域内の明示的な揃え点を指定します。
(f) 領域変換の流し込みオブジェクトクラス
領域変換を行うための流し込みオブジェクトクラスは次の1つです。
- 取り込みコンテナ領域(included−container−area)
「取り込みコンテナ領域(included−container−area)」は領域コンテナと呼ばれる変換のための領域を生成し、幅や高さを変換したり90°単位で回転させたりといった様々な領域変換を行います。
(g) 並び換えの流し込みオブジェクトクラス
並び換えを行うための流し込みオブジェクトクラスは、次の2つです。
- 並び(side−by−side)
- 並び対象(side−by−side−item)
「並び(side−by−side)」は、相対位置を調整するための並び換えを行います。
「並び対象(side−by−side−item)」は、並び換えの揃えに用いる対象の位置を指定します。
(h) 罫線や図形の流し込みオブジェクトクラス
罫線や図形のための流し込みオブジェクトクラスは、次の3つです。
- 罫線(rule)
- 囲み罫(box)
- 外部グラフィック(external−graphic)
(i) 数式の流し込みオブジェクトクラス
数式のための流し込みオブジェクトクラスは、次の12です。
- 数式列(math−sequence)
- 数式解除(unmath)
- 下付き(subscript)
- 上付き(superscript)
- 文字付き(script)
- マーク(mark)
- フェンス(fence)
- 除算(fraction)
- 根号(radical)
- 数学演算子(math−operator)
- 格子(grid)
- 格子セル(grid−cell)
(j) 表の流し込みオブジェクトクラス
表の流し込みオブジェクトは次の6つです。
- 表(table)
- 表部部分(table−part)
- 表列(table−column)
- 表行(table−row)
- 表セル(table−cell)
- 表罫線(table−border)
(k) オンライン表示の流し込みオブジェクトクラス
オンライン表示の流し込みオブジェクトは、次の4つです。
- スクロール(scroll)
- 複数モード(multi−mode)
- リンク(link)
- 余注(marginalia)
スタイル言語で実現するDSSSLのフォーマット処理の概念モデルを次に示しておきます。