第16章 リーダー

fo:leaderは伸縮自在な水平線(リーダー)を引くFOである。fo:leaderは、'.'(ドット)や罫線で目次のタイトルとページ番号を分離したり、セパレータとしての水平線を生成するのに使う。fo:leaderは一つのインラインエリアを生成し,インラインのFOと同様多くのプロパティを指定できる。

16–1 リーダー用のプロパティ

16–1–1 リーダーのパターン

プロパティleader-patternプロパティはリーダーとして並べる記号を指定する。リーダーの(行進行方向の)高さはuse-contentならば高さはラインエリア(行)と同じとなる。そうでないと高さはrule-thicknessトレイトで決定される。

表16・1 leader-patternプロパティ
プロパティ値説明
space(初期値)リーダーを空白で埋める。
rule リーダーを線で埋める。この時、rule-thickness、rule-styleをセットする。
dotsリーダーをドットで埋める。
use-contentリーダーをfo:leaderの子供で指定したパターンで埋める。
表16・2 leader-pattern-widthプロパティ
プロパティ値説明
use-fontmetrics(初期値)リーダ-パターンの幅を、フォントメトリックスで決まる値とする。
<length>リーダ-パターンの繰り返し幅を指定する。
<percentage>親の内容領域の幅に対する割合を指定する。

16–1–2 リーダー線の長さ

プロパティleader-lengthプロパティはリーダーの長さを指定する。

表16・3 leader-lengthプロパティ
プロパティ値説明
<length-range>leader-length.minimum(初期値は0)はリーダーの最低の長さ、leader-length.optimum(初期値は12.0pt)はリーダーの適正な長さ、leader-length.maximum(初期値は100%)はリーダーの最大の長さを指定する。
<percentage>親の内容領域の幅に対する割合を指定する。

16–1–3 線の太さ・線種

プロパティrule-thicknessプロパティはリーダー線の太さを指定する。

表16・4 rule-thicknessプロパティ
プロパティ値説明
<length>線の太さ。初期値は1.0pt。

プロパティrule-styleはリーダー線の種類を指定する。

表16・5 rule-styleプロパティ
プロパティ値説明
noneなし。rule-thicknessをゼロに強制する。
dottedドットの並び
dashed短い線分の並び
solid(初期値)一本の線。
double二重線。線の太さと線の間隔の合計は、rule-thicknessの値に一致する。
groove線はキャンバスに掘られているように見える。
ridge線はキャンバスから盛り上がっているように見える。

16–1–4 リーダーの位置合わせ

プロパティleader-alignmentプロパティはリーダーの開始位置合わせを指定する。

表16・6 leader-alignmentプロパティ
プロパティ値説明
none(初期値)指定なし
reference-area参照エリアの内容長方形の開始辺に揃える。
pageページの開始辺に揃える。

16–2 リーダーの使用例

16–2–1 目次設定例

次の例は、本文の中の「目次・索引に指定する項目」という文字列にid="XYZ0211"を付け、その項目のページ番号をfo:blockの中から参照する。項目の文字列は左寄せ、ページ番号は右寄せとし、両者の間にリーダを引く。fo:leaderとfo:page-number-citationが配置されるfo:blockにtext-align-last="justify"を設定して、ページ番号を行末揃えし、この間をリーダで埋める。

<fo:block space-before="2em"
          start-indent="10mm"
          end-indent="10mm"
          text-align-last="justify">
目次・索引に指定する項目
  <fo:leader leader-pattern="dots"/>
  <fo:page-number-citation ref-id="XYZ0211"/>
</fo:block>
<fo:block space-before="2em"
          start-indent="10mm"
          end-indent="10mm">
本文・・・・・・・・・・・・・・・・・・
</fo:block>
<fo:block start-indent="10mm" 
          end-indent="10mm">
・・・・・・・・・・・・・・・・・・・・
</fo:block>
<fo:block start-indent="10mm" 
          end-indent="10mm">
  ・・・・
  <fo:inline id="XYZ0211">
  目次・索引に指定する項目
  </fo:inline>・・・・
</fo:block>
<fo:block start-indent="10mm" 
          end-indent="10mm">
・・・・・・・・・・・・・・・・・・・・
</fo:block>

組版結果を図16・1 仮想的目次例に示す。

仮想的目次例

図16・1 仮想的目次例

本書(『XSL-FO組版の基礎』)の目次の一部(第1章と1.1節)のfo:leader(下線部分)を示す。

<fo:block space-after="16.2pt"/>
  <fo:block font-family="serif" font-size="12.35pt" line-height="1.7" start-indent="0pt" axf:leader-expansion="force" keep-together.within-column="always" space-before="16.2pt">
    <fo:inline space-end="0.5em">第<fo:inline axf:number-transform="'1'">1</fo:inline>章​</fo:inline>
    <fo:inline axf:indent-here="0pt"/>XSL-FO による組版の概要<fo:inline font-family="serif" font-size="8pt">
      <fo:inline font-size="25%" space-end="1em"/>
      <fo:leader leader-pattern="rule" rule-style="dotted" baseline-shift="(8pt - 2pt) div 2" leader-length.optimum="20pt"/>
      <fo:inline font-size="25%" space-end="1em"/>
      <fo:inline-container line-height="1" inline-progression-dimension="2.1em">
        <fo:block text-align-last="end">
          <fo:basic-link internal-destination="d14e2286">
            <fo:page-number-citation ref-id="d14e2286"/>
          </fo:basic-link>
        </fo:block>
      </fo:inline-container>
    </fo:inline>
  </fo:block>
  <fo:block font-family="serif" font-size="10.45pt" line-height="1.7" start-indent="9.5pt" axf:leader-expansion="force" keep-together.within-column="always">
    <fo:inline space-end="0.5em">
      <fo:inline axf:number-transform="'1'">1</fo:inline>.<fo:inline axf:number-transform="'1'">1</fo:inline>​</fo:inline>
      <fo:inline axf:indent-here="0pt"/>
      組版で配慮すべきいくつかの項目
      <fo:inline font-family="serif" font-size="8pt">
        <fo:inline font-size="25%" space-end="1em"/>
        <fo:leader leader-pattern="rule" rule-style="dotted" baseline-shift="(8pt - 2pt) div 2" leader-length.optimum="20pt"/>
        <fo:inline font-size="25%" space-end="1em"/>
        <fo:inline-container line-height="1" inline-progression-dimension="2.1em">
     <fo:block text-align-last="end">
       <fo:basic-link internal-destination="d14e2299">
         <fo:page-number-citation ref-id="d14e2299"/>
       </fo:basic-link>
     </fo:block>
        </fo:inline-container>
      </fo:inline>
    </fo:block>

組版結果を図16・2 目次項目の組版例に示す。

目次項目の組版例

図16・2 目次項目の組版例

16–2–2 リーダーを使ったフッター設定例

次の例はフッターに文字列とページ番号を設定する。文字列とページ番号の間にfo:leaderを置く。leader-pattern="space"としたうえで、fo:blockに両端揃えを指定している。

<fo:static-content flow-name="Right-footer">
  <fo:block text-align-last="justify">
    <fo:inline font-style="italic" 
               font-size="8pt">
    奇数ページ用フッタ文字列
    </fo:inline>
    <fo:leader leader-pattern="space" />
    Page-<fo:page-number />
  </fo:block>
</fo:static-content>

組版結果を図16・3 フッターの柱とノンブル例に示す。空白の数は伸縮自在なので、組版時に両端揃えの効果で文字列とページ番号が左右に寄せられる。

フッターの柱とノンブル例

図16・3 フッターの柱とノンブル例