縦中横
縦中横は縦書きのテキストの中でラテン文字や数字などを横書きにするレイアウト方法です。
レイアウトと描画が複雑になるのを防ぐため、“text-combine-upright”プロパティによって縦中横にする際に組み合わせることができるテキストはボックスの境界をまたがない連続する文字であるテキストのみです。
レイアウト方法
“text-combine-upright: all;”である場合、縦中横になるテキストは“unicode-bidi: isolate;”となり、水平方向に配置されます。この時、“text-spacing”プロパティや強制ライン・ブレイクは無視されますが、指定されたフォントの設定は使用されます。
縦中横になるテキストの最初と最後にあるホワイトスペースははインライン・ブロック(“display: inline-block;”)の場合と同様に処理します。
縦中横として組み合わせたテキストの大きさは1辺が“1em”の正方形に収まるものと仮定され、その正方形からはみ出た部分はレイアウトを計算する際には考慮されません。ユーザー・エージェントは文字をこの正方形の中央に揃えて描画します。
縦中横として組み合わせたテキストのベースラインは親となるインライン・ボックスの“text-over”と“text-under”ベースラインの中間に揃えられるように、“vertical-align”プロパティによるベースラインの調整が行われる前に選択されます。
縦中横として組み合わせたテキストは双方向(bidi)のテキストの並べ替えの際には“text-orientation: upright;”である文字と同様に扱われます。
縦中横として組み合わせられた後のライン・ブレイクについては通常のインライン・ボックスと同様に扱われます。
強調やテキスト装飾、空白の調整など、その他のテキストのレイアウトを施す際には縦中横として組み合わせたテキストは1個のオブジェクト置換文字(U+FFFC)であるかのように扱われます。
テキストの圧縮
ユーザー・エージェントは縦中横として組み合わせた文字の送り幅の合計が“1em”に収まるようにしなければならず、必要であればテキストを圧縮します。
OpenTypeを使用している場合、縦中横として組み合わせたすべての文字で幅が異なる字形(“hwid”、“twid”、“qwid”)が使用可能であればそれらを使用します。そうでなければ、ユーザー・エージェントはフォントが提供する半角字形や三分字形、四分字形などの字形に代える、フォントが提供する水平方向に文字を圧縮する機能を使用する、幾何学的に水平方向に文字を圧縮するなど何らかの方法で送り幅の合計が“1em”に収まるようにします。
フォントによっては漢字など表意文字が幅は“1em”であっても高さは“1em”未満である場合があります。この時、ユーザー・エージェントは縦中横として組み合わせたテキストの高さが“水(U+6C34)”に指定されたフォントの設定を適用した時の縦の送り幅と同じになるように拡大・縮小することができます。
また、縦中横として組み合わせたテキストが2字以上である場合には“text-transform: full-width;”で半角文字を全角文字に変換するアルゴリズムを逆用することで全角文字は半角文字に置き換え、その後に他の圧縮処理を施します。