@@ -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 ‘< code class =property > text-orientation</ code > ’
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 ‘< code class =property > vertical-align</ code > ’ value of
1365+ ‘< a href ="#baseline "> < code class =css > baseline</ code > </ a > ’,
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 ‘< code
1371+ class =css > sub</ code > ’, ‘< code class =css > super</ code > ’,
1372+ ‘< code class =css > <length></ code > ’, and ‘< code
1373+ class =css > <percentage></ code > ’, the baselines are aligned as
1374+ for ‘< a href ="#baseline "> < code
1375+ class =css > baseline</ code > </ a > ’, but the child is shifted according
1376+ to the offset given by its ‘< code
1377+ class =property > vertical-align</ code > ’ 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 ‘< code class =property > vertical-align</ code > ’: ‘< a
1392- href ="#baseline "> < code class =css > baseline</ code > </ a > ’,
1393- ‘< code class =css > sub</ code > ’, ‘< code
1394- class =css > super</ code > ’, <length>, <percentage>. In
1395- the latter cases, the baselines are aligned as for ‘< a
1396- href ="#baseline "> < code class =css > baseline</ code > </ a > ’, but the
1397- child is shifted according to the offset given by its ‘< code
1398- class =property > vertical-align</ code > ’ value.
1399-
14001398 < div class =example >
14011399 < p > If we assign ‘< code class =css > vertical-align:
14021400 super</ code > ’ 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 ‘< a
16171610 href ="#sideways-left "> < code class =css > sideways-left</ code > </ a > ’,
1618- this forces ‘< a href ="#isolate "> < code
1619- class =css > isolate</ code > </ a > ’ to be added to the computed value of
1620- ‘< a href ="#unicode-bidi0 "> < code
1621- class =property > unicode-bidi</ code > </ a > ’. Layout of text is exactly
1622- as for ‘< a href ="#sideways-right "> < code
1611+ this forces bidi isolation: the ‘< a href ="#normal "> < code
1612+ class =css > normal</ code > </ a > ’ and ‘< a href ="#embed "> < code
1613+ class =css > embed</ code > </ a > ’ values of ‘< a
1614+ href ="#unicode-bidi0 "> < code
1615+ class =property > unicode-bidi</ code > </ a > ’ compute to ‘< a
1616+ href ="#isolate "> < code class =css > isolate</ code > </ a > ’, and ‘< a
1617+ href ="#bidi-override "> < code class =css > bidi-override</ code > </ a > ’
1618+ computes to ‘< code class =css > bidi-override isolate</ code > ’.
1619+ Layout of text is exactly as for ‘< a href ="#sideways-right "> < code
16231620 class =css > sideways-right</ code > </ a > ’ 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 > ’ value other than
16341631 ‘< a href ="#sideways-left "> < code
16351632 class =css > sideways-left</ code > </ a > ’, 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 ‘< a href ="#vertical-right "> < code
1692+ class =css > vertical-right</ code > </ a > ’ 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 ‘< a href ="#upright "> < code
1696+ class =css > upright</ code > </ a > ’ 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 ‘< 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- ‘< a href ="#vertical-right "> < code
1712- class =css > vertical-right</ code > </ a > ’) or set upright (for ‘< a
1713- href ="#upright "> < code class =css > upright</ code > </ a > ’) depending on
1714- the ‘< a href ="#text-orientation0 "> < code
1715- class =property > text-orientation</ code > </ a > ’ 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 ‘< a
1725- href ="#vertical-right "> < code class =css > vertical-right</ code > </ a > ’
1726- text. Similarly if the font and font system support upright typesetting
1727- then the UA should rely on that feature to set ‘< a
1728- href ="#upright "> < code class =css > upright</ code > </ a > ’ 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 ‘< a
2994+ href ="#text-orientation0 "> < code
2995+ class =property > text-orientation</ code > </ a > ’ 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—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 ‘< 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 ‘< code
3105- class =property > text-orientation</ code > ’</ a > .
3143+ belong to the Common, Inherited, or Unknown scripts) as required by
3144+ ‘< a href ="#text-orientation0 "> < code
3145+ class =property > text-orientation</ code > </ a > ’ and < a
3146+ href ="#script-orientations "> Appendix B</ a > .
31063147 </ ol >
31073148
31083149 < p > When ‘< 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- ‘< a href ="#text-orientation0 "> < code
3182- class =property > text-orientation</ code > </ a > ’ 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—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