* 仕様書

[REFS[
-
[1] 
[CITE@ja-jp[[[BASE]] - Baseline table (OpenType 1.9) - Typography | Microsoft Docs]], [[PeterCon]], [TIME[2022-08-31T11:42:33.000Z]] <https://docs.microsoft.com/ja-jp/typography/opentype/spec/base>
- [4] [CITE@en[CSS Writing Modes Level 4]], [TIME[2020-09-05T23:08:25.000Z]], [TIME[2020-09-06T02:06:24.426Z]] <https://drafts.csswg.org/css-writing-modes/#intro-baselines>
- [10] 
[CITE@en[CSS Box Alignment Module Level 3]], [TIME[2023-11-17T19:59:52.000Z]], [TIME[2023-11-18T04:39:13.146Z]] <https://drafts.csswg.org/css-align-3/#baseline-rules>
- [17] 
[CITE@en[CSS Inline Layout Module Level 3]], [TIME[2023-11-17T20:01:02.000Z]], [TIME[2023-11-18T04:55:46.567Z]] <https://drafts.csswg.org/css-inline-3/#dominant-baseline-property>
- [37] 
[CITE@en[CSS Inline Layout Module Level 3]], [TIME[2023-11-17T20:01:02.000Z]], [TIME[2023-11-18T05:25:39.446Z]] <https://drafts.csswg.org/css-inline-3/#alignment-baseline-property>


]REFS]

* 基線

[2] 
[[OpenType]] の [CODE[BASE]] [[表][OpenType表]]では、
複数の[[基線]]があって、
その種別は[DFN[[RUBYB[[RUBY[基][き]][RUBY[線][せん]]タグ][baseline tag]]]]
[SRC[>>1]] と呼ばれる[[タグ][OpenTypeタグ]]で表されます。

[3] 
[[OpenType]] の [CODE[BASE]] [[表][OpenType表]]では、
[[基線]]は
([[基線タグ]], [[用字系タグ]], [[言語系タグ]], [[横書き]] or [[縦書き]])
の組み合わせに対して指定できます。
[SRC[>>1]]

[7] [[OpenTypeの座標]]も参照。


[8] 
[[縦書き]]で[[欧文]]フォントと[[漢字]]フォントを組み合わせた時、
[[フォント]]内に特に何も指定がなければ
[[Firefox]]
は垂直方向にいい感じのところで揃えてくれるのですが、
[[Chrome]]
は[[漢字]]の左辺を[[欧文]]の[[基線]]に揃えるようで、
[[欧文]]が左寄りに見えてしまいます。
[CODE[BASE]] で制御できそうなものですが、
指定してみても位置関係は変わらず、よくわかりません...
[TIME[2023-11-11T12:04:55.00Z]]

[9] >>8
[CODE[OS/2]] の [F[[CODE[usWinAscent]]]] と [F[[CODE[usWinDescent]]]]
が[[横書き]]だけでなく[[縦書き]]の左右位置にも影響していそう、
と思ったけどよく見るとやっぱり違うような。
[SEE[ [[OpenTypeの座標]] ]]

* [CODE[BASE]] 表 (OpenType)

[5] 
[[OpenType]] の [CODE[BASE]] [[表][OpenType表]]には、
[[基線]]と、[[座標]]の範囲 (最小値と最大値) を記述できます。
[SRC[>>1]]

[6] 
[[座標]]の範囲は既定のものの他に、[[機能][フォント機能]]依存の値も指定できます。
[SRC[>>1]]

* 基線集合

[13] 
[DFN[[RUBYB[[RUBY[基][き]][RUBY[線][せん]][RUBY[集][しゅう]][RUBY[合][ごう]]][baseline set]]]]は、
[[共通基線表]]に関連付けられた
(アルファベット的基線、中央的基線などの)
[[基線]]の[[集合]]です。
[SRC[>>10]]

[14] 
[[箱]]は、
ある[[軸]]について[DFN[[RUBYB[[RUBY[最][さい]][RUBY[初][しょ]][RUBY[基][き]][RUBY[線][せん]][RUBY[集][しゅう]][RUBY[合][ごう]]][first baseline set]]]]を持つことがあります。
[[最初基線集合]]は、建前上、[[箱]]の中の最初の[[行]]の[[基線集合]]に対応します。
[SRC[>>10]]

[15] 
[[箱]]は、
ある[[軸]]について[DFN[[RUBYB[[RUBY[最][さい]][RUBY[後][ご]][RUBY[基][き]][RUBY[線][せん]][RUBY[集][しゅう]][RUBY[合][ごう]]][last baseline set]]]]を持つことがあります。
[[最初基線集合]]は、建前上、[[箱]]の中の最後の[[行]]の[[基線集合]]に対応します。
[SRC[>>10]]


* 支配的基線 (CSS)

[18] 
[[箱]]の[F[[DFN[[RUBYB[[RUBY[支][し]][RUBY[配][はい]][RUBY[的][てき]][RUBY[基][き]][RUBY[線][せん]]][dominant baseline]]]]]]は、
[[箱]]の[[内容]]を[[揃え]]るため使う既定の[[基線]]の型です。
[SRC[>>17]]

[19] 
[DFN[[CODE[dominant-baseline]]]]
[[特性]]は、
[[支配的基線]]を指定します。 [SRC[>>17]]

[20] 
[[行内箱]]の[F[支配的基線]]は、
[[箱]]内の[[テキスト]]を[[揃え]]るために使います。
[[テキスト]]内の[[グリフ]]の対応する[[基線]]を、
[[箱]]の[F[支配的基線]]に[[揃え]]ます。
また、[[箱]]の[[子供箱]]で[[行内水準]]のものも、
[CODE[vertical-align]]
で別途指定した場合を除けば、
やはりその[[子供箱]]の対応する[[基線]]を、
[[箱]]の[F[支配的基線]]に[[揃え]]ます。
[SRC[>>17]]

[21] 
[[行内箱]]以外の[[箱]]の[F[支配的基線]]は、
その[[箱]]の[[揃え文脈]]の[[基線揃え]]に [[participate]] する[[箱]]の既定の[[揃え基線]]となります。
[SRC[>>17]]

[41] 指定できる[[特性値]]は >>22 参照。


* 揃え基線 (CSS)

[16] 
[[箱]]の[DFN[[F[[RUBYB[[RUBY[揃][そろ]]え[RUBY[基][き]][RUBY[線][せん]]][alignment baseline]]]]]]は、
その[[箱]]を[[揃え文脈]]において[[揃え]]るため使う[[基線]]です。
[[箱]]の[F[揃え基線]]は、
その[[基線集合]]中の[[基線]]の1つであり、
通常は[[被共有揃え文脈]]と関連付けられた [[dominant baseline]]
です。
[SRC[>>10]]

[38] 
[[箱]]の[F[揃え基線]]は、
[[post-alignment shift]] を適用する前に[[箱]]を[[揃え]]るために使う[[基線]]です。
[SRC[>>37]]

[43] 
[[基線揃え]]にあっては、
[[箱]]の[F[揃え基線]]は[[箱]]の[[基線]]のいずれが[[揃え文脈]]の[[基線]]に対応して揃えられるべきかを指定します。
[SRC[>>37]]

[44] 
すなわち、[[inline formatting context]] にあっては、
[[行内水準]]の[[箱素片]]群と[[グリフ]]群は、
[[親]]の[[行内箱素片]]が[[確立]]した[[揃え文脈]]を[[行内軸]]に沿って共有します。
[SRC[>>37]]


[39] 
[DFN[[CODE[alignment-baseline]]]]
[[特性]]は、
[[箱]]の[F[揃え基線]]を指定します。
[SRC[>>37]]

[45] 
また、
[[SVGテキスト配置]]では、
[CODE[alignment-baseline]] は
[[SVG現在テキスト位置]]に[[揃え]]られる[[基線]]を指定します。
[SRC[>>37]]


[40] 指定できる[[特性値]]は >>22 参照。

* 基線の種類

[FIG(table)[ [22] [[基線]]

:name:呼称
:css:[[CSS]] [CODE[<'[[dominant-baseline]]'>]] [SRC[>>17]]
:cssA:[[CSS]] [CODE[<'[[alignment-baseline]]'>]] [SRC[>>37]]

:css:[DFN[[CODE[text-bottom]]]]
:cssA:[DFN[[CODE[text-bottom]]]],
[DFN[[CODE[text-after-edge]]]]
:name:[DFN[text-under baseline]]

:css:[DFN[[CODE[alphabetic]]]]
:cssA:[DFN[[CODE[alphabetic]]]]
:name: [DFN[[RUBYB[アルファベット[RUBY[的][てき]][RUBY[基][き]][RUBY[線][せん]]][alphabetic baseline]]]]

:css:[DFN[[CODE[ideographic]]]]
:cssA:[DFN[[CODE[ideographic]]]]
:name:[DFN[ideographic-under baseline]]

:css:[DFN[[CODE[central]]]]
:cssA:[DFN[[CODE[central]]]]
:name:[DFN[[RUBYB[[RUBY[中][ちゅう]][RUBY[央][おう]][RUBY[的][てき]][RUBY[基][き]][RUBY[線][せん]]][central baseline]]]]

:css:[DFN[[CODE[mathematical]]]]
:cssA:[DFN[[CODE[mathematical]]]]
:name:[DFN[[RUBYB[[RUBY[数][すう]][RUBY[式][しき]][RUBY[基][き]][RUBY[線][せん]]][math baseline]]]]

:css:[DFN[[CODE[hanging]]]]
:name:[DFN[hanging baseline]]

:css:[DFN[[CODE[text-top]]]]
:cssA:[DFN[[CODE[text-top]]]],
[DFN[[CODE[text-before-edge]]]]
:name:[DFN[text-over baseline]]
]FIG]

[42] 
[[CSS]]
[CODE[alignment-baseline]]
[[特性値]]
[DFN[[CODE[baseline]]]]
は、
[[親]]の[F[[[支配的基線]]]]を使うことを表します。
[SRC[>>37]]


[23] 
[[CSS]] の
[CODE[dominant-baseline]] 
と
[CODE[alignment-baseline]] 
の[[特性値]]
[DFN[[CODE[middle]]]]
は、

- [24] [CODE[[[text-orientation]]: [[upright]]]] のとき、
-- [35] [[中央的基線]]
- [25] それ以外のとき、
-- [36] [[x-middle baseline]]

です。 [SRC[>>17, >>37]]

[26] 
[[CSS]] [CODE[dominant-baseline]] [[特性値]]
[DFN[[CODE[auto]]]]
は、

- [29] [[horizontal writing mode]] のとき、
-- [30] 
[CODE[alphabetic]] と同じ
- [27] [[vertical writing mode]] のとき、
-- [31] 
[CODE[[[text-orientation]]: [[sideways]]]]
のとき、
--- [33] [CODE[alphabetic]] と同じ
-- [32] 
[CODE[[[text-orientation]]: [[mixed]]]]
か
[CODE[[[text-orientation]]: [[upright]]]]
のとき、
--- [34] [CODE[central]] と同じ
-- [28] [[SVGテキスト]]における
[[coordinate-based glyph positioning]] に使う[[グリフ]]群の [[origin point]]
は、
[CODE[central]] の場合と同じ


です。 [SRC[>>17]]

-*-*-

[46] 
[CODE[text-before-edge]]
と
[CODE[text-after-edge]]
は、
[[遺物]]内容に対応するため[[SVG]]実装が対応して[MAY[良い]]とされています。
[SRC[>>37]]

[47] 
ただし [CODE[alignment-baseline]] で指定できるだけで、
[[shorthand]] の [CODE[vertical-align]] では指定できないとされます。
[SRC[>>37]]

[48] 
[[Chrome]] はそのように実装しています。
[[Chrome]] ではさらに [CODE[dominant-baseline]] にも指定できます。
[TIME[2023-11-18T05:53:50.200Z]]



* 歴史

** CSS baseline

[11] [CITE@en[''''''[''''''CSSWG'''''']'''''' Minutes Seoul F2F 2014-05-20 Part III: CSS Line Layout]]
( ([[Dael Jackson]] 著, [TIME[2014-06-11 22:03:59 +09:00]] 版))
<http://lists.w3.org/Archives/Public/www-style/2014Jun/0108.html>

[12] [CITE@en[''''''[''''''SVG2'''''']'''''''''['''css-inline''']''' vertical-align, baseline-shift, alignment-baseline,  dominant-baseline]]
( ([[fantasai]] 著, [TIME[2014-05-20 13:58:23 +09:00]] 版))
<http://lists.w3.org/Archives/Public/www-style/2014May/0208.html>


* メモ