Skip to content

Commit e401410

Browse files
committed
Clarifications to baseline alignment
1 parent ebf5b6c commit e401410

2 files changed

Lines changed: 140 additions & 158 deletions

File tree

css3-writing-modes/Overview.html

Lines changed: 129 additions & 149 deletions
Original file line numberDiff line numberDiff line change
@@ -206,10 +206,6 @@ <h2 class="no-num no-toc" id=Contents> Table of Contents</h2>
206206
<li><a href="#text-orientation"><span class=secno>5.1. </span> Orienting
207207
Text: the &lsquo;<code class=property>text-orientation</code>&rsquo;
208208
property</a>
209-
<ul class=toc>
210-
<li><a href="#vertical-typesetting"><span class=secno>5.1.1. </span>
211-
Vertical Typesetting</a>
212-
</ul>
213209
</ul>
214210

215211
<li><a href="#abstract-box"><span class=secno>6. </span> Abstract Box
@@ -286,15 +282,15 @@ <h2 class="no-num no-toc" id=Contents> Table of Contents</h2>
286282
<li class=no-num><a href="#bidi-html"> Appendix A: Bidi Rules for HTML</a>
287283

288284

285+
<li class=no-num><a href="#character-properties">Appendix Q Characters and
286+
Properties</a>
287+
289288
<li class=no-num><a href="#script-orientations">Appendix B:
290289
Bi-orientational Transformations</a>
291290

292291
<li class=no-num><a href="#vertical-typesetting-details">Appendix C:
293292
Vertical Typesetting Synthesis</a>
294293

295-
<li class=no-num><a href="#character-properties">Appendix Q Characters and
296-
Properties</a>
297-
298294
<li class=no-num><a href="#intrinsic-sizing">Appendix D: Intrinsic
299295
Dimensions</a>
300296
<ul class=toc>
@@ -1355,18 +1351,30 @@ <h3 id=replaced-baselines><span class=secno>4.3. </span> Atomic Inline
13551351

13561352
<h3 id=baseline-alignment><span class=secno>4.4. </span> Baseline Alignment</h3>
13571353

1358-
<p>The dominant baseline is used in CSS for alignment in two cases:
1354+
<p>The <dfn id=dominant-baseline>dominant baseline</dfn> (which <a
1355+
href="#text-baselines">can change</a> based on the writing mode) is used
1356+
in CSS for alignment in two cases:
13591357

13601358
<ul>
1361-
<li>Aligning glyphs from different fonts within the same inline box. The
1362-
glyphs are aligned by matching up the positions of the dominant baseline.
1363-
1364-
1365-
<li>Aligning a child inline within its parent. The child is aligned to the
1366-
parent by matching the parent's dominant baseline to the same baseline in
1367-
the child. (E.g. if the parent's dominant baseline is alphabetic, then
1368-
the child's alphabetic baseline is matched to the parent's alphabetic
1369-
baseline, even if the child's dominant baseline is something else.)
1359+
<li><strong>Aligning glyphs from different fonts within the same inline
1360+
box.</strong> The glyphs are aligned by matching up the positions of the
1361+
dominant baseline in their corresponding fonts.
1362+
1363+
<li><strong>Aligning a child inline-level box within its parent.</strong>
1364+
For the &lsquo;<code class=property>vertical-align</code>&rsquo; value of
1365+
&lsquo;<a href="#baseline"><code class=css>baseline</code></a>&rsquo;,
1366+
child is aligned to the parent by matching the parent's dominant baseline
1367+
to the same baseline in the child. (E.g. if the parent's dominant
1368+
baseline is alphabetic, then the child's alphabetic baseline is matched
1369+
to the parent's alphabetic baseline, even if the child's dominant
1370+
baseline is something else.) For values of &lsquo;<code
1371+
class=css>sub</code>&rsquo;, &lsquo;<code class=css>super</code>&rsquo;,
1372+
&lsquo;<code class=css>&lt;length&gt;</code>&rsquo;, and &lsquo;<code
1373+
class=css>&lt;percentage&gt;</code>&rsquo;, the baselines are aligned as
1374+
for &lsquo;<a href="#baseline"><code
1375+
class=css>baseline</code></a>&rsquo;, but the child is shifted according
1376+
to the offset given by its &lsquo;<code
1377+
class=property>vertical-align</code>&rsquo; value.
13701378
<div class=example>
13711379
<p>Given following sample markup:
13721380

@@ -1387,16 +1395,6 @@ <h3 id=baseline-alignment><span class=secno>4.4. </span> Baseline Alignment</h3>
13871395
</div>
13881396
</div>
13891397

1390-
<p>Baseline alignment in this fashion is used with the following values
1391-
of &lsquo;<code class=property>vertical-align</code>&rsquo;: &lsquo;<a
1392-
href="#baseline"><code class=css>baseline</code></a>&rsquo;,
1393-
&lsquo;<code class=css>sub</code>&rsquo;, &lsquo;<code
1394-
class=css>super</code>&rsquo;, &lt;length&gt;, &lt;percentage&gt;. In
1395-
the latter cases, the baselines are aligned as for &lsquo;<a
1396-
href="#baseline"><code class=css>baseline</code></a>&rsquo;, but the
1397-
child is shifted according to the offset given by its &lsquo;<code
1398-
class=property>vertical-align</code>&rsquo; value.
1399-
14001398
<div class=example>
14011399
<p>If we assign &lsquo;<code class=css>vertical-align:
14021400
super</code>&rsquo; to the <code>.inner</code> element from the example
@@ -1551,15 +1549,10 @@ <h3 id=text-orientation><span class=secno>5.1. </span> Orienting Text: the
15511549
sets the orientation of the line. Current values only have an effect in
15521550
vertical writing modes.
15531551

1554-
<p id=grapheme-cluster>In this section only, the term <dfn
1555-
id=character>character</dfn> is defined as <em>extended grapheme
1556-
cluster</em> per <a href="#UAX29"
1557-
rel=biblioentry>[UAX29]<!--{{!UAX29}}--></a>. It is roughly equivalent to
1558-
what a language user considers to be a character or a basic unit of the
1559-
script (which might not be a single Unicode codepoint). The UA may further
1560-
tailor the definition as allowed by Unicode. See <a
1561-
href="#character-properties">Character Properties</a> for detailed
1562-
information on determing character properties.
1552+
<p>For readability, the term <a href="#character"><i>character</i></a> is
1553+
used in place of <em>extended grapheme cluster</em> in this section. See
1554+
<a href="#character-properties">Characters and Properties</a> for further
1555+
details.
15631556

15641557
<p>Values have the following meanings:
15651558

@@ -1615,11 +1608,15 @@ <h3 id=text-orientation><span class=secno>5.1. </span> Orienting Text: the
16151608

16161609
<p>If set on a non-replaced inline whose parent is not &lsquo;<a
16171610
href="#sideways-left"><code class=css>sideways-left</code></a>&rsquo;,
1618-
this forces &lsquo;<a href="#isolate"><code
1619-
class=css>isolate</code></a>&rsquo; to be added to the computed value of
1620-
&lsquo;<a href="#unicode-bidi0"><code
1621-
class=property>unicode-bidi</code></a>&rsquo;. Layout of text is exactly
1622-
as for &lsquo;<a href="#sideways-right"><code
1611+
this forces bidi isolation: the &lsquo;<a href="#normal"><code
1612+
class=css>normal</code></a>&rsquo; and &lsquo;<a href="#embed"><code
1613+
class=css>embed</code></a>&rsquo; values of &lsquo;<a
1614+
href="#unicode-bidi0"><code
1615+
class=property>unicode-bidi</code></a>&rsquo; compute to &lsquo;<a
1616+
href="#isolate"><code class=css>isolate</code></a>&rsquo;, and &lsquo;<a
1617+
href="#bidi-override"><code class=css>bidi-override</code></a>&rsquo;
1618+
computes to &lsquo;<code class=css>bidi-override isolate</code>&rsquo;.
1619+
Layout of text is exactly as for &lsquo;<a href="#sideways-right"><code
16231620
class=css>sideways-right</code></a>&rsquo; except that the text content
16241621
and baseline table of each of the element's inline boxes is mirrored
16251622
around a vertical axis along the center of its content box. The
@@ -1633,7 +1630,7 @@ <h3 id=text-orientation><span class=secno>5.1. </span> Orienting Text: the
16331630
class=property>text-orientation</code></a>&rsquo; value other than
16341631
&lsquo;<a href="#sideways-left"><code
16351632
class=css>sideways-left</code></a>&rsquo;, an analogous transformation
1636-
is applied.
1633+
(and bidi isolation) is applied.
16371634

16381635
<dt><dfn id=sideways>sideways</dfn>
16391636

@@ -1683,6 +1680,26 @@ <h3 id=text-orientation><span class=secno>5.1. </span> Orienting Text: the
16831680
and sideways-right (writing-mode is vertical-rl)</p>
16841681
</div>
16851682

1683+
<p>The orientation of characters belonging to the Common, Inherited, and
1684+
Unknown script categories may be UA- or font-dependent in vertical
1685+
typographic modes:
1686+
1687+
<ul>
1688+
<li>
1689+
<p>If the font and font system support mixed-orientation typesetting
1690+
(e.g. the OpenType font used has the <code>vrt2</code>), the UA should
1691+
rely on that feature to set &lsquo;<a href="#vertical-right"><code
1692+
class=css>vertical-right</code></a>&rsquo; text. Similarly if the font
1693+
and font system support upright typesetting (e.g. the OpenType font used
1694+
has the <code>vert</code> feature) then the UA should rely on that
1695+
feature to set &lsquo;<a href="#upright"><code
1696+
class=css>upright</code></a>&rsquo; text.
1697+
1698+
<li>
1699+
<p>If the UA needs to synthesize such features, then the settings in <a
1700+
href="#vertical-typesetting-details">Appendix C</a> are recommended.
1701+
</ul>
1702+
16861703
<div class=example>
16871704
<p>In the following example, the root element of a horizontal-only
16881705
document is set to use &lsquo;<a href="#sideways"><code
@@ -1701,39 +1718,6 @@ <h3 id=text-orientation><span class=secno>5.1. </span> Orienting Text: the
17011718
</pre>
17021719
</div>
17031720

1704-
<h4 id=vertical-typesetting><span class=secno>5.1.1. </span> Vertical
1705-
Typesetting</h4>
1706-
1707-
<p>In vertical typographic modes, any character belonging to a vertical
1708-
script <em>must</em> be set using its base character's intrinsic
1709-
orientation. (See <a href="#script-orientations">Appendix B</a>.)
1710-
Characters belonging to horizontal-only scripts must set sideways (for
1711-
&lsquo;<a href="#vertical-right"><code
1712-
class=css>vertical-right</code></a>&rsquo;) or set upright (for &lsquo;<a
1713-
href="#upright"><code class=css>upright</code></a>&rsquo;) depending on
1714-
the &lsquo;<a href="#text-orientation0"><code
1715-
class=property>text-orientation</code></a>&rsquo; property.
1716-
1717-
<p>The orientation of characters belonging to the Common, Inherited, and
1718-
Unknown script categories may be UA- or font-dependent in vertical
1719-
typographic modes:
1720-
1721-
<ul>
1722-
<li>
1723-
<p>If the font and font system support mixed-orientation typesetting, the
1724-
UA should rely on that feature to set &lsquo;<a
1725-
href="#vertical-right"><code class=css>vertical-right</code></a>&rsquo;
1726-
text. Similarly if the font and font system support upright typesetting
1727-
then the UA should rely on that feature to set &lsquo;<a
1728-
href="#upright"><code class=css>upright</code></a>&rsquo; text.
1729-
1730-
<li>
1731-
<p>If the UA needs to synthesize such features (e.g. if an OpenType font
1732-
has only the <code>vert</code> but not the <code>vrt2</code> feature),
1733-
then the settings in <a href="#vertical-typesetting-details">Appendix
1734-
C</a> are recommended.
1735-
</ul>
1736-
17371721
<h2 id=abstract-box><span class=secno>6. </span> Abstract Box Terminology</h2>
17381722

17391723
<p><a href="#CSS21" rel=biblioentry>[CSS21]<!--{{!CSS21}}--></a> defines
@@ -2967,6 +2951,56 @@ <h2 class=no-num id=bidi-html> Appendix A: Bidi Rules for HTML</h2>
29672951
{ unicode-bidi: isolate; }
29682952
</pre>
29692953

2954+
<h2 class=no-num id=character-properties>Appendix Q Characters and
2955+
Properties</h2>
2956+
2957+
<p>Unicode defines three character-level properties that are referenced in
2958+
CSS Writing Modes:
2959+
2960+
<dl>
2961+
<dt><a href="http://www.unicode.org/reports/tr11/#Definitions">East Asian
2962+
width</a>
2963+
2964+
<dd>Defined in <a href="#UAX11"
2965+
rel=biblioentry>[UAX11]<!--{{!UAX11}}--></a> and given as the
2966+
East_Asian_Width property.
2967+
2968+
<dt><a
2969+
href="http://www.unicode.org/reports/tr44/#General_Category_Values">General
2970+
Category</a>
2971+
2972+
<dd>Defined in <a href="#UAX44"
2973+
rel=biblioentry>[UAX44]<!--{{!UAX44}}--></a> and given as the
2974+
General_Category property.
2975+
2976+
<dt><a href="http://www.unicode.org/reports/tr24/#Values">Script
2977+
property</a>
2978+
2979+
<dd>Defined in <a href="#UAX24"
2980+
rel=biblioentry>[UAX24]<!--{{!UAX24}}--></a> and given as the Script
2981+
property. (UAs should include any ScriptExtensions.txt assignments in
2982+
this mapping.)
2983+
</dl>
2984+
2985+
<p id=grapheme-cluster>In several sections (as noted), the term <dfn
2986+
id=character>character</dfn> is defined as <em>extended grapheme
2987+
cluster</em> per <a href="#UAX29"
2988+
rel=biblioentry>[UAX29]<!--{{!UAX29}}--></a>. It is roughly equivalent to
2989+
what a language user considers to be a character or a basic unit of the
2990+
script (which might not be a single Unicode codepoint). The UA may further
2991+
tailor this definition as allowed by Unicode.
2992+
2993+
<p>Unicode defines properties for characters, but for &lsquo;<a
2994+
href="#text-orientation0"><code
2995+
class=property>text-orientation</code></a>&rsquo; and <a
2996+
href=vertical-typesetting-details>Vertical Typesetting Synthesis</a>, it
2997+
is necessary to determine the properties of a grapheme cluster. For the
2998+
purposes of CSS Writing Modes, the properties of a grapheme cluster are
2999+
given by its base character&#8212;except in one case: grapheme clusters
3000+
formed with an Enclosing Mark (Me) of the Common script are considered to
3001+
be Other Symbols (So) in the Common script. They are assumed to have the
3002+
same Unicode properties as the Replacement Character U+FFFD.
3003+
29703004
<h2 class=no-num id=script-orientations>Appendix B: Bi-orientational
29713005
Transformations</h2>
29723006

@@ -3077,6 +3111,12 @@ <h2 class=no-num id=vertical-typesetting-details>Appendix C: Vertical
30773111

30783112
<p><em>This appendix is non-normative.</em>
30793113

3114+
<p>This section defines an algorithm for automatic typesetting of vertical
3115+
text. For readability, the term <a href="#character"><i>character</i></a>
3116+
is used in place of <em>extended grapheme cluster</em> in this section.
3117+
See <a href="#character-properties">Characters and Properties</a> for
3118+
further details.
3119+
30803120
<p class=issue>This section needs careful review.
30813121

30823122
<p>When &lsquo;<a href="#text-orientation0"><code
@@ -3100,9 +3140,10 @@ <h2 class=no-num id=vertical-typesetting-details>Appendix C: Vertical
31003140
settings if possible).
31013141

31023142
<li>Set any other characters that are assigned to a script (i.e. do not
3103-
belong to the Common, Inherited, or Unknown scripts) <a
3104-
href="#vertical-typesetting">as required by &lsquo;<code
3105-
class=property>text-orientation</code>&rsquo;</a>.
3143+
belong to the Common, Inherited, or Unknown scripts) as required by
3144+
&lsquo;<a href="#text-orientation0"><code
3145+
class=property>text-orientation</code></a>&rsquo; and <a
3146+
href="#script-orientations">Appendix B</a>.
31063147
</ol>
31073148

31083149
<p>When &lsquo;<a href="#text-orientation0"><code
@@ -3174,47 +3215,6 @@ <h2 class=no-num id=vertical-typesetting-details>Appendix C: Vertical
31743215
of these are present, the font is considered to have vertical font
31753216
settings available.
31763217

3177-
<h2 class=no-num id=character-properties>Appendix Q Characters and
3178-
Properties</h2>
3179-
3180-
<p>Unicode only defines properties for characters, but in the definition of
3181-
&lsquo;<a href="#text-orientation0"><code
3182-
class=property>text-orientation</code></a>&rsquo; and in <a
3183-
href=vertical-typesetting-details>Vertical Typesetting Synthesis</a>, it
3184-
is necessary to determine the properties of a grapheme cluster. For the
3185-
purposes of CSS Writing Modes, the properties of a grapheme cluster are
3186-
given by its base character&#8212;except in one case: grapheme clusters
3187-
formed with an Enclosing Mark (Me) of the Common script are considered to
3188-
be Other Symbols (So) in the Common script having the same Unicode
3189-
properties as the Replacement Character U+FFFD.
3190-
3191-
<p>Unicode defines three properties that are referenced here:
3192-
3193-
<dl>
3194-
<dt><a href="http://www.unicode.org/reports/tr11/#Definitions">East Asian
3195-
width</a>
3196-
3197-
<dd>Defined in <a href="#UAX11"
3198-
rel=biblioentry>[UAX11]<!--{{UAX11}}--></a> and given as the
3199-
East_Asian_Width property.
3200-
3201-
<dt><a
3202-
href="http://www.unicode.org/reports/tr44/#General_Category_Values">General
3203-
Category</a>
3204-
3205-
<dd>Defined in <a href="#UAX44"
3206-
rel=biblioentry>[UAX44]<!--{{UAX44}}--></a> and given as the
3207-
General_Category property.
3208-
3209-
<dt><a href="http://www.unicode.org/reports/tr24/#Values">Script
3210-
property</a>
3211-
3212-
<dd>Defined in <a href="#UAX24"
3213-
rel=biblioentry>[UAX24]<!--{{UAX24}}--></a> and given as the Script
3214-
property. (UAs should include any ScriptExtensions.txt assignments in
3215-
this mapping.)
3216-
</dl>
3217-
32183218
<h2 class=no-num id=intrinsic-sizing>Appendix D: Intrinsic Dimensions</h2>
32193219

32203220
<p><em>This section is normative.</em>
@@ -3581,6 +3581,16 @@ <h3 class=no-num id=normative-references> Normative references</h3>
35813581
</dd>
35823582
<!---->
35833583

3584+
<dt id=UAX44>[UAX44]
3585+
3586+
<dd>Mark Davis; Ken Whistler. <a
3587+
href="http://www.unicode.org/reports/tr44/tr44-6.html"><cite>Unicode
3588+
Character Database.</cite></a> 8 October 2010. Unicode Standard Annex
3589+
#44. URL: <a
3590+
href="http://www.unicode.org/reports/tr44/tr44-6.html">http://www.unicode.org/reports/tr44/tr44-6.html</a>
3591+
</dd>
3592+
<!---->
3593+
35843594
<dt id=UNICODE>[UNICODE]
35853595

35863596
<dd>The Unicode Consortium. <a
@@ -3661,36 +3671,6 @@ <h3 class=no-num id=other-references> Other references</h3>
36613671
</dd>
36623672
<!---->
36633673

3664-
<dt id=UAX11>[UAX11]
3665-
3666-
<dd>Asmus Freytag. <a
3667-
href="http://www.unicode.org/unicode/reports/tr11/tr11-8.html"><cite>East
3668-
Asian Width.</cite></a> 23 March 2001. Unicode Standard Annex #11. URL:
3669-
<a
3670-
href="http://www.unicode.org/unicode/reports/tr11/tr11-8.html">http://www.unicode.org/unicode/reports/tr11/tr11-8.html</a>
3671-
</dd>
3672-
<!---->
3673-
3674-
<dt id=UAX24>[UAX24]
3675-
3676-
<dd>Mark Davis; Ken Whistler. <a
3677-
href="http://www.unicode.org/reports/tr24/"><cite>Unicode Script
3678-
Property.</cite></a> 27 September 2010. Unicode Standard Annex #24. URL:
3679-
<a
3680-
href="http://www.unicode.org/reports/tr24/">http://www.unicode.org/reports/tr24/</a>
3681-
</dd>
3682-
<!---->
3683-
3684-
<dt id=UAX44>[UAX44]
3685-
3686-
<dd>Mark Davis; Ken Whistler. <a
3687-
href="http://www.unicode.org/reports/tr44/tr44-6.html"><cite>Unicode
3688-
Character Database.</cite></a> 8 October 2010. Unicode Standard Annex
3689-
#44. URL: <a
3690-
href="http://www.unicode.org/reports/tr44/tr44-6.html">http://www.unicode.org/reports/tr44/tr44-6.html</a>
3691-
</dd>
3692-
<!---->
3693-
36943674
<dt id=UTN22>[UTN22]
36953675

36963676
<dd>Elika J. Etemad. <a href="http://unicode.org/notes/tn22/"><cite>Robust

0 commit comments

Comments
 (0)