あまり知名度の高くないプロパティtext-align-last
EPUB3ではCSS3の一部の機能が使えます。
最も有名なのは-epub-writing-mode
だと思いますが、text-align: justify
も話題になりやすいですよね。
これは日本語で「均等割り付け」や「両端揃え」に相当するもので、紙の組版やWordドキュメントなどではずっと昔から普通に使われていたと思います。
ところが、text-align:justify
に強く関連するtext-justify
とtext-align-last
についてはあまり知られていません。このままでは可哀想なので紹介しておきます。
参照する仕様
EPUB3の仕様としては、EPUB Content Documents 3.0を参照します。これはEPUB3のうち、OPFなどのメタデータではなくXHTMLなどのドキュメント部分について記載されているものです。
EPUB3のメインとなるCSSはCSS2.1です。
ただし、一部のプロパティについてはCSS2.0やCSS3の各モジュールから引用されています。たとえばtext-align-last
については、-epub-text-align-last
という名前で、syntaxはCSS3Text WD 20110412を、semanticsはCSS3Textを参照するように規定されています。
本記事の執筆時点ではCSS3TextはCSS3 Text WD 20121113を参照しています。
text-align
CSS2からあるおなじみの、基本的なプロパティです。
このプロパティは、テキストをどちらに揃えるかを指定します。
- start
- 開始方向寄せにします。通常の横書きでは左寄せになります。
- end
- 終了方向寄せにします。通常の横書きでは右寄せになります。
- left
- 左寄せにします。通常の縦書きでは上寄せになります。
- right
- 右寄せにします。縦書きでは下寄せになります。
- center
- 中央寄せにします。
- justify
- 両端揃えにします。
- start end
- ブロックの最初の行やforced line break(たとえばbr)の直後の行は
start
として扱います。
それ以外の行(text-align-lastが適用される行を除く)はend
として扱います。
CSS仕様にある図ですが、縦書きの場合はたとえば以下のような向きになります。writing mode, directionなどにより変わるので、詳しくはこちらの表を参照するとわかりやすいです。
text-justify
このプロパティはtext-align:justify
のときに、どこを調整してjustifyを実現するかを指定します。
<
dl>
なお、解説の都合上この記事に書いていますが、text-justify
はEPUB 3の仕様に含まれていません。
text-align-last
このプロパティは最終行の行揃えを指定します。
最終行とはblock要素の最終行、またはforced line break(たとえばbr)の直前の行のことです。
auto, start, end, left, right, center, justifyが指定できます。
start, end, left, right, center, justify
text-align
プロパティと同じ意味です。つまり、最終行だけ右寄せといった指定が可能になります。
auto
autoは初期値です。以下のような挙動をします。
text-align:justify
のときtext-justify: distribute
なら最終行もjustifyに、そうでなければstart方向寄せにする。text-align:justify
以外のときtext-align
の指定に従う。
ここで、EPUB 3の仕様ではtext-justify
プロパティが含まれないを思い出して下さい。
つまり、EPUB 3の仕様内においては、text-align-last:auto
は、「text-align:justify
のときはstart方向寄せに、それ以外のときはtext-align
に従う」という意味になります。
このプロパティを指定するときは、1行しかないときの扱いに注意しましょう。
この場合の処理は、以下のように規定されています。
If a line is also the first line of the block or the first line after a forced line break, then, unless 'text-align' assigns an explicit first line alignment (via 'start end'), 'text-align-last' takes precedence over 'text-align'.
text-align
で明示的に最初の行のalignを指定(text-align:start end
)している場合を除き、text-align-last
がtext-align
より優先して適用されるとあります。
ところがEPUB 3が参照するtext-align
は、CSS2なので、start end
が存在しません。
つまり、EPUB 3においては、1行のブロックではtext-align
よりも-epub-text-align-last
が優先して適用されるということになります。
よく以下のようなCSSを使って、「カバー画像はcenter指定しているのに左に寄っている!」という問い合わせを頂きますが、これは上記の仕様によるものです。
* { -epub-text-align-last: left; } .cover { text-align: center; }
ほとんどのブラウザは-epub-text-align-last
を認識しないため、制作過程で気づかないのだと思います。
この場合、.cover
で-epub-text-align-last:auto
を指定するのが正解です。
まとめ
あまり知られず、使われ方はたいてい間違っている-epub-text-align-last
を紹介してみました。
現状のEPUB 3の仕様範囲内では、text-align-lastをauto以外にする必要がある場面は、あまりないと思います。
CSS3 WDの更新や次期EPUBでは、重要性を増してくるかもしれません。