CSSにおける国際的レイアウト


W3C

WD-i18n-format-19990127


CSSにおける国際的レイアウト

W3Cワーキングドラフト 1999年1月27日

このバージョン[原文]:
http://www.w3.org/TR/1999/WD-i18n-format-19990127
最新のバージョン:
http://www.w3.org/TR/WD-i18n-format
ローカルブラウジング用にZip圧縮されたアーカイブ[原文]としても利用できる。
編集者:
Marcin Sawicki (Microsoft)
その他の協力者:
Michel Suignard (Microsoft)
Takao Suzuki (Microsoft)
Chris Wilson (Microsoft)

著作権  ©  1999 W3C (マサチューセッツ工科大学, フランス国立情報処理自動化研究所, 慶應義塾大学). すべての権利が留保されている。W3Cの免責(liability), 商標(trademark), 文書利用(document use), ソフトウェア使用許諾(software licensing)規則が適用される。

この文書の位置づけ

これは、W3C会員およびその他の利害関係者による検討のためのW3Cワーキングドラフトである。この文書はドラフト文書であって、何時にても他の文書によって更新され、置換され、または廃止される場合がある。国際化ワーキンググループは、最終リリースに先立ってこの仕様書に変更を加える能力を初期の実装が制約することを認めるつもりはない。W3Cワーキングドラフトを参照資料として用いたり、「進行中の作業」以外のものとして引用することは不適切である。現行のW3Cワーキングドラフトの一覧は http://www.w3.org/TR で見ることができる。

この文書は、W3C国際化活動の一部として生み出されているものであり、スタイル活動に関連する。この提案は、XSLグループや、共通のフォーマッティングモデルを作り出すCSS&FPグループのパートに関する労作に先行するから、もっぱらCSS [CSS2] にのみ焦点を合わせている。しかしながら、この文書で提示されるモデルとXSLグループによって開発中のモデルとが収束することは、関連するグループすべての意図である。この収束の最終結果は、CSS [CSS2] 文法とXSL [XSL] との両方で表記される共通のフォーマッティングモデルの一部を形成するものと期待される。この文書[原文]に関するコメントや質問は、i18n-editor@w3.org へ送られたい。英語以外の言語、とりわけ日本語でのコメントも歓迎する。


概要

HTML(ハイパーテキストマークアップ言語)は、プラットフォーム間で可搬的なハイパーテキスト文書を作製するために使われる単純なマークアップ言語である。HTML文書は、広範囲のアプリケーションからの情報を表わすのに適した汎用的な意味論をもつSGML文書である。CSSは、どのフォントや色を使うべきかや、どのくらいのスペースを挿入するべきかなどといった文書のスタイルを制御するためにHTMLに適用できるスタイルシート言語である。以下の仕様は、東アジア的および双方向的なテキストフォーマッティングをサポートするべくCSSを拡張するものである。CSS 2 [CSS2] と HTML 4.0 [HTML4] との両方についての精通が前提とされる。


目次


1.  序論

国際的な印刷術は、まだHTMLには顕出されていないタイプのフォーマッティングを含んでおり、そのために特別な迂回路やグラフィックを使わなければウェブ上で実現することが不可能である。

この文書は、そうしたフォーマッティングを表わすために数多くの新しいCSSプロパティを導入するものである。たとえば、この提案がカバーする機能として、東アジアの印刷術にとって最も重要な機能のうちの二つ、縦組みレイアウトフローとレイアウトグリッドとがある。

ここで記述されている多様な印刷術的効果やアルゴリズムは、キャラクタセットが異なれば違って適用されることがよくあるから、与えられたプロパティや値の適用先でありまたは特に関係があるキャラクタセットを示すために、以下の命名慣習が使われる。プロパティ名または値名に '-ideographic' という接尾辞が含まれていれば、別段の規定がない限り、それは一般的にはすべての全角キャラクタ(漢字, かたかな, ひらがな, 全角英数)や、半角かたかな、半角ひらがなにも適用される。

この文書の中には以下の説明が使われている解説図が多数ある。

全角キャラクタの記号的表現 - テキストランの中のn文字目のキャラクタである全角キャラクタ (例.漢字)
半角キャラクタの記号的表現 - テキストランの中のn文字目のキャラクタである非続け書き半角キャラクタ (例.ローマ文字)
続け書き半角キャラクタの記号的表現 - テキストランの中のn文字目のキャラクタである続け書き(または右書き)キャラクタ (例.アラビア文字)

上記の記号が図の中で前提としている方向は、その記号の表わすグリフがユーザエージェントにレンダリングされるときに前提としているはずの方向に一致する。図の中のこれらのキャラクタの間のスペーシングは、強調するために意図的に変更されているのでない限り、たいていは記号的なものである。


2.  レイアウトフロー

2.1  レイアウトフローの型

ほとんどのラテン文字ベースの文書は、次の行がつねに前の行の下に現れる単純な右横書きの横組みテキストレイアウトフローを使う。下記の例は、3行の混在テキストを、ウェブ制作者が今日利用できる通常の横組みレイアウトフローモードで示したものである。

横組みレイアウトの日本語・英語混在例

図 2.1.1: 横組みレイアウトの混在テキスト

残念なことに、今日のHTMLやCSSは、上記のレイアウトシナリオについてだけしかサポートを提供しない。しかしながら、東アジアの文書において特に重要なレイアウトシナリオもこの他にいくつかある。それらは以下のセクションで論じられる。

2.2  'layout-flow'

値: horizontal | vertical | vertical-ideographic | horizontal-ideographic
初期値: horizontal
適用対象: 全エレメント
継承: される
百分率値: N/A

このプロパティはエレメントのレイアウトフローを設定する。これはすべてのエレメント上で合法である。
取りうる値:

2.3  縦組みレイアウト内の横組みテキスト

東アジアの文書では、つぎのように、年の中にある数字といったような一定のラテン文字ベースの文字列が、その文字列が現れる行のフローモードとは無関係に、つねに横組みレイアウトフローで表示されることがよく好まれる。

縦中横のレイアウト 縦中横の例

図 2.3.1: 縦組み内の横組み (別名 "縦中横")

この効果は"縦中横" として知られている。これを実現するためには、つぎのように、CSSの 'layout-flow: horizontal' 設定のある SPAN エレメントの中にラテン文字列を囲い込むべきである。

<SPAN style="layout-flow: horizontal">1996</SPAN>

また、そうしたテキストランについては、改行はオフにされるのが普通である。これはCSSの "white-space: nowrap" 設定 [CSS2] を使って実現できる。.

2.4  双方向性との関連

上述のセクションで論じられた異なるレイアウトフローは、内容キャラクタの生来的な方向性とは独立にテキストフローを決定する。これは、特別なフォーマッティングが適用されない限り、ヘブライ文字やアラビア文字は、横組みレイアウトフローでは右から左へと読まれ、'vertical-ideographic'(表意文字用縦組み)レイアウトフローでは下から上へと読まれることになることを意味する。

dir アトリビュートは、その適用先のエレメントのベース方向に影響を及ぼすが、行フローについてはその行に影響を及ぼさない。たとえば、('vertical-ideographic'ではなく)'vertical' レイアウトフロート右書き方向をもつエレメントは、上から下かつ左から右へと流れることになる。言及に値するのがモンゴル語の場合であり、右書き筆記システムと関連づけられて、縦組みレイアウトフローモードを通常のレンダリングモードとして使うことになる。モンゴル語文脈におけるラテン文字のテキストブロックは、自身に対して 'vertical-ideographic' を直接に適用させることになる。

その限りにおいて、表意文字は生来的な左書き方向性を有していると想定されており、そうしたものとしてユニコード双方向的アルゴリズムによって扱われる。しかしながら、アジアの筆記システムでよく見られるように、表意文字を任意の方向に流して示すことが望ましいこともある。これは、レイアウトフローモードと dir アトリビュートや BDO エレメントとを混合することにより実現してよい。たとえば、横組みフローで <BDO dir="rtl"> を用いて表意文字をカプセル化すれば、表意文字を右から左かつ上から下へと流すことになる。こうしたケースは、追加的な筆記システムの利用法を捉える他のレイアウトモードからも作り出すことができよう。


3.  文書グリッド

3.1  文書グリッドとは何か?

中国語や日本語といったような東アジアの言語で書かれた文書のキャラクタにとって、規定された1次元的または2次元的なグリッドに従ってページ上にレイアウトされることはきわめてありふれたことである。グリッドの概念は、点字や固定幅レイアウトといったような、他の非表意文字的文脈でも使うことができる。

下記の図は、日本のユーザが1行ごとに9キャラクタになるグリッドの上にレイアウトしようとした全角キャラクタ・半角キャラクタ混在ページの横組みテキストの一部分を表わしたものである(グレーのグリッド線は明確化のために示したものである)。

横組みレイアウト内の日本語・英語混在テキストに適用される strict (原稿)グリッドの例

図 3.1.1: 混在テキストに適用された'原稿'グリッド

グリッドは、キャラクタの配置に影響するだけでなく、インデントサイズやマージン、段落の配置といったような他のいくつかのレイアウト関連の挙動を修正することもできる。

3つの型のグリッドを区別することができる。中国語ではほとんど、日本語でもときどき使われる(別名 "原稿") strict グリッド、日本語ではしばしば、韓国語ではときどき使われる loose グリッド、一般に点字や固定幅レイアウトといった非表意文字テキストにとって潜在的に有益な fixed グリッドである。

グリッド型には、テキスト行をレイアウトするときにユーザエージェントがどの程度の柔軟性をもつことを許されるかを決定する1セットのレイアウト規則が伴う。

文書の異なる部分について異なるグリッドを定義することができる。

グリッドは、テキストの一部分でどちらかの座標において選択的にオフにすることができる。

行グリッドは個別の段落についてオフにすることができる。ある段落について行グリッドがオフにされれば、その段落の行はあたかも行グリッドが規定されていないかのようにレイアウトされる。行グリッドがオフにされた段落の中にあるキャラクタは、キャラクタグリッドが指定されていれば、なおそれに従う。

このセクションで記述されたCSSモデルは、制作者が制御する必要のある必要なグリッドパラメータを露出する。

3.2  'layout-grid-type'

値: loose | strict | fixed
初期値: loose
適用対象: ブロックレベルエレメント
継承: される
百分率値: N/A

使うべきグリッドの型を規定する。グリッド型にはそれぞれ、グリッドがオンにされ規定されているときに内容をレンダリングするための異なるセットの規則が伴う。
取りうる値:

3.3  'layout-grid-line'

値: none | auto | <length> | <percentage>
初期値: none
適用対象: ブロックレベルエレメント
継承: される
百分率値: エレメントの高さに対する相対指定

このプロパティはエレメントの行グリッド値を設定する。そのエレメントのテキストレイアウトフローが horizontal であれば、このプロパティは "vertical" グリッドサイズまたはグリッド高さとして考えることができる。言い換えると、レイアウトフローモードとは無関係に行スペーシング加算を決定するのである。その効果は、視覚的にはエレメントに 'line-height' 値を適用する効果に幾分似ている。以下の表は、それぞれの 'layout-flow' 値と、'layout-grid-line' プロパティの意味との対応を示したものである。

'layout-flow' 'layout-grid-line' の意味
horizontal グリッドスペースの垂直方向の高さ
vertical グリッドスペースの水平方向の幅
vertical-ideographic グリッドスペースの水平方向の幅
horizontal-ideographic グリッドスペースの垂直方向の幅

図 3.3.1: 'layout-flow' と、'layout-grid-line' の解釈との間の対応

このプロパティが効果をもつためには 'layout-grid-mode' が 'line' または 'both' に設定されなければならないことに注意してほしい。

このプロパティが 'none' 意外に設定されるとき、テキスト行は、デフォルトでは、グリッド行の内側で垂直方向に中央寄せされ、ベースライン揃えにされる。グリッドスペースよりも背の高いキャラクタやオブジェクトがその行に含まれていれば、行全体が、そのもっとも背の高いオブジェクトが収まるのに必要な最小数のグリッド行の内部で中央寄せされる。これは下記に図解されている。ここで a は、'layout-grid-line' の数値を表わす。

グリッド行の内部で垂直方向に中央寄せされた内容を示すグリッド内部の内容のレイアウト

図 3.3.2: 行グリッド内部の内容のレイアウト. ここで a は layout-grid-line 値を表わす.

取りうる値:

以下のマークアップは

DIV.section1 { layout-grid-line: .5in }

文書の、vertical ('-ideographic' を含む)にレイアウトされたセクションの中のそれぞれのテキスト行を、0.5インチの垂直方向のスペースの内部にレンダリングさせる。これは、下記に示すように、line-height に 0.5 in をもつこととも等価である。

横組みレイアウトの日本語・英語混在テキストに適用された layout-grid-line の例

図 3.3.3: 横組みレイアウトの混在テキストに適用された拡大行グリッド

そのセクションのレイアウトフローが vertical ('-ideographic' を含む)であれば、0.5in が縦組みテキストの各列の幅である。こんどは 0.5in という値は、それぞれのセルの 'width' に適用される。

表意文字用縦組みレイアウトの日本語・英語混在テキストに適用された layout-grid-line 設定の例

図 3.3.4: 表意文字用縦組みレイアウトの混在テキストに適用された拡大行グリッド

制作者が特定の行数(たとえば 20)が1エレメントの中に現れるよう選好するならば、百分率値を使ったであろう。

DIV.section1 { layout-grid-line: 5% }

3.4  'layout-grid-char'

値: none | auto | <length> | <percentage>
初期値: none
適用対象: ブロックレベルエレメント
継承: される
百分率値: エレメントの幅に対する相対指定

このプロパティは、'layout-grid-line' によって制御される座標軸に対して直交する座標軸に影響を及ぼす。これは、'layout-grid-type' プロパティが 'strict' もしくは 'fixed' に設定されていれば、エレメントのキャラクタ (または横組みレイアウトであれば"horizontal") グリッドサイズを制御する。しかしながら、'layout-grid-type' が 'loose' であれば、このプロパティは、それぞれの全角キャラクタに追加される加算のサイズや、'layout-grid-type' の規定の記述の通り間接的には半角キャラクタに追加される加算のサイズを設定する。'loosg' グリッドにおけるその効果は 'letter-spacing' プロパティの効果に幾分似ている。

このプロパティが効果を有するためには 'layout-grid-mode' が 'char' または 'both' に設定されなければならないことに注意してほしい。

取りうる値:

DIV.section1 { layout-grid-char: .5in }

であれば、文書のうち縦組みにレイアウトされる部分の中にあるそれぞれのキャラクタを、0.5 インチの垂直方向のスペースの内部にレンダリングさせることになるだろう。

横組みレイアウトの日本語・英語混在テキストに適用された layout-grid-char 設定の例

図 3.4.1: 横組みレイアウトの混在テキストに適用された拡大キャラクタグリッド

セクションのレイアウトフローが vertical ならば、0.5in は、一つの列の中にある連続的なキャラクタの間の垂直方向の距離になる。

表意文字用縦組みレイアウトの日本語・英語混在テキストに適用された layout-grid-char 設定の例

図 3.4.2: 表意文字用縦組みレイアウトの混在テキストに適用された拡大キャラクタグリッド

制作者は、特定数のキャラクタ(たとえば 5)が1行に現れるよう選好したならば、キャラクタグリッドを百分率値に設定したであろう。

DIV.section1 { layout-grid-char: 20% }

3.5  'layout-grid-mode'

値: none | line | char | both
初期値: both
適用対象: 全エレメント
継承: される
百分率値: N/A

このプロパティは、2つの座標軸のグリッドを選択的にオンまたはオフにする。
取りうる値:

3.6  'layout-grid'

値: none | [<mode> || <type> || [<line> [<char>]? ] ]
初期値: 短縮表記プロパティとしては定義されない
適用対象: 全エレメント
継承: される
百分率値: <char> および <line>

については許容される。

'layout-grid' プロパティは、'layout-grid-mode', 'layout-grid-type', 'layout-grid-line', 'layout-grid-char' を、スタイルシートの同じ場所で設定するための短縮表記プロパティである。短縮表記プロパティで 'none' という値を使うと 'layout-grid-mode' が 'none' に設定される。"none none" という値を使うと 'layout-grid-mode''layout-grid-line' との両方が 'none' に設定され、"none none none" という値を使うと、上述のプロパティのほか 'layout-grid-char' も 'none' に設定される。

指定されている一つ目の数値、百分率値、または 'auto' という値は、'layout-grid-line' を設定する。二つ目の数値、百分率値、または 'auto' という値が存在すれば、それは 'layout-grid-char' を設定する。例:

DIV.section1 { layout-grid: both strict .5in 20% }

上記の 'layout-grid' プロパティは、'layout-grid-type' が 'strict' に、'layout-grid-mode' が 'both' に、'layout-grid-line' が 0.5in に、'layout-grid-char' が親エレメントの幅の 20% に設定されるよう設定される。

注意:

3.7  'gd' 長さ単位

エレメント内のグリッドの存在は、そのエレメント内の多様な測定値をグリッド単位で表記することを可能かつきわめて有益なものにする。グリッド単位は、東アジアの印刷術において、とりわけ上下左右のエレメントマージンについてとてもよく使われる。

したがって、制作者がグリッドを用いて多様な測定値を規定できるようにするため、新しい長さ単位 gd が必要である。

たとえば、以下のスタイルを考えてみよう。

P { layout-grid: strict both 20pt 15pt; margin: 1gd 3gd 1gd 2gd }

これだと、P エレメントはすべて、実効的に 15pt の上マージン、60pt の右マージン、15pt の下マージン、40pt の左マージンを得ることになる。

グリッドが規定されていなければ、gd 単位は em 単位と同じく扱われるべきである。


4.  改行

4.1  改行の型

ラテン文字ベースの言語で書かれた文書では、キャラクタのランが単語を作り上げ、単語はスペースまたはハイフンで切り分けられるから、改行は比較的単純である。最も一般的な場合では(どのハイフネーション辞書もユーザエージェントは利用できないものとすれば)、改行が発生できるのは空白キャラクタまたはハイフンの箇所だけである。

しかしながら、表意文字的印刷術では、単一のグリフとして現れるものが単語全体を表わすことができ、スペースもその他の単語切り分けキャラクタも必要とされないから、改行の機会はスペースのようには明らかではない。改行の機会は、その他多くのキャラクタの前後で発生しうるのである。一定の改行制約も適用されるものの、それらはラテン文字的印刷術ほども厳格ではない。

(脇注として、タイ語は、独自の特殊な改行規則をもつもう一つのおもしろい例である。タイ語の単語はキャラクタのランから形成されるから、この点ではラテン語に似ている。しかし、単語の区切りとしてのスペースを欠き、あるいは実際に一貫した単語区切り子を欠くため、CJKにも似ることになる。タイ語は、ハイフネーション辞書の存在しないラテン語と同様、単語の内部では改行しない。実際には、対語テキストの行を正確に改行することができるためには語彙の知識が必要である。)

日本語の印刷術では、多数のレベルの改行の「厳格性」を使うことができる。これらのレベルは改行の制約を追加したり除去したりする。この仕様書に提示されているモデルは、日本語テキストで最もよく使われている2つの改行レベルを、'line-break' プロパティを使って区別する。

表意文字的印刷術では、必ずしも望ましくはないが、それらの特定の文字の改行規則に従うことなく、引用符で括られたラテン語やハングル(韓国・朝鮮語)の単語の内側で改行が発生することを許すことが可能である。この文書で提案されているモデルは、その挙動に対する制作者の制御を、'word-break' プロパティを通じて与える。

4.2  'line-break'

値: normal | strict
初期値: normal
適用対象: 全エレメント
継承: される
百分率値: N/A

このプロパティは、CJKテキストの改行レベルを選択する。この機能は、とりわけ日本語の制作者にとって有益である。この挙動については2つの可能性がある。

日本語では、改行制約のセットは "禁則" と呼ばれる。JIS X-4051 [JIS] は、strict セットの規則を使うこの挙動のポピュラーな参照ソースである。このアーキテクチャは、キャラクタ分類を改行挙動クラスに巻き込んでいる。それらのクラスは、その後、2次元的挙動テーブルで分析される。そこでは、各行-列の位置が、これらのクラスの出現箇所から取られるべきペアアクションを表わす。たとえば、終了キャラクタクラスと開始キャラクタクラスとが与えられれば、これら2つのクラスのそのテーブルの中の交差(最初のキャラクタは開始クラスに属し、二つ目のキャラクタは終了クラスに属する)は、改行機会を示さないことになる。

'normal' も 'strict' も両方の値とも、1セットの改行制約が使われていることを黙示することに注意すること。事実、改行が表意文字の間のどこででも起こりうる CJK に合法な改行モードはない用にみえる。

4.3  'word-break'

値: normal | break-all | keep-all
初期値: normal
適用対象: ブロックレベルエレメント
継承: される
百分率値: N/A

このプロパティは、単語内部の改行挙動を制御する。この機能は、とりわけ韓国語の制作者にとって有益である。
取りうる値:

P.anywordbreaks { word-break: break-all }

5.  ジャスティフィケーション挙動

5.1  'text-justify'

値: auto | inter-word | inter-ideograph | distribute | distribute-all-lines | newspaper
初期値: auto
適用対象: ブロックレベルエレメント
継承: される
百分率値: N/A

このプロパティは、ジャスティフィケーション配置の型を選択する。これは、'text-align' が 'justify' に設定されている場合にのみ、テキストレイアウトに影響する。そのように、このプロパティをサポートしないユーザエージェントは、なおテキストを完全にジャスティフィケーションしてレンダリングするであろう。これは、ほとんどの場合で少なくとも部分的には正しい。

取りうる値:

5.2  'text-justify-trim'

値: none | punctuation | punct-and-kana
初期値: punctuation
適用対象: ブロックレベルエレメント
継承: される
百分率値: N/A

これは、'text-justify' が 'inter-word' 以外のときに、テキストジャスティフィケーションアルゴリズムについて、個別のフォントのブランクスペース圧縮が許可されるよう設定する。この特殊な型のスペース圧縮は、フォントレベルで発生する。すなわち、キャラクタ領域の内部のブランクスペース自体が、グリフの外観に影響することなく減らされることがあるのである。これは全角キャラクタにのみ適用される。
取りうる値:

5.3  'text-kashida'

値: <percentage>
初期値: 0%
適用対象: ブロックレベルエレメント
継承: される
百分率値: 記述のとおり

このプロパティは、ジャスティフィケーションモードのうちの一つが選択されているときに、アラビア語テキストの "引き伸ばしの機会" の間の割り付けのために使われるべきテキスト領域幅の最小限の百分率を決定する。それぞれの引き伸ばしは、何個かのカシダキャラクタ、またはユーザエージェントがそうしたグラフィックを作成できるのであれば単一のグラフィックを使って実現することができる。(カシダの正確な外観を決定するのはフォント自体である。)

ユーザエージェントは自由に、ラテン文字テキストの内部のスペースも引き伸ばしの機会として扱われ(ブランクスペースを使って引き伸ばされ)るべきか否かを決定する。

下記の図では2つの同一段落のアラビア語テキストを示しており、(ジャスティフィケーションされていない)2行目の青色の線は、カシダのために割り当てられ、(ジャスティフィケーションされている)1行目では赤色の下線で示されているように引き伸ばしの機会の間で分割される長さを示している。

アラビア語テキストに適用されたカシダの例

図 5.3.1: アラビア語テキストに適用されたカシダ


6.  その他のテキストフォーマッティング

6.1  'punctuation-wrap'

値: simple | hanging
初期値: simple
適用対象: ブロックレベルエレメント
継承: される
百分率値: N/A

このプロパティは、句読点等符号が存在する場合に、それをフルテキスト行の末尾のマージン領域に置くことができるか否かを決定する。これは東アジアの印刷術ではありふれた設定である。
取りうる値:

6.2  'punctuation-trim'

値: none | leading
初期値: none
適用対象: ブロックレベルエレメント
継承: される
百分率値: N/A

このプロパティは、全角句読点等符号キャラクタが行の先頭に現れた場合に、その "インク" が上下の行の最初のキャラクタと並ぶようにトリミングすべきか否かを決定する。シナリオによっては、たとえばキャラクタが垂直方向に並ぶ傾向があることの方が重要であるときなど、先頭の句読点等符号をトリミングするようにしないことが制作者にとって好ましいことがある。たとえば単一の行にできる限り多くのテキストを収めることが制作者にとって重要なときなど、そうした効果が望ましいシナリオもある。
取りうる値:

6.3  'text-combine'

値: none | letters | lines
初期値: none
適用対象: 全エレメント
継承: されない
百分率値: N/A

このプロパティは、合成キャラクタ (別名 "組文字") や合成行 (別名 "割り注") の作成を制御する。

取りうる値:

6.4  'font-emphasize-style'

値: none | accent | dot | circle | disc
初期値: none
適用対象: 全エレメント
継承: される
百分率値: N/A

このプロパティは、テキストに適用される強調フォーマットのスタイルを設定する。東アジアの文書は、テキストランを強調するために以下の記号をそれぞれのキャラクタの上に使う。'accent' (傍点), 'dot' (圏点), 'circle' (白丸), 'disc' (黒丸).

例:

テキストの上に現れた日本語における強調の例

図 6.4.1: 日本語テキストに適用されたアクセント強調(明確化のために青色で示している)。

'text-decoration' とは異なり、このプロパティは行の高さに影響を及ぼすことに注意してほしい。さらに、強調スタイルは、テキスト内容を「強調」する他の方法である text-decoration と区別されるべきである。

6.5  'font-emphasize-position'

値: above | below
初期値: above
適用対象: 全エレメント
継承: される
百分率値: N/A

このプロパティは、強調記号の位置を設定する。強調記号は、強調されるテキストランの 'above' (上)か 'below' (下)かのいずれか一方に現れることができる。'above' や 'below' は、行のベースラインに対する相対指定として理解されるべきである。縦組みレイアウトフローでは、記号はそれぞれ右側か左側かに現れることになろう。

たとえば日本語では、横組みレイアウトのときには 'above' が好ましい位置である。

テキストの上に現れた日本語における強調の例

図 6.5.1: 日本語テキストの一部分の上に適用された強調(明確化のために青色で示している)。

一方、中華人民共和国で使われる中国語では、横組みレイアウトのときには 'below' が好ましい位置である。

テキストの下に現れた中国語における強調の例

図 6.5.1: 中国語テキストの一部分の下に適用された強調(明確化のために青色で示している)。

6.6  'font-emphasize'

値: <style> || <position>
初期値: 短縮表記プロパティとしては定義されない
適用対象: 全エレメント
継承: される
百分率値: N/A

このプロパティは、'font-emphasize-style''font-emphasize-position' とについての短縮表記プロパティである。

6.7  'text-autospace

値: none | [ideograph-numeric || ideograph-alpha || ideograph-space || ideograph-parenthesis]
初期値: none
適用対象: 全エレメント
継承: される
百分率値: N/A

非表意文字または数字キャラクタのランが表意文字テキストの内部に現れるとき、非表意文字テキストを周囲の表意文字から切り離すために、非表意文字テキストの両側に一定量のスペースが好まれることがよくある。このプロパティは、テキストをレンダリングするときにそのスペースの作出を制御する。その追加される幅は、追加的なスペースキャラクタの挿入とは対応しないが、代わりに既存のキャラクタの幅加算に対応する。

(この挙動を決定するために一般的に使われるアルゴリズムは JIS X-4051 [JIS] に規定されている。)

取りうる値:

<SPAN style="text-autospace:none">[表意文字]1997[表意文字]</SPAN>

ならばこのように現れるであろう。

オートスペースなしのキャラクタのレイアウトの図オートスペースなしの数字と混在した日本語テキストの例

図 6.7.1: オートスペースがオフにされているときの混在キャラクタのレイアウト

一方、

<SPAN style="text-autospace:ideograph-numeric">[表意文字]1997[表意文字]</SPAN>

ならば、それよりもこのように現れるであろう。

オートスペースつきのキャラクタのレイアウトの例 オートスペースなしの数字と混在した日本語テキストの例

図 6.7.2: オートスペースがオンにされているときの混在キャラクタのレイアウト

6.8  'text-fit'

値: auto | <length>
初期値: auto
適用対象: インラインエレメント
継承: されない
百分率値: 行の幅に対する相対指定

このプロパティは、1つのテキストランが満たし、または収まるべきスペース量を制御する。規定された量がテキストによって要求される量よりも大きければ、キャラクタはそのスペースにわたって均等に割り付けされる。規定された量がテキストによって要求される量よりも小さければ、規定されたスペースにテキストを収めるよう、グリフが水平方向に縮小される。

'auto' という値は、特別な fill/fit 挙動が発生しないことを示す。

SPAN.fitinseven { text-fit: 7em }

ならば、文字間スペーシングを追加することにより、'm' というキャラクタ7個分のスペースの中に単語をレンダリングさせることになろう。


7.  入力フィルタリング

これは場所取りである。


8.  ルビ

8.1  ルビとは何か?

「ルビ」は、「ベース」と呼ばれる他のテキストランのすぐ近くに現れるテキストランについて一般的に使われる名前であり、ベースのテキストランに結びつけられた注釈または発音表記として機能するものである。ルビは、日本語で使われるものは、JIS X-4051 [JIS] に記述されている。ルビの構造や、それを表わすためのHTMLマークアップは、ルビ仕様書 [RUBY] に記述されている。このセクションは、ルビに関連するCSSプロパティを解説したものである。

日本語表記の上側に適用されたルビの例

図 8.1.1: 日本語で使われるルビにラベルをつけた例

以下は、ルビ仕様書からのルビエレメントのボックス表現であり、これはCSSプロパティの効果を図解する助けとなる下記のセクションにも使われる。

ルビボックスモデルの3つのボックスを示した図

図 8.1.2: ルビボックスモデル

8.2  'ruby-position'

値: above | inline
初期値: above
適用対象: ruby エレメント
継承: される
百分率値: N/A

このプロパティは ruby [RUBY] エレメント上で使われ、ルビテキストの位置をそのベースに対する関係で制御するものである。
取りうる値:

8.3  'ruby-align'

値: auto | left | center | right | distribute-letter | distribute-space | line-edge
初期値: auto
適用対象: 全エレメント
継承: される
百分率値: N/A

このプロパティは、ルビテキストまたはルビベースのテキスト配置を相手方に対する相対指定で制御するために任意のエレメント上で使うことができる。これはそのエレメント内のルビすべてに適用される。配置は rbrt [RUBY] かのうち内容が短い方の ruby の子エレメントに適用される。
取りうる値:

8.4  'ruby-overhang'

値: auto | none
初期値: auto
適用対象: ruby エレメント
継承: される
百分率値: N/A

このプロパティは、ルビテキストがルビベースよりも長いときに、自身のベースに加えて隣接するテキストにも部分的にオーバーハングすることが許されるかどうかを決定する。
取りうる値:

8.5  新規の 'display' 値

値: ruby-text | ruby-base | ...

これら2つの新しい値は、それぞれ rt エレメントと rb [RUBY] エレメントとを表わすために、既存の 'display' プロパティに追加されるものである。そこで、どのエレメント(例.SPAN)でも、CSSを経由してルビのような挙動を取らせることができる。

9.  用語集

"ボポモフォ"
中国語、とりわけ標準北京語における音素論で使われる37キャラクタおよび4声調記号。
"ハングル"
韓国・朝鮮語筆記システムのサブセット
"ハンジャ"
韓国語筆記システムのサブセットで、中国語筆記システムから借用され、または改造された表意文字を利用するもの。漢字も見ること。
"ひらがな"
日本語筆記システムのサブセットで、ローマ文字単語を表わすための音声キャラクタからなるもの [訳者注:原文では"ひらがな"と"かたかな"との説明が入れ代わっています。次の機会に修正されるとのことです。この訳文は原文通りに訳しました]。かたかなも見ること。
表意文字
中国(あるいは東アジア一般)の筆記システムのキャラクタで、特定の単語やそのためのフレーズではなく、一つの物ごとや考えを表わす。
"かな"
日本語筆記システムの音節的サブセットであり、外国語の単語を書くために排他的に、または漢字と組み合わせで使うことができる。
"漢字"
日本語筆記システムのサブセットで、中国語筆記システムから借用され、または改造された表意文字を利用するもの。ハンジャも見ること。
"カシダ"
アラビア語の引き伸ばしキャラクタ
"かたかな"
日本語筆記システムのサブセットで、日本語の単語を表わすために使われる音声文字からなるもの [訳者注:原文では"ひらがな"と"かたかな"との説明が入れ代わっています。次の機会に修正されるとのことです。この訳文は原文通りに訳しました]。ひらがなも見ること。
"禁則"
改行の制約セットについての日本語の規則。
"組文字"
最大5キャラクタからなる組み合わせキャラクタであり、元のキャラクタは単一のキャラクタのスペースに収まるようにサイズを縮小されて組み合わされる。
ロゴグラフ・ロゴグラム
単語全体を表わす中国語(または一般的に東アジア語)筆記システムのキャラクタ。
ルビ
他のテキストランの付近に現れて、そのテキストの注釈や発音ガイドとして機能するテキストラン。
"縦中横"
縦組みテキストの縦行の内部にある横組みテキストのラン。東アジアの文書で年などといった一定の数を表示するためによく使われる。
"割り注"
高さおよび長さが等しく、組み合わせた高さがその出現する行の高さに等しい2つの行として現れる縮小フォントサイズのテキストラン。

謝辞

次の方々からの助けがなければこの仕様書はあり得なかったであろう。

Ayman Aldahleh, Bert Bos, Martin Dürst, Laurie Anna Edlund, Ben Errez, Yaniv Feinberg, Arye Gittelman, Richard Ishida, Koji Ishii, Masayasu Ishikawa, Michael Jochimsen, Eric LeVine, Chris Pratley, Rahul Sonnad, Frank Tang, Chris Thrasher.


参照資料

[CSS2]
Cascading Stylesheets, level 2 (CSS2) Specification, W3C Recommendation
Bert Bos, Håkon Wium Lie, Chris Lilley, Ian Jacobs, 1998年5月12日
http://www.w3.org/TR/REC-CSS2 で入手可能.
[HTML4]
HTML 4.0 Specification, W3C Recommendation
Dave Raggett, Arnaud Le Hors, Ian Jacobs, 1997年12月18日, 1998年4月24日校訂
http://www.w3.org/TR/REC-html40 で入手可能.
[JIS]
Line composition rules for Japanese documents
JIS X 4051-1995, Japanese Standards Association, 1995 (和文)
[RUBY]
Ruby, W3C Working Draft
Marcin Sawicki, 1998年12月21日
http://www.w3.org/TR/WD-ruby で入手可能.
[XSL]
Extensible Stylesheet Language (XSL), W3C Working Draft
James Clark, Stephen Deach, 1998年12月16日
http://www.w3.org/TR/WD-xsl で入手可能.

どら猫本舗 (webmaster@doraneko.org)