3.4.3. 流し込みオブジェクトクラスと特有の特質

 一般的な文書の組版に対応する流し込みオブジェクトクラスとして以下の代表的なクラスを14個取り上げ、それぞれに特有の特質について解説します。

  • (a) 列
  • (b) 行外グループ
  • (c) 単純ページ列
  • (d) ページ列
  • (e) 段集合列
  • (f) 段落
  • (g) 罫線
  • (h) 外部グラフィック
  • (i) 傍線・抹消線
  • (j) 囲み罫
  • (k) グリフ修飾
  • (l) 複数行行内注釈
  • (m)強調マーク
  • (n) 表

各クラスについての説明項目は次のとおりです。

  • 【用途】この流し込みオブジェクトクラスの使いみち
  • 【ポート】ポートの種類:ポートに指定できるもの(この場合、ポートは他の流し込みオブジェクトを接続するためのものです。
  • 【機能】この流し込みオブジェクトクラスに必要なスタイル言語のオプション機能
  • 【データ型】この流し込みオブジェクトクラス特有のデータ型
  • 【手続き】この流し込みオブジェクトクラス特有の手続き
  • (以上の3つについては、存在しない場合は省略します。)
  • 【説明】この流し込みオブジェクトクラスによって行われる処理の概念
  • 【共通特質】この流し込みオブジェクトクラスで使われる共通特質
  • 【特質】この流し込みオブジェクトクラスで使われる特質

(a) 列:sequence

  • 【用途】任意のオブジェクトを流し込みの親に追加します。
  • 【ポート】単一の主ポート:行内領域または行外領域となる任意のオブジェクト 列は他のどの流し込みオブジェクトのポートに指定することもできますが、その列の内容となる全ての流し込みオブジェクトが列を指定したポートに指定可能でなければなりません。
  • 【説明】子をフォーマットして得た領域を結合して1つの領域にします。主に継承可能特質の指定のために利用されます。(例えば<B>タグは font−weight:が’bold となるparagraphの続きとする、など)
  • 【共通特質】なし
  • 【特質】なし

(b) 行外グループ:display−group (行外)

  • 【用途】任意の行外領域をまとめます。
  • 【ポート】単一の主ポート:行外領域となる任意のオブジェクト
  • 【説明】子をフォーマットして得た行外領域を結合して1つの領域にします。sequenceを行外専用にしたものとも言えます。
  • 【共通特質】行外領域の配置
  • position−preference:
  • space−before:
  • space−after:
  • keep−with−previous?:
  • keep−with−next?:
  • break−before:
  • break−after:
  • keep:
  • may−violate−keep−before?:
  • may−violate−keep−after?:
  • 【特質】
  • coalesce−id: #f | stringcoalesce−id: #f | string
  • default = #fグループ化に際しての重複を防ぐためのID。(display−groupの中に同じIDを持つものが存在すれば重複となる。)

単純ページ列:simple−page−sequence(行外)

  • 【用途】簡単なレイアウトのページを作成します。
  • 【ポート】単一の主ポート:行外領域となる任意のオブジェクト
  • 【機能】simple−page
  • 【手続き】(page−number−sosofo)
  • (current−node−page−number−sosofo)
  • 【説明】ページサイズ、マージンサイズおよびヘッダ・フッタだけを指定する簡単なレイアウトのページを作成し、そこに内容を配置します。
  • 【共通特質】表記方向
  • writing−mode:
  • 【特質】
  • page−width: length
  • page−height: length
  • default = (処理系依存)ページサイズの設定(横・縦)
  • left−margin: length
  • right−margin: length
  • top−margin: length
  • bottom−margin: length
  • default = 0ptマージンサイズの設定(左・右・上・下)
  • header−margin: length
  • footer−margin: length
  • default = 0ptヘッダマージン、フッタマージンの設定
  • left−header: sosofo
  • center−header: sosofo
  • right−header: sosofo
  • left−footer: sosofoc
  • center−footer: sosofo
  • right−footer: sosofo
  • default = (empty−sosofo)各ヘッダ/フッタの内容となるオブジェクトの指定(simple−page−sequenceでは、ヘッダとフッタは1行以内と制限されています。)

(d) ページ列:page−sequence(行外)

  • 【用途】柔軟なページレイアウトのページを作成します。
  • 【ポート】ページモデル内のページ区画ごとに指定します。
  • 【データ型】page−model / page−region
  • 【手続き】(page−model?) / (define−page−model)
  • 【説明】各ヘッダ/フッタの内容となるオブジページモデルを設定して、複雑な体裁のページを生成し、そこに内容を配置します。
    このオブジェクトは、基本的には流し込みのルートの子であり、直前の流し込みオブジェクトはページ列でなければなりません。
  • 【共通特質】なし
  • 【特質】
  • initial−page−models: list(page−model)
  • default = list()初期ページのページモデルのリスト。
  • repeat−page−models: list(page−model)
  • 続きのページのページモデルのリスト。
  • force−last−page: #f | symbol
  • default = #fページ列の最後に要求されるページの表裏。最後のページがこれにならなければ、ブランクページが追加されます。
  • front – 表 –
  • back – 裏 –
  • force−first−page: #f | symbol
  • default = #fページ列の最初に要求されるページの表裏。最初のページがこれにならなければ、直前のページ列はブランクページを追加します。
  • front
  • back
  • first−page−type: symbol
  • default = ’parentページ列の最初に要求されるページの表裏。
    最初のページがこれにならなければ、エラーとなります。
    シンボルがparentなら親(ルートに限る)によって判定されます。
  • front
  • back
  • parent
  • blank−back−page−model: #f | page−model
  • 最後のページが裏でforce−… によって要求されている場合にのみ適用するページモデル。
  • blank−front−page−model: #f | page−model
  • 最後のページが表でforce−…によって要求されている場合にのみ適用するページモデル。
  • justify−spread?: boolean
  • 見開き2ページの下辺を揃えるか?
  • page−category:
  • このページがフォーマットされて領域生成するカテゴリ
  • binding−edge: symbol
  • default = ’left綴じられるfrontページの端
  • left
  • right
  • top
  • bottom

【詳細説明】

<1>ページモデルの構造

 ページモデルは、複数のページ区画と呼ばれるブロックで構成されており、それぞれのページ区画について、サイズや流し込み方向などが設定可能です。これにより、1ページの中に縦組みと横組みの両方を含めることもできます。そして、それぞれのページ区画に対して、ポートを指定することによって、流し込むオブジェクトを指定することになります。また、ページ区画にはより柔軟なヘッダとフッタを設定することも可能です。これらは生成領域指定の形で指定されます。

<2>ページモデル、ページ区画、生成領域のパラメータ

 まず、ページモデルは、(define−page−model)によって生成されます。ページサイズやページ区画配置の設定などが含まれます。
 ページ区画は(region)によって指定されます。ページ内における座標位置、サイズ、内容となるポートやヘッダ・フッタの指定などが含まれます。
 生成領域指定をまとめる手続きはありません。生成領域指定には、サイズ、内容となるsosofo、ヘッダ・フッタの位置の指定などが含まれます。

<2-1>ページモデル

 ページモデル(define−page−model)のパラメータは、以下のような構造になっています。

  • ページ区画
  • (region …)そのページモデルに含まれるページ区画を指定します。
    1つ以上指定しなければなりません。
  • (width length)そのページの幅をlengthで指定します。
  • 高さ
  • (height length)そのページの高さをlengthで指定します。
  • 流し込み方向
  • (filling−direction symbol)そのページの標準の流し込み方向を指定します。これはページ区画ごとの指定で上書きされます。page−modelでもregionでも指定がなければエラーとなります
  • (symbol : left−to−right/right−to−left/top−to−bottom)
  • 修飾
  • (decorate decoration−area)このページを修飾するdecoration−areaを指定します。

<2-2>ページ区画

 ページ区画(region)のパラメータは、以下のような構造になっています。

  • x座標
  • (x−origin length)ページ区画の起点をそのページの中のx座標で指定します。
  • y座標
  • (y−origin length)ページ区画の起点をそのページの中のy座標で指定します。
  • (width length)ページ区画の幅をlengthで指定します。
  • 高さ
  • (height length)ページ区画の高さをlengthで指定します。
  • 修飾
  • (decorate decoration−area)ページ区画を修飾するdecoration−areaを指定します。
  • 流し込み方向
  • (filling−direction symbol)ページ区画の流し込み方向を指定します。
    指定がなければページモデルの流し込み方向になりますが、その指定もなければエラーになります。
  • ヘッダ
  • (header generated−area)ページ区画の最初に生成される領域を指定します。
  • フッタ
  • (footer generated−area)ページ区画の最後に生成される領域を指定します。
  • 流し込む内容
  • (flow port−specifier+)ページ区画に流し込むオブジェクトをポート(のラベル)で指定します。port−specifierに#fを指定すると、主ポートになります。複数の区画で同じポートを指定した場合、その指定があった順に流し込まれます。

<2-3>生成領域の指定

 生成領域指定には、以下のものが含まれます。
 特に手続きで生成領域型を返すものはないので、以下をそのまま(header)/(footer)内で指定しなければならないでしょう。

  • (width length)生成領域の幅を指定します。
  • 高さ
  • (height length)<生成領域の高さを指定します。/span>
  • 流し込み方向
  • (filling−direction symbol)その生成領域の流し込み方向を指定します。
  • 内容配置
  • (contents−alignment symbol)その生成領域の内容の配置を指定します。
    デフォルト値は’startです。
  • start
  • end
  • center
  • justify
  • 生成内容
  • (generate sosofo)その生成領域に流し込まれる行外オブジェクトを指定します。

<3>ページ列の処理

<3-1>ページ区画の配置

 まず、ページ全体のサイズをpage−modelの(width) (height)で指定します。
 次に、各ページ区画に座標(x−origin)(y−origin)とサイズ(width)(height)を指定します。
 それに従ってページ区画をページ中に確保できなければエラーとすればよいことになります。

<3-2>空白ページの追加(丁を揃える)

 全体を通して、ページ列の最初のページはfirst−page−type:の値と同じになります。もし、これが’parentならば、表ページからになります。force−last−page:が#f以外の場合には、最後のページのタイプがこれに合致しなければ、空白ページを追加して合致させます。

force−first−page:が#f以外の場合

  • 直前のページ列のforce−last−page:の値と同じであってはなりません。
  • 直前のページ列のforce−last−page:の値と合致してしまうようであれば、直前のページ列が空白ページを追加して調整します。

<3-3>見開きを意識した処理

 justify−spread?:#tの場合、見開き2ページで内容の長さを揃えます。綴じ込み処理を行う場合はbinding−edge:で指定した辺が綴じ込む辺となるのでその部分のマージンを追加するなど、処理系依存の方法で綴じ込みに対応します。

<3-4>初期ページを特別に別個のページモデルで指定することもあります。

<3-5>特質page−category:の値は間接sosofo手続き(category−page−number)が利用します。

<3-6>1つのポート内容が複数の区画に流し込まれる場合、その順序はスクリプト上の指定順になります。ページ区画の(flow port−specifier)の項を参照して下さい。

(e) 段集合列:column−set−sequence(行外)

  • 【用途】ページレイアウトの中の段組みを作成します。
  • 【ポート】段集合モデル内の段部分集合ごとに指定します。
  • 【データ型】column−set−model / column−subset
  • 【手続き】(column−set−model?) / (define−column−set−model)
  • 【共通特質】行外領域の配置
  • position−preference:
  • space−before:
  • space−after:
  • keep−with−previous?:
  • keep−with−next?:
  • break−before:
  • break−after:
  • keep:
  • may−violate−keep−before?:
  • may−violate−keep−after?:
  • 段抜き
  • span:
  • span−weak?:
  • 【特質】
  • column−set−model−map: list(list(page−model, column−set−model))
  • default = list()指定されたリスト中のページモデルの内容としてこの段集合列が出現する場合の、段集合モデルを指定します。
  • column−set−model: #f | column−set−model
  • default = #fcolumn−set−model−map:で指定されたオブジェクトが適用できない場合の、デフォルトの段集合モデル。#fの場合、column−set−model−map:の配置不可能はエラー。

【詳細説明】

<1>段集合の構造

 段集合は、段集合モデルを指定して生成します。段集合モデルは複数の段部分集合を含み、段部分集合は複数の段を含みます。段集合が領域コンテナとなり、段部分集合が流し込みの対象になります。「段」自体に何かを流し込むわけではありません(段は領域コンテナにはなりません)。

<2>段集合モデル、段部分集合、段のパラメータ

 column−set−model変数は、(define−column−set−model)によって生成されます。段集合のサイズ情報と論理構造を表す段部分集合の情報を含みます。段部分集合は、(column−subset) によって指定します。
 中に含む段と出力内容のポートを指定し、レイアウト順も決定します。段部分集合中の段は、(column)によって指定します。段集合内における位置情報と段のヘッダ・フッタなどの指定が含まれます。

<2-1>段集合モデル(define−column−set−model)のパラメータ

  • 段部分集合
  • (column−subset …)その段集合モデルに含まれる段部分集合を1つ以上指定します。
  • 最大限流し込みサイズ指定
  • (fill−out [boolean])#tの場合、各段領域が配置する領域の最大サイズまで流し込みされます。
  • 段部分集合の結合
  • (tie [column−subset−spec column−subset−spec …])2つ以上の段部分集合を結合する場合に指定します。
  • 流し込み方向
  • (filling−direction [symbol])その段集合の標準の流し込み方向を指定します。
    段集合ごとの指定で上書きされます。
    page−modelでもpage−regionでも指定がなければエラーとなります。
  • left−to−right
  • right−to−left
  • top−to−bottom
  • (width [length])その段集合の幅を指定します。
  • 高さ
  • (height [length])その段集合の高さを指定します
  • 修飾
  • (decorate [decoration−area])この段集合を修飾するdecoration−areaを指定します。

<2-2>段部分集合モデル(column−subset)のパラメータ

  • (column …)その段部分集合に含まれる段を指定します。
  • フロー内容
  • (flow [port−specifier zone−name])その段部分集合に流し込むオブジェクトをポートで指定します。区域を指定することで、段部分集合の中でどの位置に配置するかが決まります。1つのオブジェクトを複数の区域に流し込むことは上部浮動区域と下部浮動区域の場合にのみ可能です。
  • zone−name : top−float/body−text/
  • bottom−float/footnote
  • 上部浮動区域空白
  • (top−float−space−below [display−space])上部浮動区域と本文テキスト区域の間の空白
  • 下部浮動区域空白
  • (bottom−float−space−above [display−space])本文テキスト区域と下部浮動区域の間の空白
  • バランス指定
  • (balance? [boolean])最後の段部分集合内の段長を揃えるか?
  • #t:スペースは各段の終わりに均等に配分されます。
  • #f:スペースは後ろの段から配分していきます。
  • 両端揃え指定
  • (justify? [boolean])段の両端揃えをするか?
  • #t:余分なスペースは各段の内容領域前後にまとめて配分されます。
  • #f:スペースは各段の後に配分されます。
  • fill−outが#tの場合にのみ#tを指定できます。
  • 両端揃え可能スペース率
  • (justify−limit [number(0~100)])
  • default = 100両端揃え可能なスペース率の上限。
    段の最大行長に対するスペースの割合が、ここで指定したパーセント値を超える場合は、両端揃えしません。
  • 最終両端揃え可能スペース率
  • (justify−last−limit [number(0~100)])
  • default = 0最後の段集合の段に適用するjustify−limit
  • 長さ補正
  • (length−deviation [length])
  • default = 0pt段部分集合の段長が揃えられるか、両端揃えされる場合に上限とする段長の差
  • 段長の相対変化
  • (length−decrease−order [symbol | #f])段長を短くする順
  • forward: 前に進むほど短くなります。
  • backward:後に進むほど短くなります。
  • #f:制限しません。
  • 行の揃え
  • (align−lines? [boolean])隣合った段との行を揃えるために、余分なスペースを配分するか?

<3>段(column)のパラメータ

 段集合のフロー方向が縦ならwidthおよびx−originの指定が、横ならheightおよびy−originの指定が必要です。

  • (width [length])段の幅を指定します。
    流し込み方向がtop−to−bottomなら指定必須です。
  • 高さ
  • (height [length])段の高さを指定します。
    流し込み方向がtop−to−bottom以外なら指定必須です。
  • x座標
  • (x−origin [length])段の開始位置をx座標で指定します。
    流し込み方向がtop−to−bottomなら指定必須です。
  • y座標
  • (y−origin [length])段の開始位置をy座標で指定します。
    流し込み方向がtop−to−bottom以外なら指定必須です。
  • 脚注区切り子
  • (footnote−separator [generated−area])脚注区域を区切るスペースなどの生成領域を指定します。
  • ヘッダ
  • (header [generated−area])ヘッダ部となる生成領域を指定します。
  • フッタ
  • (footer [generated−area])フッタ部となる生成領域を指定します。

<4>column−set−sequenceの処理

<4-1>段領域の配置

 段集合のサイズはcolumn−set−modelの(width) (height)で設定します。
 そして、段の配置は、(column)の(width) (height) (x−origin) (y−origin)で設定します。

 各領域は、(flow)式中のzone−nameで、次のいずれかの区域に流し込むことを指定します。

  1. top−float(上部浮動区域)
  2. body−text(本文テキスト区域)
  3. bottom−float(下部浮動区域)
  4. footnote(脚注区域)

 (flow)で指定された領域は、この順に配置されます。
 1つの領域を複数の区域に流し込むことが指定できるのは、top−floatとbottom−floatの場合だけです。

<4-2>段内容の調整

 各段に流し込みされる内容は、その段を含む段部分集合が規定します。
 (column−subset)中の(flow)で指定されたポートの内容がその部分集合の中の段に流し込みされます。ある段に収まりきらなくなったら、同じ部分集合中の次の段に続きを流し込みます。
 この順序はレイアウト順と呼ばれます。
 それでも収まらない場合は、次の段集合領域を生成することになります。レイアウト順は、(column−subset)中の(column)指定の出現順と一致します。

<4-3>段抜き機能・段部分集合の結合

<段抜きの意義>

 段抜きとは、本来複数の段に分断されているものを、1つの領域としてまとめて扱うことです。
 新聞の見出しや図の配置などで用いられます。
 特質span:に指定した数だけ、段を抜くことになります。

<結合の意義>

 結合とは、複数の段部分集合をまとめて扱うことです。
 同数の段を持つ段部分集合だけが結合できます。
 本文と傍注を同期させる場合などに使います。

<段抜き可能・不可能>

 ある段部分集合内において、ある段が他の連続する段の間に挟まれていない場合は段抜き可能です。つまり、段が内容の順に配置されていれば段抜き可能ということです。また、footnote区域となる領域は段抜きできません。footnote区域を段抜きしたい場合は段集合を入れ子にします。

<強い段抜き・弱い段抜き>

 段抜き可能な段ならspan:で指定された数だけ段抜きする、というのが強い段抜きで、(流し込み方向の)直前の段だけ段抜きする、というのが弱い段抜きです。
 強い段抜きを行う領域は、厳密には以下に示す領域の後に来ると定義されます。

  1. 同じ段部分集合中の領域
  2. (流し込み方向で)幾何学的に前にある領域
  3. 同じ段抜きに含まれる段抜きを持つ領域
  4. 同じ区域でラベルされた領域

(f) 段落:paragraph(行外)

  • 【用途】段落を作成します。
  • 【ポート】行内領域または行外領域となる任意のオブジェクト
  • 【説明】ポートの内容が行内領域なら行領域を生成し、それを含む行外領域となります。行外領域なら、新たな段落領域を生成します。この場合、行分割処理が自動的に行われます。
  • 【共通特質】フォント
  • font−family−name:
  • font−weight:
  • font−posture:
  • font−structure:
  • font−proportionate−width:
  • font−name:
  • font−size:
  • 行外領域の配置
  • position−preference:
  • space−before:
  • space−after:
  • keep−with−previous?:
  • keep−with−next?:
  • break−before:
  • break−after:
  • keep:
  • may−violate−keep−before?:
  • may−violate−keep−after?:
  • 段抜き
  • span:
  • span−weak?:
  • 言語関連
  • language:
  • country:
  • インデント
  • start−indent:
  • end−indent:
  • 表記方向
  • writing−mode:
  • 【特質】数が多いので、さらに以下の9種類に分類しています。
  • 1. 行分割
  • 2. 揃え
  • 3. 行間調整
  • 4. 段落インデント
  • 5. ハイフネーション
  • 6. 行番号
  • 7. 両端揃えのための調整
  • 8. その他の行組版処理
  • 9. その他

<1>行分割

  • lines: symbol
  • default = ’wrapどのように段落の内容を分割するかを指定します。
  • wrap 配置する空間のサイズに合わせて分割します。
  • asis RE文字の後でのみ分割します。
  • asis−wrap RE文字の後と、さらに配置する空間に合わせて分割します(= ’asis+’ wrap)。
  • asis−truncate RE文字の後でのみ分割します。空間からはみ出た部分は切り捨てます。
  • none 分割が存在しないものとします。
  • asis−truncate−char: char | #f
  • default = #fカットされた行の末尾に追加するグリフ
  • asis−wrap−char: char | #f
  • default = #fRE以外で分割された行の末尾に追加するグリフ(CR+LFなどの処理の問題を解決するためのものと考えられます。)
  • asis−wrap−indent: length | #f
  • default = #fRE以外で分割された行の、次の行に追加するインデント
  • ignore−record−end?: boolean
  • default = #f文字record−endを無視するか?
  • line−breaking−method: string | #f
  • default = #f特別な行分割方法を指定する公開識別子

paragraphは行の集合体です。基本的に行分割はrecord−end(RE)文字があった場合に行われるものですが、配置する空間の大きさによっては、RE文字に合わせて分割できるとは限りません。RE文字が無く、内容が1行の大きさに収まり切らなくなった場合に、どのような処理をするかを指定するのがこれらの特質です。
 基本的な処理は、特質lines:で指定されるwrap(強制改行)、asis(RE文字の後の改行)、truncate(あふれた内容の切り捨て)の3つとなります。また、ignore−record−end:でRE文字を無視することが出来ます。

<2>揃え

  • first−line−align: #t | char | #f
  • default = #f段落の最初の行の揃えを指定します。
  • alignment−point−offset: number(0~100)
  • default = 50その段落における揃え点の位置を決定します。
    行長全体に対する行頭からの長さの割合(%)で指定します。
  • quadding: symbol
  • default = ’start表記方向における行の揃え
  • start/end – 表記方向で始め/終わり –
  • spread−inside/spread−outside – 見開きの内側/外側 –
  • page−inside/page−outside – ページの内側/外側 –
  • center – 中央揃え –
  • justify – 両端揃え –
  • last−line−quadding: symbol
  • default = ’relative表記方向における最終行の揃え
  • relative – quadding:の値 –
  • start/end
  • spread−inside/spread−outside
  • page−inside/page−outside
  • center
  • justify
  • last−line−justify−limit: length
  • default = 0last−line−quadding:に優先して適用される最終行の両端揃えのためのスペースの最大値。

 これらは、行の揃え方に関する特質です。前2者は特別な揃え、後3者は通常の揃えを指定
します。

 first−line−align:は最初の行の揃え方を指定します。
 alignment−point−offset:は、段落の中における揃え点の位置を決定します。
 この位置に、内容となるオブジェクトの揃え点(alignment−point)が重なるように配置されます。

first−line−align:の値が

  • #f特別な揃えは用いず、特質quadding:(あるいはlast−line−quadding:)の値に従って揃えます。
  • char同じ値を特質char:にもつ文字流し込みオブジェクトが生成する最初の領域を揃え点とします。
  • #tその行の最初の流し込みオブジェクトのalignment−pointを揃え点とします。

first−line−align:が#f以外でかつalignment−point−offset:が#fの場合

 外部から揃えられる段落であり、表セル(table−cell)または揃い段(aligned−column)が先祖に存在します。これらの先祖が揃え方を規定します。
 外部から揃えられた段落が表セル中に発生する場合は、table−auto−width機能が必要です。

 その文字が出現しない場合の処理は、通常の揃えと同様ということになると考えられます。

<2-2>通常の揃え

 last−line−justify−limit:が指定されている場合は、両端揃えされます。
 last−line−quadding:が指定されない場合、quadding:の指定が処理されます。
 spread−inside/outsideはページ列が先祖にある場合のみ利用可能です。
 page−inside/page−outsideは段集合列が先祖にある場合にのみ利用可能です。

<3>行間調整

  • line−spacing: length
  • default = 12pt行送り量(配置パス間の距離)
  • min−pre−line−spacing: length | #f
  • default = #f行の配置パス前の最小サイズ
    (#fはフォント依存)
  • min−post−line−spacing: length | #f
  • default = #f行の配置パス後の最小サイズ
    (#fはフォント依存)
  • min−leading: length | #f
  • default = #f行間のスペースの最小サイズ
    (#fは自動調整)
  • line−spacing−priority: integer | ’force
  • default = 0行の前の条件付き空白の優先度
    (値は(display−space)の引数priority:と同様)

 段落中の行の配置を調整するのに使われるのがこれらの特質です。

 まず、min−leading:がlengthであれば、行幅は内容の行内領域を全て含むように調整されます。
 #fでは、内容のサイズは考慮されず、行間は自動的に調整されます。

 行送り量の基本サイズはline−spacing:で指定されます。デフォルトで12ptとなっています。
 それとは個別に、min−pre−line−spacing:で配置パス前の行サイズをmin−post−line−spacing:で配置パス後の行サイズを指定します。基本的には、この2つを足したものが行幅となります。

(min−pre−line−spacing:) + (min−post−line−spacing:) = 行幅

 直前が行領域なら、直前行の配置パスと現在行の配置パスの間がline−spacing:の値となるよう
に、条件付き空白が現在行の前に追加されます。

(min−pre−line−spacing:) + conditional space = (line−spacing:)

 直前が行以外の領域なら、直前領域の終了端と現在行の配置パスの間がline−spacing:から
min−post−line−spacing:を引いた値となるように、条件付き空白が現在行の前に追加されます。

  (min−pre−line−spacing:) + (min−post−line−spacing:)
                          + conditional space = (line−spacing:)
  

 min−leading:のlength値は、行間のスペースの最小サイズを指定します。厳密には、最初の行領域における直前の領域とその行の間のスペースも含まれます。
 これによって、必要に応じたサイズで、条件付き空白が行の前方に追加されます。
 条件付き空白の優先度は、特質line−spacing−priority:によってintegerで指定します。

<4>段落インデント

  • first−line−start−indent: length
  • default = 0pt段落整形のための第1行の行頭インデントサイズ
    (start−indent:に追加されます。マイナス値も可能。)
  • last−line−end−indent: length
  • default = 0pt段落整形のための最終行の行末インデントサイズ
    (end−indent:に追加されます。マイナス値も可能。)

<5>ハイフネーション

  • hyphenation−char: char
  • default = #\−ハイフン文字として使う文字(- のこと)
  • hyphenation−ladder−count: number(0~) | #f
  • default = #fハイフン文字で終了する行が連続する場合の最大数
    ハイフネーションの連続を制限する組版ルールに対応します
  • hyphenation−remain−char−count: number(0~)
  • default = 2ハイフネーション文字の前の最小文字数
    (分割して前の行に残す文字の最小数)
  • hyphenation−push−char−count: number(0~)
  • default = 2ハイフネーション文字の後の最小文字数
    (分割して次の行に送る文字の最小数)
  • hyphenation−keep: symbol | #f
  • default = #fハイフネーションした単語をどの範囲内に収めるかを指定します。
  • spread 同じ見開き内に収めます。
  • page 同じページ内に収めます。
  • column 同じの段内に収めます。
  • #f 制限しません。
  • hyphenation−exceptions: list(string)
  • default = list()ハイフネーション可能な点を限定します。
    リストの要素はハイフン文字を含む単語です。
    ハイフネーションする単語の決定はアプリケーションに任されています。

<6>行番号

  • numbered−lines?: boolean
  • default = #t行番号付けの対象とするか?
  • line−number: sosofo(inline) | #f
  • default = #f行番号の添付領域となる行内オブジェクト。
    sosofo部分に典型的に用いられるのは(line−number−sosofo)などです。
    sosofoは1行の添付領域になります。
  • line−numbers−side: symbol
  • default = ’start行番号を添付する位置
  • start/end/spread−inside/spread−outside/page−inside/
  • page−outside
  • 特質値の意味はquadding:を参照してください。
  • line−number−sep: length添付領域と本文領域との間隔

<7>両端揃えのための調整

  • justify−glyph−space−max−add: length
  • default = 0pt両端揃えの際にグリフ間に追加する空白の最大値
  • justify−glyph−space−max−remove: length
  • default = 0pt両端揃えの際にグリフ間から削減する空白の最大値

<8>その他の行組版処理

  • hanging−punct?: boolean
  • default = ?句読点をぶら下げるか?(禁則処理)/span>
  • widow−count: (positive)integer
  • default = 2領域の先頭で段落の最終行を孤立させないために一緒に配置する行の最小数を指定。(ウィドウの禁止)
  • orphan−count: (positive)integer
  • default = 2領域の末尾で段落の最初の行を孤立させないために一緒に配置する行の最小数を指定。(オーファンの禁止)
  • line−composition−method: string | #f
  • default = #f特別な行組版規則(公開識別子)。
    さらに、特質language:/country:によって処理系依存で国・言語別の行組版方法を指定することができます。

<9>その他

  • expand−tabs?: integer(0~..) | #f
  • default = 8タブの間隔を指定します。
  • implicit−bidi−method: string | #f
  • default = #f段落内容の方向性の特別規則(公開識別子)。
    通常は特質writing−mode:と埋め込みテキスト流し込みオブジェクトクラスでサポートすることが出来ます。
    しかし、言語によってはある文字の並びの表記方向を特質指定が無くても逆にするかもしれません。
    この特質(特別処理)はそのような場合に用いられます。
  • glyph−alignment−mode: symbol
  • default = ’fontグリフの揃え表記モード
  • base/center/top/bottom/font

(g) 罫線:rule(行外|行内)

  • 【用途】罫線を作成します。
  • 【ポート】なし(原子流し込みオブジェクト)
  • 【説明】直線を作成します。罫線は行内領域にも行外領域にもなり得ます。行内・行外の違いと、線の方向は、特質orientation:で指定します。
  • 【共通特質】
  • line−cap:
  • line−dash:
  • line−thickness:
  • line−repeat:
  • line−sep:
  • length:
  • 行外領域の配置
  • position−preference:
  • space−before:
  • space−after:
  • keep−with−previous?:
  • keep−with−next?:
  • break−before:
  • break−after:
  • keep:
  • may−violate−keep−before?:
  • may−violate−keep−after?:
  • 段抜き
  • span:
  • span−weak?:
  • インデント
  • start−indent:
  • end−indent:
  • グラフィカル表示関連
  • color:
  • layer:
  • 表記方向
  • writing−mode:
  • 改行許可の設定
  • inhibit−line−breaks?:
  • break−before−priority:
  • break−after−priority:
  • シフト
  • position−point−shift:
  • 行外オブジェクトの配置
  • display−alignment:
  • 【特質】
  • orientation: symbol行外・行内の別と罫線の方向を指定
  • horizontal 行外 →
  • vertical 行外 ↓
  • escapement 行内 送り方向
    (横組み→ / 縦組み↓)
  • line−progression 行内 行進行方向
    (横組み↓ / 縦組み←)
  • length: length罫線の長さを指定します。
    値の指定がなければ、文脈依存となります。

(h) 外部グラフィック:external−graphic(行外|行内)

  • 【用途】外部データ形式のグラフィックデータを取り込みます。
  • 【ポート】なし(原子流し込みオブジェクト)
  • 【説明】外部データ形式(非DSSSL形式)のグラフィックデータをnotationとして取得します。SGMLにおけるグラフィックの指定と基本的には同じものです。
  • 【共通特質】
  • 行外領域の配置
  • position−preference:
  • space−before:
  • space−after:
  • keep−with−previous?:
  • keep−with−next?:
  • break−before:
  • break−after:
  • keep:
  • may−violate−keep−before?:
  • may−violate−keep−after?:
  • 段抜き
  • span:
  • span−weak?:
  • インデント
  • start−indent:
  • end−indent:
  • グラフィカル表示関連
  • color:
  • layer:
  • 表記方向
  • writing−mode:
  • 改行許可の設定
  • inhibit−line−breaks?:
  • break−before−priority:
  • break−after−priority:
  • 行外・行内の設定
  • display?:
  • 行外オブジェクトの配置
  • display−alignment:
  • 内部領域座標の設定
  • position−point−x:
  • position−point−y:
  • escapement−direction:
  • 【特質】
  • scale: list(real,real) | symbol
  • default = ’max−uniform
  • 外部グラフィックの変倍率
  • list(real,real) 横、縦の変倍率(実数倍)
  • max 最大サイズ
  • max−uniform 比率を保持した上での最大サイズ
  • max−width: length
  • max/max−uniform 指定時の最大幅サイズ
  • max−height: length
  • max/max−uniform 指定時の最大高さサイズ
  • entity−system−id: string | #f外部グラフィック実体のシステム識別子
  • notation−system−id: string外部グラフィック表記法のシステム識別子

(i) score : 傍線・抹消線(行内)

  • 【用途】文字列への上線・下線による強調や、抹消線による打ち消しを可能にします。
  • 【ポート】主ポート:行内領域となる任意のオブジェクト
  • 【説明】対象となる行内領域に線を重ねて引きます。特質type:にlength以外の値を指定した場合、フォントによって線の位置が規定されます。
  • 【共通特質】フォント
  • font−family−name:
  • font−weight:
  • font−posture:
  • font−structure:
  • font−proprtionate−width:
  • font−name:
  • font−size:
  • line−cap:
  • line−dash:
  • line−thickness:
  • line−repeat:
  • line−sep:
  • グラフィカル表示関連
  • color:
  • layer:
  • 改行許可の設定
  • inhibit−line−breaks?:
  • 【特質】
  • type: symbol | length | characterscoreの種類を指定します。
  • before
  • through – 抹消線 –
  • after
  • lengthは、配置パスから線までの距離を指定します。
    正の値は配置パスの後、負の値は配置パスの前になります。
  • score−spaces?: boolean
  • default = #tスペースにも傍線・抹消線を適用するか?

(j) 囲み罫:box(行外|行内)

  • 【用途】テキストを四角で囲むためのものです。
  • 【ポート】単一の主ポート:囲み罫が行内なら行内領域となる任意のオブジェクト、行外なら行外領域となる任意のオブジェクト
  • 【説明】ポートに指定されたテキストを四角で囲みます。枠線だけでなく背景の四角としても利用可能です。囲み罫の分割点で枠線を出力するかどうかや角に関する処理などが指定できます。
  • 【共通特質】
  • line−thickness:
  • line−repeat:
  • line−sep:
  • 行外領域の配置
  • position−preference:
  • space−after:
  • space−before:
  • keep−with−previous?:
  • keep−with−next?:
  • break−before:
  • break−after:
  • keep:
  • may−violate−keep−before?:
  • may−violate−keep−after?:
  • 段抜き
  • span:
  • span−weak?:
  • インデント
  • start−indent:
  • end−indent:
  • グラフィカル表示関連
  • color:
  • layer:
  • 表記方向
  • writing−mode:
  • 改行許可の設定
  • inhibit−line−breaks?:
  • break−before−priority:
  • break−after−priority:
  • 行外・行内の設定
  • display?:
  • 【特質】
  • box−type: symbol
  • default = ’border
  • 囲み罫のスタイルを指定します。
  • border – 枠線 –
  • background – 背景 –
  • both – 両方 –
  • box−open−end?: boolean
  • default = #f枠線の囲み罫が、ページや段などで2つ以上の領域に分割される場合、終端の枠線を表示するか?
  • background−color: color | #f
  • default = #f背景の囲み罫の色
  • background−layer: integer
  • default = −1背景の囲み罫の重ね合わせ優先順位
  • box−corner−rounded: #f | #t | list(symbol)
  • default = #f丸める角を指定します。
  • ’before−before 表記方向前、配置方向前
  • ’before−after 表記方向前、配置方向後
  • ’after−before 表記方向後、配置方向前
  • ’after−after 表記方向後、配置方向後
  • (行内の場合は、表記方向→字送り方向、配置方向→行進行方向となります。)
  • box−corner−radius: length
  • default = 3pt丸める角の扇形の半径を指定します。
  • box−border−alignment: symbol
  • default = ’outside枠線の厳密な位置を指定します。
  • center 枠線の中心を領域の境界位置に揃える。
  • outside 枠線の外側を境界位置に揃える。
  • inside 枠線の内側を境界位置に揃える。
  • box−size−before: length
  • default = 8pt行内囲み罫の配置パス前部分のサイズ
  • box−size−after: length
  • default = 4pt行内囲み罫の配置パス後部分のサイズ
  • line−miter−limit: number
  • default = 10枠線のマイター接続の限界
  • line−join: symbol
  • default = ’miter枠線の接続スタイル
  • miter/round/bevel

(k) glyph−annotation:グリフ修飾

  • 【用途】文字、語、句に発音・意味の記述(ルビ)を付けるために用います。
  • 【ポート】主ポート:修飾対象のグリフ(文字流し込みオブジェクト)
    ポートannotation:修飾に使うグリフ(文字流し込みオブジェクト)
  • 【説明】修飾グリフ(ルビ文字)は修飾対象グリフに対して行進行方向で前(縦組みでは右、横組みでは上)に置かれ、修飾対象グリフに読み方や意味を付加します。
  • 【共通特質】
  • 改行許可の設定
  • inhibit−line−breaks?:
  • break−before−priority:
  • break−after−priority:
  • 【特質】
  • annotation−glyph−placement: symbol
  • default = centered修飾グリフの配置規則を指定します。
  • centered/shouldered
  • (shoulderedは修飾するグリフが1つの場合のみ適用可能)
  • annotation−glyph−style: #f | string(公開識別子)
  • default = #fフォーマット時に適用する付加的な規則を指定します。

(l) multi−line−inline−note:複数行行内注釈(行内)

  • 【用途】1行の中に複数行の注釈(割注)を置くために用います。
  • 【ポート】主ポート:行内領域となる任意のオブジェクト
  • 【説明】典型的な構成要素は以下の通りです。
    ・注釈前のグリフと同じ大きさの始めかっこ。
    ・注釈前のグリフより小さいグリフからなる文章。通常は2行に分けて表示。
    ・始めかっこと同じ大きさの終わりかっこ。
  • 【共通特質】改行許可の設定
  • inhibit−line−breaks?:
  • break−before−priority:
  • break−after−priority:
  • 【特質】
  • open: sosofo
  • default = (literal “(“)の評価結果始めかっこを表す行内オブジェクトです。
  • close: sosofo
  • default = (literal “)”)の評価結果終わりかっこを表す行内オブジェクトです。
  • inline−note−line−count: (positive)integer
  • default = 2注釈の行の数を指定します。
  • inline−note−style: #f | string(公開識別子)
  • default = #fフォーマット時の付加的な規則を指定します。
    (配置規則、行分割規則など)

(m) emphasizing−mark:強調マーク(行内)

  • 【用途】文字、語、句を強調するためのマーク(圏点)を付けます。
  • 【ポート】主ポートが強調対象の行内領域オブジェクトを指定します。
  • 【説明】配置方法は特質mark−distribution:によって指定します。
    glyph 強調対象グリフの中心に配置します。
    even 強調マーク配置パスに沿って、強調対象領域に等分に配置します。
  • 【共通特質】改行許可の設定
  • inhibit−line−breaks?:
  • break−before−priority:
  • break−after−priority:
  • 【特質】
  • mark: sosofo
  • defaultなし強調マークとして用いる行内オブジェクトを指定します。
  • mark−distribution: symbol
  • default = glyph強調マークの配置を指定します。
  • glyph/even
  • mark−style: #f | string(公開識別子)
  • default = #fフォーマット時の付加的な規則を指定します。
    (配置規則、行分割規則など)

(n) 表用流し込みオブジェクトクラス

 表を作成するための流し込みオブジェクトクラスは以下の6クラスです。

  1. <1> 表表の全体を統括します。
  2. <2> 表部部分表のヘッダ・フッタを定義する場合に指定します。
  3. <3> 表列列の性質を規定します。
  4. <4> 表行表の中の改行を表し、行をグループ化して扱うためのクラスです。
  5. <5> 表セル表セルを表すクラスです。表セルの個々の内容はここで指定されます。
  6. <6> 表罫線境界線を表すクラスです。

 表全体を木構造として見ると、まず、根(root)のところに表を指定します。
 そして、ヘッダ・フッタを付けたい場合にのみ、その下に表部部分を指定します。
 そうでない場合は、表の下に直接に表列、表行、表セルを指定します。
 表列は列の幅などを指定するだけの原子流し込みオブジェクトであり、セルを子に持つことはありません。
 実際に使用するときは、特質column−number:で対象となる列を指定することで、その列にtable−width:などの指定が反映されます。

 表行は表セルを子に持ち、表セルをグループ化して行として処理する場合に活用します。次の表行が出現するまで(表セルの特質starts−row?:,ends−row?:などで指定されない限り)1つの行が続きます。主に、セルを1行にまとめて扱うために指定します。

<1>表:table(行外)

  • 【用途】表の全体を統括するクラスです。
  • 【ポート】単一の主ポートですが、その内容に、以下の2通りの指定が可能です。
    ・表部部分
    ・表列、表行、表セル
  • 【説明】表を作成するための基本となるクラスです。内容は、ヘッダ・フッタ(表部部分)と行(表行)・列(表列)ごとにまとまったセル(表セル)群からなります。また、表の罫線として使う表罫線クラスのオブジェクトもここで指定します。
  • 【共通特質】行外領域の配置
  • position−preference:
  • space−before:
  • space−after:
  • keep−with−previous?:
  • keep−with−next?:
  • break−before:
  • break−after:
  • keep:
  • may−violate−keep−before?:
  • may−violate−keep−after?:
  • 段抜き
  • span:
  • span−weak:
  • インデント
  • start−indent:
  • end−indent:
  • 表記方向
  • writing−mode:
  • 行外オブジェクトの配置
  • display−alignment:
  • 【特質】
  • table−width: #f | length表の幅を指定します。
  • table−auto−width−method: #f | string
  • default = #f表の幅の自動計算方法を指定します。
  • table−border: sosofo | #t | #f
  • default = #f表の外枠の罫線を表罫線オブジェクトのsosofoで指定します。
  • before−row−border: sosofo
  • after−row−border: sosofo
  • before−column−border: sosofo
  • after−column−border: sosofo
  • default = (table−border:の値)罫線を指定します。
  • before−row 行の進行方向前
  • after−row 行の進行方向後
  • before−column 列の進行方向前
  • after−column 列の進行方向後
  • table−corner−rounded: #t | #f | list(symbol)テーブルの角を丸めるかどうかを指定します。
  • table−corner−radius: length丸める角の扇の半径を指定します。

<2>表部部分:table−part

  • 【用途】表のヘッダ・フッタを指定するクラスです。
  • 【ポート】以下の3つが存在します。
    主ポート:表の内容部分。表列/表行/表セルが指定可能です。
    header :ヘッダの内容。表行/表セルが指定可能です。
    footer :フッタの内容。表行/表セルが指定可能です。
  • 【説明】表のヘッダ・フッタ部分を指定するためのクラスです。3つのポートが、それぞれ表の本体(すなわち表部部分を指定しなければ表から直接ポートに指定する表列/表行/表セル)とヘッダ、フッタの3つに対応しています。
  • 【共通特質】行外領域の配置
  • keep−with−previous?:
  • keep−with−next?:
  • keep:
  • may−violate−keep−before?:
  • may−violate−keep−after?:
  • break−before:
  • break−after:
  • space−before:
  • space−after:
  • position−preference:
  • 【特質】
  • table−part−omit−middle−header?: boolean
  • default = #f表の先頭以外のヘッダを省略するか?
  • table−part−omit−middle−footer?: boolean
  • default = #f表の末尾以外のフッタを省略するか?

<3>表列:table−column

  • 【用途】特定の列の性質を規定します。
  • 【ポート】なし(原子流し込みオブジェクト)
  • 【手続き】(table−unit k)
  • 【説明】特定の列のセルに対して特質を指定する原子流し込みオブジェクトクラスです。指定する場合、このクラスは全ての他の行やセルよりも前に存在しなければなりません。特定の列だけ幅を拡大するなどの作業が効率よくできます。
  • 【共通特質】インデント
  • start−indent:
  • end−indent:
  • オブジェクトの配置
  • display−alignment:
  • 【特質】
  • column−number: (positive)integer
  • default = 1列番号
  • n−columns−spanned: (positive)integer
  • default = 1このオブジェクトから特質を継承します。
    表セルが抜く列の数を指定します。
  • width: length列の幅を指定します。
    ただし、n−columns−spanned:を指定した 場合は指定できません。

<4>表行:table−row

  • 【用途】表の改行を処理し、セルを行としてグループ化します。
  • 【ポート】主ポート:表セルのみ
  • 【説明】表の行の開始(および前の行の終了)を表し、その子となる表セルに対して一括して特質を指定する場合に使うことができます。
  • 【共通特質】なし
  • 【特質】なし

<5>表セル:table−cell

  • 【用途】表のセルを表すクラスです。
  • 【ポート】主ポート:行外領域となる任意オブジェクト
  • 【説明】表セルは、表の具体的な内容となるデータを子として持つオブジェクトです。内容の配置のしかたや、このセルの行・列に関する属性などを特質で指定します。
  • 【共通特質】
  • line−cap:
  • line−dash:
  • line−thickness:
  • line−repeat:
  • line−sep:
  • length:
  • グラフィカル表示関連
  • color:
  • layer:
  • 【特質】
  • column−number: (positive)integer
  • default = 1 このセルの列番号を指定します。
  • n−columns−spanned: (positive)integer
  • default = 1 このセルが抜く列の数を指定します。
  • n−rows−spanned: (positive)integer
  • default = 1 このセルが抜く行の数を指定します。
  • cell−before−row−margin: length
  • cell−after−row−margin: length
  • cell−before−column−margin: length
  • cell−after−column−margin: length
  • default = 0 セルのマージンサイズを指定します。
  • cell−row−alignment: symbol
  • default = ’start セル内における揃えを指定します。
    start/end/center
  • cell−background?: boolean
  • default = #f そのセルだけの背景色をbackground−color:で指定するか?
  • cell−before−row−border: sosofo | #t | #f
  • cell−after−row−border: sosofo | #t | #f
  • cell−before−column−border: sosofo | #t | #f
  • cell−after−column−border: sosofo | #t | #f
  • default = #f セルの境界線を指定します。
  • starts−row?: boolean
  • default = #f このセルを新しい行の先頭とするか?
  • ends−row?: boolean
  • default = #f このセルをその行の末尾とするか?
  • cell−crossed: #f | symbol
  • default = #f そのセルに斜線を引く場合に指定します。
    線種は線の特質によります。
    with/against/both
  • float−out−sidelines?: boolean
  • default = #f セルの内容に側線領域が添付されている場合に、それをセルから表全体に移すか?
  • float−out−marginalia?: boolean
  • default = #fセルの内容に余注領域が添付されている場合に、それをセルから表全体に移すか?
  • float−out−line−numbers?: boolean
  • default = #f セルの内容に行番号領域が添付されている場合に、それをセルから表全体に移すか?

<6>表罫線:table−border

  • 【用途】表の罫線を指定します。
  • 【ポート】なし(原子流し込みオブジェクト)
  • 【説明】表の罫線を指定する原子流し込みオブジェクトクラスです。 このクラスのオブジェクトは、表クラスの特質before−row−border:~after−column−border:で指定することによって使用されます。
  • 【共通特質】
  • line−cap:
  • line−dash:
  • line−thickness:
  • line−repeat:
  • line−sep:
  • length:
  • 【特質】
  • border−priority: integer
  • default = 0罫線が競合した場合の優先度を指定します。
    優先度が競合した場合はエラーになります。
  • border−alignment: symbol
  • default = ’center境界位置に罫線のどこを揃えるかを指定します。
    center/start/end/outside/inside
  • border−present?: boolean
  • default = #t罫線を描画するか?
  • border−omit−at−break?: boolean
  • default = #f表の分割点では罫線を省略するか?
  • line−miter−limit: number
  • default = 10マイター接続の限界を指定
  • line−join: symbol
  • default = ’miter線の接続方法を指定

<<prev      next>>