[PR]ƭ
Infoseek ޲٣

ようこそ。

仕様書の規範的なバージョンはW3Cのサイトにある英語版である。翻訳された文書は翻訳からの誤りが含まれているかもしれない。

このバージョン:
http://isweb34.infoseek.co.jp/computer/zinganx/standards/2001/WD-css3-text-20010517.html
最新のバージョン:
http://www.jtw.zaq.ne.jp/zing/spec/css3-text.html
前のバージョン:
なし
翻訳者:
鉄野 正夫

W3C

CSS3のモジュール:テキスト

W3Cの策定中の草案2001年5月17日

このバージョン:
http://www.w3.org/TR/2001/WD-css3-text-20010517
最新のバージョン:
http://www.w3.org/TR/css3-text
前のバージョン:
http://www.w3.org/TR/1999/WD-i18n-format-19990910/
編者:
Michel Suignard (Microsoft)
Chris Lilley (W3C)
著作者:
元のCSS2作者
Bert Bos (W3C)
Tantek Çelik (Microsoft)
Marcin Sawicki (former editor)
Michel Suignard (Microsoft)
Chris Wilson (Microsoft)
Steve Zilles (Adobe)

摘要

この文書は、CSSのテキストのフォーマット処理のプロパティセットを提供する。CSSの2[CSS2]ですでに存在するものに加えて、多くの新しいプロパティが、国際的なコンテキスト(東アジア言語や双方向言語がほとんど)において、基礎的に必要とするものを扱っている。しかしながら、この用法は、それらの実例によって制限されない。

この文書の地位

この文書はスタイルアクティビティの一部である、CSS策定団体の策定中の草案である。これは、CSSのレベル3に含まれている特徴に対する提案を含む。

この文書はW3Cの国際化の活動と、スタイルアクティビティの協力によって作り出されたものである。また、XSLの策定団体(会員専用)の会員によって製作された、広範な寄稿も含んでいる。最後に、提案の中には、スカラの可能なベクタグラフィックス(SVG)の1.0の仕様で実装されたものもある。結局は、どのようなプロパティや仕様が、CSS自体に引用されるかを反映するために、この文書は複製されてきた。

この草案の旧題は"国際的なレイアウト"であった。

フィードバックは大変ありがたい。コメントは編者に直接送ることもできるが、メーリングリストwww-style@w3.org(使用説明書を参照)も開かれていて、本書および、スタイルの範囲のその他の草案の話し合いに対して好まれている。

この策定中の草案は、いつでも、ほかの文書によって更新されたり、置き換えられたり、時代遅れになったりするかもしれない。W3Cの策定中の草案を参考書の資料として使用したり、あるいは、"策定進行中"ではないものとして引用するのは不適当である。この公開は、W3Cの会員の資格やCSS&FP策定団体(会員専用)による保証は含まれない。

この草案の最新版を見つけるには、上方の"最新版"のリンクをたどるか、技術報告の一覧表をたずねてください。

目次


1. 他のモジュールへの依存

このCSSのモジュールは以下の他のCSSのモジュールに依存している。

以下の他のCSS3のモジュールに、標準を立てるものではない(知識を与えるものである)関連がある。

2. 序論

CSS1とCSS2の両方において、テキストのフォーマット処理は、たとえば、テキストの装飾、テキストの配置や、文字のスペース処理のような、単純な効果に限られていた。しかしながら、国際的な印刷の体裁は、特別なワークアラウンドやグラフィックスを使わなければ成しえないフォーマット処理の種類を含んでいる。

既存のテキストに関連したプロパティとともに、この文書は、そのようなフォーマット処理を表現するために、いくらかの新しいCSSのプロパティを提供する。たとえば、この提案が含む特徴の中に、縦書きのテキストや、レイアウトをするときの升目といった、東アジアの印刷の体裁のための、2つの最も重要な特徴がある。

いくつかのイラストレーションに、以下に説明文が用意されている。

全角の標識の記号表現-テキストの連続の中でn番目の文字である全角の標識(たとえば、漢字)、
半角の標識の記号表現-テキストの連続の中でn番目の標識である半角の標識(たとえばローマ字)、
つながった標識の記号表現-テキストの連続の中でn番目の標識であるつながった標識(たとえばアラビア文字)

東アジア言語の印刷の体裁における、多くの印刷上のプロパティは、全角の文字か半角かのどちらか一方として、一般的な方法で描写しているという事実に依存している。ユニコードの標準によって描写されるすべての文字は、幅のプロパティで分類することができる。これは、ユニコードのウェブサイトから入手できるユニコードの技術報告(TR#11)に含まれている。

図表において、上に述べた記号がとる方向は、UAで描写されるときに、表現する標識がとると意図される方向と一致する。図表におけるそれらの文字の間の空白は、故意に点を作るように変えられなければ、たいていは記号である。


3. テキストのレイアウト

3.1. テキストのレイアウトの序論

この項は、左から右へ(たとえば、ローマ字)、右から左へ(たとえば、ヘブライ文字やアラビア文字)、双方向(たとえば、ローマ字をアラビア文字と混在させたもの)や、縦書き(たとえば、アジア文字)のような、さまざまな国際的な文書の方向を含む、CSSでサポートされているテキストのレイアウトの特徴を説明する。

'writing-mode'プロパティは、行中の進行や、ブロックの進行とも呼ばれる行から行への進行を決定する。たとえば、ローマ字は、一般的に左から右へ、また上から下へと書かれる。標識の方向は、基本のテキストの進行方向と関係がある、描写される文字の視覚的な形を決定する。

行中において、現在のテキストの位置の調整は、テキストの進行方向、単に描写される標識の計量、フォントにおけるカーニングの表、現在のスペース処理のプロパティのような、さまざまな属性の現在の値と関係がある、現在の標識の方向に基礎づけられている。

'writing-mode'や、標識の方向の値で、テキストの適切な方向性が、アルゴリズムによって決定されるだろうときに、双方向性は、多くのテキストのレイアウトにおいて、別の水準の複雑さをもたらす。ユニコードの標準([UNICODE]、セクション3.12)は、組み込むための明示的なコントロールと同様に、文字のプロパティに基礎付けられた、明示的な部分からなる、そのようなアルゴリズムを定義し、上書きする。'writing-mode''unicode-bidi'プロパティの組み合わせを使って、内容の文字の本来の双方向性を上書きすることも可能である。

CSS3は適切なテキストの双方向の描写を成し遂げるのにこのアルゴリズムに頼る。しかしながら、文字の描写は、標識の方向プロパティの、特定の値に対してのみ起こる。厳密な制約に対するその説明を参照してください。

CSS2は、行中の進行のみを決定する、'writing-mode'プロパティのサブセットである、'direction'プロパティを明示した。'direction'プロパティは行から行への進行の変更が望まれるときに、いまだに使われている。

HTMLの4.0の仕様書([HTML40]、セクション8.2)は、HTMLの要素に対する双方向性の挙動を定義している。それゆえに、仕様に適合しているHTMLのユーザエージェントは、著作者と使用者のスタイルシートにおいて、'direction''unicode-bidi'プロパティを無視してもよい。[HTML40]で明示された、双方向の挙動を成し遂げるスタイルシートの規則は、見本のスタイルシートで与えられる。HTMLの4.0の仕様は、双方向性の問題に関する情報もより多く含んでいる。HTMLの4.0は、'writing-mode'プロパティによって説明されるもっと一般的な場合を含んでいない。

最後に、このモジュールは、(一般的な西洋のテキストのレイアウトにおいて、'before'、'after'、'start'と'end'の位置とそれぞれ一致する)'top'、'bottom'、'left'と'right'に関して、絶対的な位置から独立して、テキストの進行方向に関するボックスの四隅を明示する'before'、'after'、'start'と'end'の表記を表記広範囲にわたって用いている。この表記は、同じ目的のために、[XSL]においても広範囲にわたって用いられた。

3.2. 基本のテキストの進行方向の設定:'writing-mode'および'direction'プロパティ

'writing-mode'プロパティは、基本のテキストの進行方向を、左から右へ、右から左へ、あるいは上から下へさせたいかを明示する。(基本のテキストの進行方向が、左から右か右から左のどちらかであったときでも、ユニコード[UNICODE]の双方向のアルゴリズムのために、あるいにこのプロパティや'direction''unicode-bidi'の結果上書きする明示的なテキストの進行方向のために、与えられた要素内の内容の一部または全部が、反対の方向に進行するかもしれないことに注意。このプロパティは、要素に対して、'direction'プロパティを変更したりもする。双方向のテキストに関するそれ以上のことには、組み込みと上書きについての項を参照。

'writing-mode'
値: lr-tb | rl-tb | tb-rl | tb-lr | bt-rl | bt-lr | lr | rl | tb | inherit
初期値: lr-tb
適用先: すべての要素
継承: あり
百分率: 適用不可
媒体: 視覚
lr-tb | lr
ほとんどのローマ字に基礎付けられた文書において普通であるような、左から右への方向に基本のテキストの進行方向を、上から下への方向に行の進行方向を設定する。大部分の文字に対して、現在のテキストの位置はそれぞれの標識が描写された後、左から右へ進む。'direction'プロパティは'ltr'に設定される。
rl-tb | rl
アラビア文字やヘブライ文字において普通であるような、右から左への方向に基本のテキストの進行方向を、上から下への方向に行の進行方向を設定する。directionのプロパティは'rtl'に設定される。
tb-rl | tb
アジア文字において普通であるような、上から下への方向にテキストの進行方向を、右から左への方向に行の進行方向を設定する。基線の配置は、このコンテキストにおいては独特であるかもしれない。一般的に、もっとも有力な基線は、まっすぐな標識の中央を走る。directionのプロパティは'ltr'に設定される。
tb-lr
上から下への方向に基本のテキストの進行方向を、左から右への方向に行の進行方向を設定する。横書きほど頻繁であることはほとんどないが、ラテン語に基礎付けられた文書で、特に表の行や列のラベルで、この種類の縦書きのレイアウトも起こる。基線の配置はこのコンテキストにおいては独特であるかもしれない。一般的に、もっとも有力な基線は、まっすぐな標識の中央を走る。directionのプロパティは'ltr'に設定される。
bt-rl
下から上への方向に基本のテキストの進行方向を、右から左への方向に行の進行方向を設定する。この値は、現行のwriting-modeのプロパティの値が'tb-rl'か'tb'である要素に適用される、方向のプロパティの値'rtl'の場合に含まれるためだけに存在する。directionのプロパティは'rtl'に設定される。
bt-lr
下から上への方向にテキストの進行方向を、左から右への方向に行の進行方向を設定する。この値は、現行のwriting-modeのプロパティの値が、'tb-lr'である要素に適用される、directionのプロパティの値'rtl'の場合に含まれるためだけに存在する。directionのプロパティは'rtl'に設定される。

writing-modeのプロパティによって設定される、基本のテキストの進行方向と、行の進行方向の組み合わせは、流れの方向にも関連している。そのようなコンテキストにおいて、lr-tb、lr、rl-tbやrlという値は、横書きの流れの方向に一致し、その他のもの(tb-rl、tb、tb-lr、bt-rl、bt-lr)は、縦書きの流れの方向に一致する。

横書きの流れの方向に対して、上下の余白は崩されてしまうことがある。縦書きの流れの方向に対して、左右の余白は崩されてしまうことがある。崩れてしまう余白の詳細は、CSS3のボックスのモジュール[公開間近]における、崩れてしまう余白を参照。

このプロパティはの行のレイアウトの方向、基本のテキストの進行方向と同じように方向付けられるあふれ(たとえば、writing-mode:lr-tbに対しては、ブロックの要素が水平面の右にあふれるだろう)、テキストの配置、そして、'text-align: justify'の場合における、ブロックにおいて完結していない最後の行の位置をも明示する。

以下の条件の一つまたは両方が満たされたときのみ、'writing-mode'のプロパティが、inline-levelの要素に何らかの影響ももたらす。

その親と違ったwriting-modeの値を持つ、inline-levelの要素は、行中のブロックの要素になる。

編者注:CSS3のボックスのモジュールにおける、'width'と'height'のプロパティの説明は、縦書きの流れの方向のためのアルゴリズムを、より詳細に説明するために更新される必要がある。たとえば、縦書きの流れの方向において、高さは、親の、レイアウトの高さ(引く余白やボーダー)の最小限度や、要素の最適条件の高さより大きくなりうるだろうと予期される。要素の最適条件の高さは、一般的に、10文字の表意文字の'進行の幅'の長さだとして、決定される。この仕組みは、'無限に'長い縦書きの行や、一行だけの縦書きの流れを避けるのに必要とされる。特に、ボックスのモジュールのセクションの7.2は、横書きの流れの要素に含まれる、縦書きの流れの要素に対する、'auto'の場合について議論すべきである。

これが、横書きの流れ(writing-mode:lr-tb)の図表である。

ブロックを見せる方法の図

これが、東アジアで使われる縦書きの流れ(writing-mode:tb-lr)のための図表である。

ブロックを見せる方法の図

そして最後に、ウイグルとモンゴル語で使われる別の流れ(writing-mode:tb-lr)のための図表である。

ブロックを見せる方法の図

東アジアの文書において、次のように、それらの文字列が現れるテキストの行の流れの形態にかかわらず、年の数字のような、あるラテン語に基礎付けられた文字列を、常に横書きのレイアウトの流れの中に、表示するのがよく好まれる:

テキストの縦書きの列に横書きで現れる標識の塊を見せる縦中横のレイアウト。 縦書きのテキストの列の中に横書きで現れる年の1996を見せる縦中横の例

図の2.2.1:縦書きの中の横書き(別名"縦中横")

この効果は"縦中横"として知られている。これを成し遂げるためには、次のように、ラテン語の文字列を、横書きの流れの方向を持っている、SPANの要素のなかに囲むべきである。

<span STYLE="writing-mode: lr-tb">1996</span>

これは、より初めのころに説明されたものであるが、行中の要素の流れの変化を適用するものである。改行は、テキストのそのような流れのために、通常無効にされる。CSSの'white-space: nowrap'の設定を使って、これを成し遂げることができる。

'direction'
値: ltr | rtl | inherit
初期値: ltr
適用先: すべての要素だが本文を見よ。
継承: あり
百分率: 適用不可
媒体: 視覚

このプロパティに対する値は以下の意味を持っている。

ltr
左から右への方向。
rtl
右から左への方向。

このプロパティは、ユニコードの双方向のアルゴリズムに対して、テキストの進行方向と組み込みと上書きの方向('unicode-bidi'を参照)という、行の方向の構成要素の方向を明示する。値'のltr'と'rtl'は、行の方向に'相対的に'解釈される。加えて、の行のレイアウトの方向、基本のテキストの進行方向と同じように方向付けられるあふれの方向(たとえば、writing-mode: lr-tbに対して、ブロックの要素が水平面の右にあふれるだろう)、テキストの配置、'text-align: justify'の場合において、ブロックの中の完結していない最後の行の位置を明示する。 'direction'プロパティが、inline-levelの要素に何らかの影響をもたらすのに、'unicode-bidi'のプロパティの値は、'embed'か'bidi-override'でなければならず、要素の中の文字の標識の方向が、縦書きのレイアウトにおいて90/-90度か、横書きのレイアウトにおいて0/180度でなければならない。

block-levelのブロックの水準の要素に対する'direction'のプロパティを用いるのは、'writing-mode'のプロパティが取って代わるため、CSS3においては反対されている

注意。'writing-mode''direction'のプロパティは、表の行の要素に対して明示されているとき、行が文書のツリーにおいて存在しないため、行におけるセルに継承されない。したがって、[HTML40]のセクションの11.3.2.1.に説明されているCSSは"dir"の属性の継承の規則を容易に保持することはできない。

注意。'writing-mode''direction'のプロパティは、互いに相互作用する。そういうものとして、'writing-mode'は、'direction'の値を置き換える。同様に、'writing-mode'の後の'direction'の修正は、実際上、'writing-mode'の値を、反対の行中の進行に変える。たとえば、'writing-mode:lr-tb'のある要素に適用される'direction:rtl'は、実際上、'writing-mode:rl-tb'にする。これは、二つのプロパティの混在した使用法が反対されてるか、少なくとも大いに慎重に使われるべきである、主な理由のひとつである。

注意。これらのプロパティは背景の画像の位置に影響しない。

3.3. テキストの流れの中にある標識の方向:'glyph-orientation-vertical''glyph-orientation-horizontal'のプロパティ

場合によっては、基本のテキストの進行方向に関連した、文字の連続の方向を変えることが必要とされることがある。必要とするものは、時々の半角のローマ字のテキストが横書きに、ほかのときは縦書きに表示される、東アジアの文書の縦書きのレイアウトに、個々に適用できるものである。

二つのプロパティは、基本のテキストの進行方向に関連した、標識の方向を制御する。'glyph-orientation-vertical'の制御する。'glyph-orientation-vertical'は、基本のテキストの進行方向が縦書きであるときに、標識の方向を制御する。'glyph-orientation-horizontal'は、テキストの進行方向が横書きであるときに、標識の方向を制御する。以下の理由のため縦書きと横書きの間を区別することが必要である。

'glyph-orientation-vertical'
値: <angle> | auto | inherit
初期値: auto
適用先: すべての要素
継承: あり
百分率: 適用不可
媒体: 視覚
<angle>
ユーザエージェントは、角度の値を、ユーザエージェントによってサポートされている標識の値に丸めてもよい。適合しているユーザエージェントは、以下の値しかサポートしないくてもよい。0deg、90deg、180deg、270deg。
"0deg"の値は、すべての標識が、基本のテキストの進行方向に向かって、標識の下端を基準にして、方向付けられ、互いの上端においては、結果として、垂直に積み重ねられる標識となることを明示する。"90deg"の値は、"0deg"の方向から時計回りに90度回転することを明示する。このプロパティを90または270度に設定された文字に対しては、最初に再整理が、ユニコードの双方向のアルゴリズムによって適用され、それから、結果となる標識が、<angle>の値によって回転される。
auto
基本のテキストの進行方向に関係のある、標識の方向は、描写される文字のユニコードの文字の番号によって、自動的に決定される。

(表意文字の句読点を除いた、)全角の表意文字と、全角のローマの標識は、"0degの<angle>が明示されているかのように描写する(すなわち、すべての標識が、基本のテキストの進行方向に向かって、標識の下部を基準にして、方向付けられ、互いの上部においては、結果として、垂直に積み重ねられる標識となる)

表意文字の句読点と、交互に横書きと縦書きの標識の形をしている、その他の表意文字は、標識の縦書きの形を用いることにする。

全角でないテキストは、"90deg"の<angle>が明示されているかのように設定される。したがって、半角のローマ字のテキストは、全角の表意文字と全角のローマ字のテキストに対して、時計回りに90度回転される。

ヘブライ語とアラビア語のテキストは、時計回りに90度回転される。テキストの視覚的な整形は、回転より前に適用される、双方向のアルゴリズムによって決定される。

注意。autoの値は、普通ヨーロッパの文字と日本語を混在する慣用で期待された結果を生成する。しかしながら、その厳密なアルゴリズムは、多くの要因の間の複雑な相互関係に基礎付けられており、したがって異なるアルゴリズムが、異なるプロセスの環境で用いられるかもしれない。厳密な制御のためには、明白な<angle>の値を明示してください。

このプロパティは、'writing-mode'のプロパティによって決定される、行中の進行に関連した、標識の方向を明示する。このプロパティは、縦書きのwriting-modeで書かれたテキストにしか適用されない。適合したユーザエージェントは、順々に高度になっていく水準のサポートにおいて、以下のことをしてもよい。

  1. 90degの値のみをサポートする。
  2. 0deg、90deg、180でdegと270degをサポートする。

このプロパティの値は、作用される標識に対して生成される、標識の領域の、配置と高さの両方に影響する。標識の標準の方向が、dominant-baselineに平行となるようになされれば、回転された標識の縦のalignment-pointが、その標識に適切なalignment-baselineを基準にして配置される。回転される標識が配置される基線は、標識の属しているスクリプトに対する"alignment-baseline"によって見分けられる垂直の基線である。標識の領域は、標識に対する高さのフォントの特性によって決定される。

横の配置の点、基線、(標識の進行の幅として計算される)高さは、もし、標識の標準の方向がdominant-baselineに平行であれば、使用される。

下の図表は、'glyph-orientation-vertical'の異なる使用を説明する。左の図表は、ローマ字に対する'glyph-orientation-vertical'が、autoか"90deg"であるときに、半角のローマ字と全角の表意文字を混在させた結果を示す。右の図表は、ローマ字が、"0deg"'glyph-orientation-vertical'を持つように明示されているときに、半角のローマ字と全角の表意文字を混在させた結果を示す。

vertical-ideographicの形態における混在された標識のレイアウト。全角の標識は直立し、全角でない標識は90度回転される。 vertical-ideographicのレイアウトにおける混在した日本語と英語の例。 縦書きの形態における混在した標識のレイアウト。すべての標識は直立している。 縦書きの形態における混在された日本語と英語の例。すべての標識は直立している。

双方向のアルゴリズムと'glyph-orientation-vertical'プロパティには、以下の相互作用がある。

  1. 双方向のアルゴリズムは、同じglyph-orientation-verticalの値がある、それぞれ隣接するテキストの範囲に、分かれて適用される。言い換えれば、プロパティの値における変化は、双方向のアルゴリズムを再設定する。
  2. glyph-orientation-verticalの値が270度のとき、すべての正当の双方向のプロセス処理後の、すべての反転する記号は、時計回りに270度回転される前に、反転される(すなわち、その標識が、'水平'の軸に沿って反対にされる)。これは、望まれる描写の結果を成し遂げるためになされ、それによって反転する文字が、それが取り囲んでいるテキストを'内部'に向けるようになる。
'glyph-orientation-horizontal'
値: <angle> | inherit
初期値: 0deg
適用先: すべてのinline-levelの要素
継承: あり
百分率: 適用不可
媒体: 視覚
<angle>
ユーザエージェントは、角度の値を、ユーザエージェントによってサポートされている標識の値に丸めてもよい。"0deg"の値は、すべての標識が、基本のテキストの進行方向に向かって、標識の右端を基準にして方向付けられることを明示する。"90deg"の値は。"0"の方向から、時計回りに90度の方向を明示する。0か180度に設定されたこのプロパティを持つ文字に対しては、描写はこのプロパティを90または270度に設定された文字に対しては、最初に描写の処理が、ユニコードの双方向のアルゴリズムによって適用され、それから、結果となる標識が、<angle>の値によって回転される。

このプロパティは、'writing-mode'のプロパティによって決定される、行中の進行方向に関連した、標識の方向を明示する。このプロパティは、横書きのwriting-modeで書かれたテキストにしか適用されない。適合したユーザエージェントは、順々に高度になっていく水準のサポートにおいて、以下のことをしてもよい。

  1. 90degの値のみをサポートする。
  2. 0deg、90deg、180でdegと270degをサポートする。

このプロパティの値は、作用される標識に対して生成される、標識の領域の、配置と幅の両方に影響する。標識の標準の方向が、dominant-baselineに平行となるようになされれば、回転された標識の縦のalignment-pointが、その標識に適切なalignment-baselineを基準にして配置される。回転される標識が配置される基線は、標識の属しているスクリプトに対する"alignment-baseline"によって見分けられる水平の基線である。標識の領域は、標識に対する幅のフォントの特性によって決定される。

横の配置の点、基線、幅は、もし、標識の標準の方向がdominant-baselineに平行であれば、使用される。

3.4. 組み込みと上書き: 'unicode-bidi'のプロパティ

'unicode-bidi'
値: normal | embed | bidi-override | inherit
初期値: normal
適用先: すべての要素だが本文を見よ
継承: なし
百分率: 適用不可
媒体: 視覚

このプロパティは、新しい組み込みの段階や、方向の上書きをできるようにすることによって、ユニコードの双方向のアルゴリズムの、さらに進んだ制御をできるようにする。このプロパティに対する値には、以下のような意味がある。

normal
要素は、双方向のアルゴリズムで、付加的な水準の組み込みを開かない。inline-levelの要素に対しての暗黙の描写処理が、要素の境界にまたがって動作する。
embed
もし要素がinline-levelであれば、この値は、双方向のアルゴリズムに関して、付加的な水準の組み込みを開く。この組み込みの水準の方向は、'direction'によって与えられる。要素の中では、描写が暗黙になされる。これは、要素の最初に、LRE(U+202A;'direction: ltr'に対するもの)やRLE(U+202B;'direction: rtl'に対するもの)を、要素の最後にPDF(U+202C)を加えたものと一致する。
bidi-override
もし要素がinline-levelの要素しか含まない、inline-levelかblock-levelの要素であれば、これは上書きを生成する。これは、要素の中では、描写は、'direction'によって、厳密に連続の中にあり、双方向のアルゴリズムの、暗に示された部分は無視される。これは、要素の最初に、LRO(U+202D;'direction: ltr'に対するもの)かRLO(U+202E;'direction: rtl'に対するもの)を、要素の最後にPDF(U+202C)を加えたものと一致する。

それぞれのbolock-levelの要素における文字の最終の整形は、双方向の制御のコードを上に説明したように加え、mark-upを取り去り、そして、スタイル処理がなされたテキストと同じline-breaksを生成するプレーンテキストに対して、結果となる文字列を、ユニコードの双方向のアルゴリズムの実行に通していたのと同じである。この経過において、'unicode-bidi'のプロパティは、要素に対して明示された'direction'において、強調した文字として扱われる場合の'normal'よりほかの値を持っていれば、画像のような、テキストでないエンティティは、はっきりしない文字として扱われる。

注意。一定の方向(完全に左から右への方向か、完全に右から左への方向であるかのどちらか)である行中の要素を流すことができるようにするために、より多くの行中のボックス(匿名の行中のボックスを含む)が生成しなければならないかもしれず、行中のボックスの中には、ふるい落とされ、そして流す前に最整形されなければならないものもあるかもしれない。

ユニコードのアルゴリズムには、組み込み処理の61の段階の制限があるから、ふさわしくなければ、'normal'よりほかの値で'unicode-bidi'を使わないように注意すべきである。特に、'inherit'の値は、非常に用心して使われるべきである。しかしながら、概して、ブロックのように表示されるように意図された要素に対しては、'unicode-bidi: embed'の設定は、表示が行中に変更される場合には、要素をともに保つために好まれる(下の例を参照)。

以下の例は、双方向のテキストのある、XMLの文書を示す。次に重要な設計の原理を説明する。DTDの設計者は、本来の言語(要素や属性)と付属のスタイルシートの両方で、双方向を考慮に入れるべきである。双方向の規則は、ほかのスタイルシートで上書きされず、その結果、文書の言語やDTDの、双方向の挙動が維持されるべきである。

例:

以下の例において、小文字は本質的に左から右への方向の文字を表し、大文字は本質的に右から左への方向の文字を表す。

<HEBREW>
  <PAR>HEBREW1 HEBREW2 english3 HEBREW4 HEBREW5</PAR>
  <PAR>HEBREW6 <EMPH>HEBREW7</EMPH> HEBREW8</PAR>
</HEBREW>
<ENGLISH>
  <PAR>english9 english10 english11 HEBREW12 HEBREW13</PAR>
  <PAR>english14 english15 english16</PAR>
  <PAR>english17 <HE-QUO>HEBREW18 english19 HEBREW20</HE-QUO></PAR>
</ENGLISH>

これはXMLであるから、スタイルシートは書くための方向を設定する責任がある。これがスタイルシートである。

/* Rules for bidi */
HEBREW, HE-QUO  {direction: rtl; unicode-bidi: embed}
ENGLISH         {direction: ltr; unicode-bidi: embed}

/* Rules for presentation */
HEBREW, ENGLISH, PAR  {display: block}
EMPH                  {font-weight: bold}

HEBREWの要素は、右から左への基礎の方向であるブロックである。PARは、その親から基本の方向を継承するブロックである。したがって、最初の二つのPARは、右上から始まり、最後の三つは左上から始まる。どうか、HEBREWとENGLISHは、明示のためだけに要素の名前として選択され、概して、要素の名前は、言語への参照なしで、伝えるべきであることを注意してください。

EMTHの要素はinline-levelであり、'unicode-bidi'に対するその値は、'normal'(初期値)であるから、テキストの整形処理には何の影響もしない。HE-QUOの要素は、これに反して、組み込みを生成する。

このテキストのフォーマット処理は、もし行の長さが長ければ、このように見えるだろう。

               5WERBEH 4WERBEH english3 2WERBEH 1WERBEH

                                8WERBEH 7WERBEH 6WERBEH

english9 english10 english11 13WERBEH 12WERBEH

english14 english15 english16

english17 20WERBEH english19 18WERBEH

HE-EUOの組み込み処理は、HEBREW18にenglish19の右になるようにさせることに注意。

もし行が改められれば、もっと以下のものに近いものになるだろう。

       2WERBEH 1WERBEH
  -EH 4WERBEH english3
                 5WERB

   -EH 7WERBEH 6WERBEH
                 8WERB

english9 english10 en-
glish11 12WERBEH
13WERBEH

english14 english15
english16

english17 18WERBEH
20WERBEH english19

HEBREW18はenglish19の前に読まれなければならないから、english19の上の行にある。早いフォーマット処理からの長い行の改行だけは、作用しない。english19からの最初の音節は、前の行にぴったり合うかもしれないが、右から左への方向のコンテキストにおいて、左から右への単語をハイフンでつなぐのと、またその逆のものは、行の中央にハイフンが表示されなければならないのを、普通避けると考えられる。

3.5. 文字の分類:'script'のプロパティ

テキストのレイアウトにおいて、挙動の多くが文字種に基づく文字の分類に関連している。たとえば、行分けや行そろえの挙動は、要素のテキストの内容の'diminant'の文字に依存する。これは、要素において、あいまいでない、文字の識別子のある、最初の文字を見つけることによって、発見的に決定される。'script'のプロパティを使うことによっても、明示的に示すことができる。

'script'
値: auto | none | <script> | inherit
初期値: auto
適用先: すべての要素
継承: あり
百分率: 適用不可
媒体: 視覚

値は以下の意味を持っている。

auto
要素の内容のもっとも有力な文字を決定するための、あいまいでない文字の識別子をもつ、[文字の方向と、双方向性のため、どんな描写の後でも、]最初の文字の子孫を使ってください。これは、計算された文字の値を決定する。しかしながら、要素のそれぞれのテキストのコンポーネントは、文字の識別子によって指示されるような、印刷上関係のある挙動を行うかもしれない。明らかな文字の識別子があるテキストのコンポーネントがなければ、(あるいは、まったくテキストの内容がなければ、)計算される値は'Latin'である。
none
文字が、未知であるか、この要素の適切なフォーマット処理に重要でないことをを明示する。
<script>
[ISO15924]に従った文字の定義。要素のすべてのテキストのコンポーネントは、これらのテキストのコンポーネントの固有の文字の値ではなく、この文字の値によって指示されるような、印刷上関係のある挙動を行う。

4. テキストの配置と行そろえ

4.1. テキストの配置:'text-align'のプロパティ

'text-align'
値: start | end | left | right | center | justify | <string> | inherit
初期値: start
適用先: block-levelの要素
継承: あり
百分率: 適用不可
媒体: 視覚

このプロパティは、ブロックの行中の内容がどのように配置されるかを説明する。値には、以下の意味がある。

start
テキストは、現行のテキストの進行方向によって決定されるような、行中の進行の最初の部分に配置される。
end
テキストは、現行のテキストの進行方向によって決定されるような、行中の進行方向の最後の部分に配置される。
left, right
横書きの行中の進行において、テキストはそれぞれ左か右に配置される。縦書きの行中の進行においては、配置はUAに依存する。値'start'および'end'が、代わりに用いられるべきである。'left'と'right'の使用は、CSS3においては推奨されない。
center
テキストは中央に配置される。
justify
テキストは行をそろえられる。行そろえのアルゴリズムは、'text-justify'のプロパティを使用することによって、さらにまた改良される。適合するユーザエージェントは、値'justify'を'start'であるものとして解釈してもよい。
<string>
表の行におけるセルが配置される文字列を明示する(詳細と実例については行における縦書きの配置の項を参照)。この値は、のセルにのみ適用される。もし、その他の要素に設定されると、'start'のように扱われるだろう。

テキストのブロックは、行のボックスの積み重ねである。'start'、'end'、'left'、'right'および'center'の場合においては、このプロパティは、それぞれの行のボックスの中にあるインラインのボックスは、それぞれの行のボックスの、最初と最後の側に関して配置される。配置は、閲覧領域に関してなされるのではないのである。'justify'の場合においては、UAは、その位置を調節するのに加えて、行中のボックスを引き伸ばしてもよい。'letter-spacing''word-spacing'も参照。)

例:

この例において、'text-align'が継承されるため、'class=center'をもつDIVの内部のすべてのblock-levelの要素は、その行中の内容が中央にくるようにさせる。

DIV.center { text-align: center }

4.2. 行そろえ:'text-justify'のプロパティ

'text-justify'
値: auto | inter-word | inter-ideograph | distribute | newspaper | inter-cluster | kashida | inherit
初期値: auto
適用先: block-levelの要素
継承: あり
百分率: 適用不可
媒体: 視覚

このプロパティは、行そろえの配置の種類を選択する。これは、'text-align''justify'に設定されているときにのみ、テキストのレイアウトに影響する。このように、このプロパティをサポートしていないUAは、完全に行そろえがなされたようなテキストを今までどおり描写するだろうが、ほとんどのときは、それは少なくとも部分的に正しい。一般的に、最後の行がそれ自体で行そろえがなされていなければ、text-justifyのプロパティは、最後の行には影響しない。text-justifyの値のほとんどは、非常に明確な風に、文書体系に影響する。その文書体系(やその集団)は、次のものである。

テキストの構成要素のtext-justificationの挙動は、文字列の文字の分類によって導かれる。'script'プロパティを用いると、その構成要素の挙動を変更することができる。

text-justifyの値により、空白処理は単語や文字の間において変更されるかもしれない。

text-justifyのプロパティに可能な値は次のものです。

auto
UAは、性能と十分な表示の質に基づいて、従う行そろえのアルゴリズムを決定する。単語間の伸長は、単語の区切り符号として空白を用いるすべての文字で、一般に使われる。しかしながら、kashida-spaceのプロパティが0でない値をもてば、アラビア語のテキストに、kashidaの伸長を使うように推奨されるだろう。
inter-word
最も単純で最も早い完全な行そろえの挙動を選択する。それは、単語の間のスペースの幅を増やすことだけにより、行にまたがって平等にテキストを広げる。単語の考えは、文字依存であり、厳密なアルゴリズムは、ユーザエージェントによって決定される。最小限度、行そろえは、それぞれの透明な空白の境界で起こると期待される。単語の中で、伸長や圧縮は少しも起こらない。すなわち、文字の空白処理は、まったく生成されない。kashidaの効果も、まったく起こらない。

下の図表は、どのように文字が要素の最後の二行においてレイアウトされるかを示すことによって、この形態を説明する。

単語間の行そろえにおいて、標識の配置を示す図表

図の3.2.1:inter-wordの行そろえがなされた要素で、最後の二行における混在した標識のレイアウト

たとえば、ビューアは以下のように'inter-word'の行そろえがなされた段落を描写することができる。

混在した日本語と英語のテキストに適用された、inter-wordの行そろえの例

図の3.2.2:混在したテキストに適用された、単語間の行そろえ

newspaper
単語間と文字間の両方の空白処理が、テキストを全体の行にまたがって広げるために広げたり減らしたりされる、行そろえの挙動を選択する。そしてその上、どんな与えられた行におけるテキストの配置も、先あるいは後の数行のレイアウトや内容に依存する。これは、特に狭い行に便利であるような、新聞や雑誌において好まれる完全な行そろえの挙動の、かなり時間がかかり、きわめて複雑な種類である。たとえば、一般的に、圧縮が最初に試みられる。もし、成功しなければ、伸長が起こる。単語間の空白は、 広げられ、最後に文字間の伸長が行われる。これは、ベースラインのコネクタを使う、Devanagariやその他の南アジアの文書体系を除くすべての文字の集団に適用される。はじめの値は、(文字の総数における)行の幅に関連付けられてもよい。厳密なレイアウトのアルゴリズムは、ユーザエージェントによって決定される。

以下の図表はこの形態を説明する。

newspaperの行そろえにおける文字の配列を示している図表

図の3.2.3:newspaperの行そろえの要素の最後の二行における混在した文字のレイアウト

inter-ideograph
この様式において、letter-spacingの調節はCJKの集団に対してのみ起こる。ほかは単語間の伸長のみを用いる。kashidaの効果は、少しも起こらない。これは、ラテン語や韓国語ではなく、日本語の文書体系のコンテキストにおいて好まれる行そろえである。

下の図表はこの様式を説明する。

inter-ideographの行そろえにおける文字・符号の配置を示す図表

図の3.2.4:inter-ideographの行そろえの要素の最後の二行における、混在した標識のレイアウト

下はこの様式が動作する方法の例である。

混在した日本語と英語のテキストに適用された、inter-ideographの行そろえの例

図の3.2.5:混在したテキストに適用された、inter-ideographの行そろえ

distribute
'newspaper'のように、(Hindiを除く)ほとんどの文字の集団に対して、文字の空白処理を調整できるようにするが、newspaperと違い、単語の空白処理と文字の空白処理の間で優先順序をつけない。すなわち、空白の文字に、ほかの文字と同じ、文字の空白処理の調節を行う。そして、結果は、狭いのと広い行の間に変化がない。この値は東アジアのコンテキストにおいて最もよく使われる。

下の図表はこの様式を説明する。

distributeの行そろえにおける、文字の配置を示す図表

図の3.2.6:distributeの行そろえの要素の最後の二行における、混在した文字のレイアウト

たとえば、ビューアは、以下のように'distribute'の行そろえがなされた段落を描写することができる

混在した日本語とて英語のテキストに適用された、distributeの行そろえの例。

図の3.2.7:混在したテキストに適用されたdistributeの行そろえ

inter-cluster
inter-ideographと同じ役割だが、東南アジアの文字に対しての役割を果たす。すなわち、文字の空白処理はその文字に属するクラスタに対してのみ起こる。クラスタは単一の単位としてフォーマットがなされる文字の集団と定義される。
kashida
inter-ideographと同じ役割だが、Kashidaの効果を経て、アラビアの文字に対しての役割を果たす。すなわち、ほかの文字に対しては、少しも文字の空白処理は起こらない。

以下の表は、それぞれの適切なtext-justifyの値に対する、それぞれの文字の集団や、text-justifyのプロパティの値の組み合わせのための伸長・圧縮の手順を説明する。

text-justifyのプロパティの値
文字の集団 auto* inter-word newspaper inter-ideograph distribute inter-cluster kashida
Latin word-spacingのみ* word-spacingのみ word-spacingとletter-spacingの間に優先順位付け word-spacingのみ word-spacingのみ word-spacingのみ word-spacingのみ
CJK 特別な空白処理なし* 特別な空白処理なし letter-spacing letter-spacing letter-spacing 特別な空白処理なし 特別な空白処理なし
Devanagari* word-spacing* word-spacing word-spacing word-spacing word-spacing word-spacing word-spacing
Arabic kashidaとword-spacing* word-spacing kashidaとword-spacing word-spacing kashidaとword-spacing word-spacing kashidaとword-spacing
SEのアジアの群 クラスタ間の空白処理* クラスタ間の空白処理 クラスタ間の空白処理 特別な空白処理なし クラスタ間の空白処理 クラスタ間の空白処理 特別な空白処理なし

図の3.2.8:text-justifyの値と文字の集団の間の相互作用

*autoに対して示される値は、推奨でしかない。UAは、違った方法を実装してもよい。

*Devanagariの記載事項は、BengaliとGurmukhiのようなベースラインのコネクタを用いる、インドで使われるほかの文字や文書体系をも、同様に表す。

4.3. 最後の行の整列:'text-align-last' のプロパティ'

'text-align-last'
値: auto | start | end | center | justify | size | inherit
初期値: auto
適用先: ブロックの水準の要素
継承: あり
パーセンテージ: 適用不可
媒体: 視覚

このプロパティがブロックの行中の内容の最後の行がどのように整列されるかを説明する。これは、もしもたった一つの行であるBRの要素の前置きとしている行と、匿名のブロックの最後の行までを含んでいれば、唯一のブロックの行に適用する。典型的に最後の行はブロックの要素のほかの行のように整列され、これは'text-align'のプロパティで定められる。しかしながら、'text-align'のプロパティが'justify'に定められるときのような状態の中では、最後の行が違ったふうに整列されるかもしれない。

値は次に続く意味を持つ。

auto
最後の行は、'text-align'のプロパティの値によって決定されるほかの行のように整列される。しかしながら、もしも'text-align'のプロパティが'justify'の値に定められれば、最後の行は行中の前進の出だしに整列される。
start、endおよびcenter
それぞれ出だし、終わりおよび中央のテキスト。
justify
最後の行は、'text-justify'によって定められる両端のそろえの種類を使っているほかの行のように、両端をそろえられるだろう。しかしながら、もしも最後の行において、少しも拡大の機会がなければ、行が両端をそろえられると見えないかもしれないことに注意せよ。
size
行の内容は行に対して適合させるように拡大・縮小されるすべての行に対するフォントは、同じ要因によって拡大・縮小されなければならず、その要因はできるだけ小さく(すなわち、できるだけ行に対してたくさんを適合させ)なければならない。典型的に、この値はたった一行の要素に対して用いられる。

次に続く例は、すべての行が分配される両端のそろえでそろえられる場合において、整列のプロパティの使用法を示す。これは一般的に東アジアの印刷の体裁の中に見つけられる。

P.distributealllines
 { text-align: justify; text-justify: distribute; text-align-last: justify }

4.4. 最小と最大のフォントサイズ:'min-font-size''max-font-size'のプロパティ

'min-font-size'
値: <font-size> | inherit
初期値: 0
適用先: すべての要素
継承: あり
パーセンテージ: 要素の計算された'font-size'
媒体: 視覚

もしも、'text-align-last'が'size'ならば、要素の最後の行のフォントが'font-size'のsmallerと'min-font-size'より小さくなることは許されない。

'max-font-size'
値: <font-size> | auto | inherit
初期値: auto
適用先: すべての要素
継承: あり
パーセンテージ: 要素の計算された'font-size'
媒体: 視覚

もしも'text-align-last'が'size'ならば、最後の行のフォントが'font-size'のlargerと'max-font-size'よりも大きくなることは許されない。'auto'は少しの制限もないことを意味する。

4.5. 付加的な圧縮:'text-justify-trim'のプロパティ

'text-justify-trim'
値: none | punctuation | punct-and-kana | inherit
初期値: punctuation
適用先: ブロックの水準の要素
継承: あり
パーセンテージ: 適用不可
媒体: 視覚

'text-justify'が'inter-word'よりほかの何かであるとき、これは、テキストの両端のそろえのアルゴリズムに対して、個々のフォントの空白の圧縮の許可を定める。この特殊な種類のスペースの圧縮は、フォントの水準上で起こる。すなわち、文字範囲の中の空白は、標識の出現に影響を及ぼさずに、それ自身減少させてもよい。これは幅の広いセルの標識にだけ適用する。可能な値は、

none
幅の広いセルのフォントのスペースの圧縮は少しも許されない。

少しも圧縮のない標識のレイアウトの図表

図の3.4.1:少しも圧縮のない標識のレイアウト

punctuation
スペースは、幅の広いセルの句読点からだけ取り除かれることができる

punctuationの圧縮のある標識のレイアウトの図表

図の3.4.2:句読点の圧縮のある標識のレイアウト

punct-and-kana
スペースの圧縮は幅の広いセルの句読点と幅の広いセルのかなの標識に関して許される

punct-and-kanaの圧縮のある文字のレイアウトの図表

図の3.4.3:句読点とかなの圧縮のある文字のレイアウト

4.6. Kashidaの効果:'text-kashida-space'のプロパティ'

'text-kashida-space'
値: <percentage> | inherit
初期値: 0%
適用先: ブロックの水準の要素
継承: あり
パーセンテージ: 説明されるように
Media: 視覚

kashidaはアラビア語におけるいくつかの注意深く選ばれた点で文字の伸長を許す、アラビア語の文書体系で使われる印刷上の効果である。おのおのの伸長は、kashidaの点のおのおのの側でのたった一つの文字か符号である、kashidaの標識の数を使って成し遂げられることができる(UAはフォントに基礎付けられた機構か、または体系の特性を用いてよい)。text-kashida-spaceのプロパティは、0%は少しもkashidaの拡大をしないことを意味し、100%はkashidaの拡大だけを意味するという、空白の拡大の大きさに対するkashidaの拡大の比率を表現する。このプロパティは、kashidaの拡大が用いられる両端のそろえのスタイルとともに使われる。(今のところ、text-justify: auto、kashida、distributeおよびnewspaper).

アラビア語のテキストの二つのまったく同じ段落を示す下の図表において、第2番目の行(両端をそろえられない)の中の青い線は、赤い下線で示されるような最初の行(両端をそろえられる)におけるkashidaに対して用いられ、伸長の機会の中で分割される長さを示す。

アラビア語のテキストに適用されるkashidaの例

図の3.5:アラビア語のテキストに対して適用されるKashida

その例の中では、text-kashidaのプロパティが100%に定められるということを示し、少しの拡大も、単語それ自身の間で起こらない。


5. 基準線の整列

5.1. フォントによって提供される基準線の情報

与えられた文字体系の標識は、おのおのの標識に関する個々の点である整列の点が、その文字体系におけるほかの標識の整列の点と整列するように配置される。異なった文字体系の標識は、典型的に標識に関する異なった点で整列される。たとえば、西洋の標識が大文字の底に基づいて整列され、(Devanagari、Gurmukhi、Bengaliという文字体系からの標識を含めて、)あるインド語派の標識は、標識の上に近い水平な字画の上で整列され、東アジアの標識は、標識の全角の枠の底かまたは中央で整列される。文字の中で、ただ1個のフォントのサイズがあるテキストの行の中に、基準線と呼ばれる幾何学的な線を、行中の前進の方向の中で整列の点の連続が定義する。西洋とたいていのほかのアルファベットや音節を表す標識は、"アルファベット"の基準線に整列され、上に述べたインド語派の文字列は"吊り下げ"の基準線に整列され、"表意文字"の基準線に整列される。

三つの整列の点

この図は、ローマ字のAで例証される、アルファベットや多くの音節を表す文字体系に対して、Gurmukhiの音節"ji"で例証されるあるインド語派の文字体系に対して、そして、"country"を意味している表意文字の標識で例証される表意文字の文字体系に対して、整列の点の縦の位置を示す。表意文字の標識の周囲を回る細い黒色の矩形は、その標識に対する全角の枠を例証し、全角の枠の中の標識の"黒いしるし"の典型的な配置処理を示す。

基準線の表は、設計の空間の座標の体系において、ひとつかもっと多い基準線の位置を明示する。基準線の表の機能は、異なった文字体系が同じテキストの行の上に混合するときに、お互いに関してその整列を容易にするためのものである。望ましい相対的な整列は、どの文字体系が行(かブロック)の中のもっとも有力であるかに依存するかもしれない。加えて、違った整列の位置が横と縦の文書形態に対して必要とされる。それゆえに、フォントは、典型的に横の文書形態に対してひとつかもっと多く、縦の文書形態に対してはゼロかもっと多い、基準線の表の一そろいを持ってもよい。

異なった基準線の位置

横や縦の位置の例。それぞれの例において細く罫を引いた枠は、"全角の枠"である。ラテン語の標識に対しては、最初の文字・符合の全角の枠だけが示される。例の1は水平に書かれた典型的なラテン語のテキストを示す。このテキストは、青で示されたアルファベットの基準線と関連して配置される。例の2は、水平の表意文字の基準線上に配置された、典型的な表意文字の標識を示す。全角の枠がこの2つの場合に対して違った風に配置されることに注意せよ。例の3と4は縦の文書形態で用いられる基準線の同じセットである。ラテン語のテキストである例の3は、縦の文書体系における均整の取れたスペースのラテン語の標識に対して典型的である、90度のglyph-orientationで示される。例の4における表意文字の標識が、縦の表意文字の基準線上に配置されるのだが、全角の枠の中の中央におかれるから、同じ全角の枠のあるすべての標識が、お互いに関して鉛直で中央におかれる。

あるフォントに対するフォントの表は、そのフォントにおける個々の標識に対するフォントの特質を含む。CSSは、フォントの表が、横の文書体系に対するひとつの幅の値、ひとつの整列の基準線とひとつの整列の点を、フォントにおけるおのおのの標識に対して、当然含むと決めてかかる。縦の文書体系がサポートされれば、おのおのの標識は、縦書きの文書形態に対する、もうひとつの幅の値、整列の基準線と整列の点を持たなければならない。(幅として明示されるが、縦の文書形態に対しては、幅は縦の方向に用いられる。)

標識が属する文字体系は、標識が整列される基準線を決定する。設計の空間の座標の体系における基準線の位置は、整列の点の、デフォルトのブロックの前進の方向の位置を決定する。整列の点の、行中の前進の方向の位置は、標識の出だしの端にある。

全角の枠の中の整列

この図は、おのおの全角の枠のある、三つの異なった文字体系からの標識と、全角の枠の中のその文字符号に適切な基準線を示す。おのおのの標識の整列の点は、全角の枠の出だしの端の"X"によって、そして整列の基準線を青色にすることによって示される。その標識に基準線にマップした文字の親要素の基準線は、打ちつけられた点の一そろいとして示される。

5.2. 基準線の識別子

基準線の整列のプロパティは、その親について、子供の要素の整列を制御する。その基準線の位置は、次に続く図中で説明される。

異なった基準線

この図は、下に定義される基準線の大部分とともに、Gurmukhi(吊り下げのインド語派の文字体系)、ラテン語と表意文字の文字体系の見本を示す。表意文字の標識を取り囲んだ細い線は、その標識が中央に置かれる全角の枠の記号である。この図中では、"テキストの前の端"と"テキストの後の端"の位置は、"アルファベット"の基準線がもっとも有力な基準線と仮定して計算される。"中央"という基準線は、図から省かれているが、だいたい"数学"という基準線が示される場所で、"テキストの前の端"と"テキストの後の端"という基準線の中間に位置する。

下の基準線の識別子は、この仕様書の中で使われる。その中には、フォントによって提供される基準線の情報を説明している項の中で説明されるように、フォントに含まれる基準線の表によって決定されるものもある。ほかは、下に説明されるほかのフォントの特質から計算される。

アルファベット

これはたいていのアルファベットや音節を表す文字体系によって用いられる基準線を識別する。これは、多数の西洋、南インド、東南アジア(表意文字でない)の文字体系を含むが、それらに限定されない。

表意文字

これは。表意文字の文字体系によって用いられる基準線を識別する。歴史的な理由のために、この基準線は表意文字の全角の枠のそこにあり、象形文字の全角の枠の中央にはない。"中央"の基準線を見よ。表意文字の文字体系は、中国語、日本語、朝鮮語とベトナムのChu Nomを含む。

吊り下げ

これは、あるインド語派の文字体系によって用いられる基準線を識別する。この文字体系はDevanagari、GurmukhiとBengaliを含む。

数学

これは、数学の記号で使われる基準線を識別する。

中央

これは、全角の枠の中央にある計算された基準線を識別する。基準線は、テキストの前の端とテキストの後の端という基準線の中間に位置する。

注意せよ。表意文字のフォントに対して、この基準線はしばしば標識を整列するのに使われる。これは、表意文字の基準線の代わりにとりうる方法である。

中間

これは、xの高さの値の1/2だけ、変化の方向に、アルファベットの基準線から隔てられる基準線を識別する。基準線の位置は、フォントのデータから得られるかもしれないし、"xの高さ"に対してフォントの特質を持つフォントに対して得られるかもしれない。情報のそれらの断片のどちらか一方を欠くときは、基準線の位置は、"中央"という基準線に近づけられてもよい。

テキストの前の端

これは、全角の枠の前の端を識別する。この基準線の位置は、基準線の表中に明示されてもよいし、計算されてもよい。

注意せよ。この基準線の位置は普通はアセンダのあたりか、その上部にあるが、標識より上に現れることができるすべてのアクセントを取り囲んではならない。それらのフォントに対しては、"上昇"のフォントの特質の値が使われる。表意文字のフォントに対して、この基準線の位置は、通常は"表意文字"の基準線から変化の方向に1全角である。しかしながら、表意文字のフォントの中には、もっと厳格な調節を可能にするために、行中の前進の方向に切り詰めた幅を持つものもある。縦の文書様式に対してだけ設計された、そのようなフォントが横の文書形態の中で使われるとき、"テキストの前の端"という基準線はテキストの後の端から1全角より小さいかもしれない。

テキストの後の端

これは、全角の枠の後の端を識別する。この基準線の位置は、基準線の表中に明示されてもよいし、計算されてもよい。

注意せよ。ディセンダのあるフォントに対しては、その基準線の位置は通常はディセンダのあたりか、その下部にある。それらのフォントに対して、"降下"のフォントの特質の値が使われる。表意文字のフォントに対しては、基準線の位置は通常は"表意文字"という基準線にある。

ほかに、行の枠のためだけに定義される二つの計算された基準線がある。おのおのの行の枠に対して、すべての行を完全に含む最も近い祖先の要素のそれである、もっとも有力な基準線、基準線の表と、基準線の表のfont-sizeがある。"前の端"と"後の端"という基準線は次のとおり定義される。

前の端

行のもっとも有力な基準線からの、行の"前の端"という基準線の隔たりは、整列の基準線が"前の端"または"後の端"のいずれかであるすべての行中の枠を無視することによって決定される。"前の端"に対しては、広さが、枠の(相対的な)上部に向かう方向に、もっとも有力な基準線から測定される。"前の端"という基準線の隔たりは、残っている範囲の割り当ての矩形の"前の端"の最大の広さに定められる。もしも行の範囲の中のすべての行中の範囲が"前の端"か"後の端"のどちらかに整列されれば、行の"テキストの前の端"という基準線の隔たりを行の"前の端"の基準線の隔たりとして用いよ。

後の端

行のもっとも有力な基準線からの、行の"後の端"という基準線を隔たりは、整列の基準線が後の端であるすべての行中の枠を無視することによって決定される。"後の端"に対しては、広さが、参照の範囲の(相対的な)下部に向かう方向に、もっとも有力な基準線から測定される。"後の端"という基準線の隔たりは、(1)残っている範囲の割り当ての矩形の"後の端"の最大の広さ足す、(2)行の"前の端"の隔たりを引いた、無視される範囲の割り当ての矩形の最大の高さの、最大の負数に定められる。

注意せよ。もしも行の領域の中の行中の領域が、"後の端"に整列されれば、"前の端"に対する詳述は、行の"テキストの前の基準線"と一致するように"前の端"という基準線を定めるだろう。それから、上の事例(2)は、"前の端"の基準線までの割り当ての矩形までの最大の高さのある範囲の"前の端"を整列するであろう、"底の端"という基準線までの隔たりを決定するだろう。

注意せよ。"前の端"と"後の端"に対して上に述べた詳述は、次に続く三つのプロパティを持つ。(1)すべての範囲の割り当ての矩形が"前の端"の下にあり、(2)すべての範囲の割り当ての矩形が"後の端"の上にあり、(3)"前の端"と"後の端"の間の距離は(1)か(2)を破らずに減少されることができない。"前の端"と"後の端"の明示された配置は、(1)-(3)が満足したものにすることができる唯一の方法ではないが、"前の端"までの最も小さい可能な隔たりに満足したものにすることができる唯一の方法である。

"前の端"と"後の端"の整列を示している例

テキストと画像の整列

線や矢印のある矩形は示されるような固有の大きさのある画像である。矢印のない矩形は、デフォルトの、もっとも有力な基準線の整列を受ける画像を表す。ほかの矩形の整列は、(二つの矢印の頭があるとき、真ん中にある)矢印の頭から最も遠い点にある。例の1と2は、"前の端"という整列が、最も高い"前の端"で整列されていないものによって決定されること示す。例の1においては、これは、デフォルトで整列された矢印の頭の自由な矩形の画像であり、例の2においては、これは、対の頭をつけられた矩形である。例の3と4は、すべての枠が"前の端"または"後の端"という整列を持つとき、"テキストの前の端"をデフォルトにすることを示す。例の3では、"前の端"の整列がある画像が、"後の端"で整列された画像より高いメンバを持っている。例の4では、最も高い画像は、"後の端"で整列されたセットである。例の5は、"後の端"で整列された画像である最も大きい画像のある例の2の繰り返しである。

横の文書形態に対してだけ定義される四つの基準線もある。

top

この基準線は、横の文書形態において"前の端"という基準線と同じであり、縦の文書形態においては定義されていない。

text-top

この基準線は、横の文書形態において"テキストの前の端"という基準線と同じであり、縦の文書形態においては定義されていない。

bottom

この基準線は、横の文書形態において"後の端"という基準線と同じであり、縦の文書形態においては定義されていない。

text-bottom

この基準線は、横の文書形態において"テキストの後の端"という基準線と同じであり、縦の文書形態においては定義されていない。

5.3. 基準線の整列の過程の概観

その親に関する要素の整列は、親の調整された基準線の表と、整列されている要素の整列の基準線と整列の点という、三つの事によって決定される。整列より前に、親の調整された基準線の表が移し変えられるかもしれない。下のプロパティの詳述は、親と子供の要素を整列するのに必要な情報を提供する。

'dominant-baseline''alignment-baseline''baseline-shift''alignment-adjust'という、基準線の上に述べたセットに要素の整列を制御する四つのプロパティがある。それらのプロパティはすべて独立していて、典型的に、プロパティのひとつの詳述だけが、個々の整列の目的を成し遂げるのに必要とされるように設計される。

基本の基準線のプロパティは'dominant-baseline'というプロパティである。このプロパティは三つの構成要素のある複合の値を持っている。もっとも有力な基準線の識別子という構成要素は、二つの行中の範囲を整列するときに使われるために、デフォルトで'alignment-baseline'である。基準線の表という構成要素は、フォントの設計の空間の座標の中で基準線の位置を明示する。基準線の表は音楽のスタッフのように何かを務める。標識と行中の要素が整列されるブロックの前進の方向に沿って個々の点を定義する。基準線の表の'font-size'という構成要素は、基準線の表のための調整の要因を提供する。

'font-family'というプロパティの値がフォントのリストであるから、基準線の表の首尾一貫した選択を保証するために、標識のデータが利用できるリストの中の最初のフォントとして、フォントのリストの中の名目のフォントを定義する。これは、出会われるおのおのの文字のための、標識を含むことができる最初のものである。(この定義のために、もしも、フォントの代用がなされれば、あるいは、フォントが統合されれば、標識のデータは現在のものと決められる。)この定義は、使われるだろうフォントと基準線の表の内容の独立した決定を保証する。

便宜上、詳述は、(用語の誤用において)"もっとも有力な基準線"として、"dominant-baseline"というプロパティという、もっとも有力な基準線の識別子という構成要素によって識別される基準線に言及するときもある。

モデルは、おのおのの標識が、標識が整列されることになる基準線を明示する'alignment-baseline'の値を持っていると決めてかかる。('alignment-baseline'は、オープンタイプの基準線の表の説明における"基準線のタグ"と呼ばれる。)'alignment-baseline'の初期値は、与えられた標識と関連付けられた基準線の識別子を使う。'alignment-baseline'に対する交互の値は、文字体系のメンバであることに関してあいまいである'*'のような標識に役に立つことができる。

モデルは標識が描かれるフォントが、基準線の表であるフォントの基準線の表を持っていると決めてかかる。この基準線の表は、(0,0)という点からフォントが知っている基準線のおのおのまで全角ごとの構成単位における隔たりを持っている。

基準線の表における隔たりの値は、全角の端数の構成単位を意味する"設計の構成単位"において、ある。CSSはそれを"全角ごとの構成単位"と呼ぶ。だから、現在の'font-size'がもっとも有力な基準線から交互の基準線までの現実の隔たりを決定するのに使われる。

標識は、その'alignment-baseline'によって確認されるその基準線が、もっとも有力な基準線の表から、同じ名前のある基準線で整列されるように、整列される。

'alignment-baseline'によって識別されるもっとも有力な基準線から親の基準線までの隔たりは、もっとも有力な基準線の表と、もっとも有力な基準線の表のフォントの大きさを使って計算される。標識に適用できるフォントの基準線の表とフォントの大きさは、識別された基準線から標識の(0,0)という点までの隔たりを計算するために使われる。第2番目の隔たりは、変化の方向に(0,0)という点の位置を得るために、最初の隔たりから減じられたものである。両者の隔たりは、基準線の表からの基準線の値かける適切なフォントの大きさの値によって計算される。

もしも、'alignment-baseline'がもっとも有力な基準線を識別すれば、最初の隔たりはゼロで、標識はもっとも有力な基準線とともに整列される。そうでなければ、文字は選ばれた交互の基準線とともに整列される。

第3番目の基準線の整列のプロパティは、'baseline-shift'というプロパティである。"dominant-baseline"というプロパティよりほかのプロパティのように、このプロパティは基準線の表か基準船の表のフォントのサイズを変えない。内部の行中の要素が親の基準線のひとつに整列されたとき、内部の行中の要素が移るように、親の要素の全体の基準線の表を移す。

第4番目のプロパティは'alignment-adjust'というプロパティである。このプロパティは、特定の文字体系に属さず、あらかじめ定義された整列の点を持たない要素である、グラフィックスのようなものに対して主として使われる。"alignment-adjust"というプロパティは、作者が、オブジェクトの最初の端に、その要素のための整列の点が位置する場所を割り当てるのを可能にする。

これらのプロパティの次に続く定義に加えて、情報を与えるappendix: Bは、これらのプロパティの使用例を提供する。

5.4. もっとも有力な基準線:'dominant-baseline'というプロパティ

'dominant-baseline'
値: auto | use-script | no-change | reset-size|
ideographic | alphabetic | hanging | mathematical | inherit
初期値: auto
適用先: 行中の水準の要素
継承: なし
パーセンテージ: 適用不可
媒体: 視覚

The 'dominant-baseline'というプロパティは、調整された基準線の表を決定するか再決定するのに用いられる。調整された基準線の表は、三つの構成要素のある複合の値を持つ。

プロパティの値の中には、すべての三つの値を再定義するものもある。基準線のフォントサイズだけを再制定するものもある。プロパティに対する値は、以下に続く意味を持っている

auto
もしもこのプロパティがブロックや行中の要素に生ずれば、基準線の識別子の値は、'script'というプロパティの値に依存する。もしscriptというプロパティの値が'auto'ならば、基準線の識別子は、横の'writing-mode'の値に対して'alphabetic'であり、縦の'writing-mode'の値に対して'central'である。scriptというプロパティが'auto'よりほかの値であれば、基準線の識別子の値はその文字体系に基礎付けられる。'writing-mode'の値である、横であるか縦であるかは、基準線の識別子に一致する基準線の表を選択するのに使われる。基準線の表のfont-sizeという構成要素は、この要素の'font-size'というプロパティの値に定められる。
そうでなければ、このプロパティが行中の水準の要素上で生じれば、基準線の識別子と基準線の表という構成要素は、親の要素のそれらと同じままになる。また、計算された'baseline-shift'の値が実際に基準線を移さなければ、基準線の表のフォントサイズも、親のと同じになる。それから、基準線の表のfont-sizeは、この要素の'font-size'というプロパティの値に定められる。もしも、親の要素がなければ、もっとも有力な基準線という構成要素は、ブロックの要素に対するものとして定められる。
use-script
もっとも有力な基準線の識別子は'script'というプロパティの計算された値を使って定められる。'writing-mode'の値である、横か縦かは、その基準線の識別子と一致する基準線の表を選択するのに使われる。基準線の表のfont-sizeという構成要素は、この要素の'font-size'というプロパティの値に定められる。
no-change
もっとも有力な基準線の識別子、基準線の表と基準線の表のfont-sizeは、親のそれと同じままである。
reset-size
もっとも有力な基準線の識別子と基準線の表は、同じままであるが、基準線の表のfont-sizeは、この要素の'font-size'というプロパティの値に変えられる。
ideographic
もっとも有力な基準線の識別子は、親の基準線の表と基準線の表のfont-sizeを使って'表意文字'の基準線に定められ、基準線の表は'表意文字'の基準線に一致するように変えられ、そして基準線の表のfont-sizeは、この要素の'font-size'というプロパティの値に変えられる。
hanging
もっとも有力な基準線の識別子は、親の基準線の表と基準線の表のfont-sizeを使って'吊り下げ'の基準線に定められ、基準線の表は'吊り下げ'の基準線に一致するように変えられ、そして基準線の表のfont-sizeは、この要素の'font-size'というプロパティの値に変えられる。
alphabetic
もっとも有力な基準線の識別子は、親の基準線の表と基準線の表のfont-sizeを使って'アルファベット'の基準線に定められ、基準線の表は'アルファベット'の基準線に一致するように変えられ、そして基準線の表のfont-sizeは、この要素の'font-size'というプロパティの値に変えられる。('アルファベット'の基準線は、ローマ字の文字体系に対して標準の基準線である。)
mathematical
もっとも有力な基準線の識別子は、親の基準線の表と基準線の表のfont-sizeを使って'数学'の基準線に定められ、基準線の表は'数学'の基準線に一致するように変えられ、そして基準線の表のfont-sizeは、この要素の'font-size'というプロパティの値に変えられる。

もしも名目のフォントに基準線の表がなければ、あるいは基準線の表が望ましい基準線に対する記載事項を欠いていれば、ユーザエージェントは望ましい基準線の位置を決定するのに、ヒューリスティックを用いてもよい。

5.5. 要素の整列の点の整列:'alignment-baseline'というプロパティ

'alignment-baseline'
値: baseline | auto-script | before-edge | text-before-edge | after-edge | text-after-edge |
central | middle | ideographic | alphabetic | hanging | mathematical | inherit
初期値: baseline
適用先: 行中の水準の要素
継承: なし
パーセンテージ: 適用不可
メディア: 視覚

このプロパティは、行中の水準の要素がどのようにその親に関して整列されるかを明示する。それは、親の基準線のいずれにこの要素の整列の点が整列されるかである。'dominant-baseline'というプロパティの違って、'alignment-baseline'というプロパティは、子供のもっとも有力な基準線に影響を持たない。

注。'alignment-adjust'というプロパティは、どのように整列の点が決定するかを明示し、alignment-baselineというプロパティの計算された値と同じ名前を持った基準線をデフォルトにする。

'auto-script'に対してを除いて、すべての基準線は、親のもっとも有力な基準線の、それぞれの基準線の識別子という構成要素とを参照し、要素の中の標識は、要素そのものと同様に整列される。'auto-script'に対する説明は、明確にそれらの点を含む。プロパティの値は以下に続く意味を持っている。

baseline
整列されている要素の整列の点は、親のもっとも有力な基準線で整列される。
auto-script
もしも要素の'script'というプロパティの値が'auto'であれば、それぞれの標識の整列の点は、標識が属する文字体系の基準線の識別子で整列される。もしも要素の'script'というプロパティが'auto'よりほかであれば、それぞれの標識の整列の点は、'script'というプロパティによって明示される基準線の識別子で整列される。基準線の識別子の位置は、親の要素のもっとも有力な基準線のセットに関係のある適切な情報を用いて決定される。要素そのものの整列の点は、'baseline'に対してのように整列される。
before-edge
枠の整列の点は、親の'前の端'という基準線で整列される。
text-before-edge
整列されつつある要素の整列の点は、親の'テキストの前の端'という基準線で整列される。
after-edge
枠の整列の点は、親の'後の端'という基準線で整列される。
text-after-edge
整列されつつある要素の整列の点は、親の'text-after-edge'という基準線で整列される
central
枠の整列の点は、親の'中央'の基準線で整列される。
middle
枠の整列の点は、親の'middle'という基準線で整列される。
ideographic
整列されつつある要素の整列の点は、親の'表意文字'という基準線で整列される。
alphabetic
整列されつつあるようその整列の点は、親のもっと低い基準線で整列される。
hanging
整列されつつある要素の基準線の点は、親の吊り下げの要素で整列される。
mathematical
整列されつつある要素の整列の点は、親の数学の基準線で整列される。

before-edge、text-before-edge、after-edgeとtext-after-edgeという値は、すべてwriting-modeのプロパティの値に関係して作用する。

注意せよ。'baseline'が、(類似したXSLのプロパティでは、'autoと呼ばれる')'auto-script'の代わりに初期値になっている理由は、今日のほとんどのフォントが、ラテン語でない文字体系に属している標識に対してさえ、'アルファベット'の水準でおかれる整列の点で設計されるという事実と関係がある。ユーザエージェントは、制約を処理しなければならず、だから、初期値として'baseline'という値を使うのである。

5.6. 整列の点の設定:'alignment-adjust'というプロパティ

'alignment-adjust'
値: auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | <percentage> | <length> | inherit
初期値: auto
適用先: 行中の水準の要素
継承: なし
パーセンテージ: 要素の'line-height'を参照する。
Media: 視覚

'alignment-adjust'というプロパティは、基準線の表を持っていないか、その基準線の表の中の望ましい基準線を欠く、要素のもっと精密な整列である、グラフィックのようなものを可能