-
Notifications
You must be signed in to change notification settings - Fork 708
/
Copy pathOverview.bs
906 lines (795 loc) · 36 KB
/
Overview.bs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
<pre class='metadata'>
Title: CSS Text Decoration Module Level 4
Shortname: css-text-decor
Level: 4
Status: ED
Date: 2018-03-13
Work Status: Exploring
Group: csswg
ED: https://drafts.csswg.org/css-text-decor-4/
TR: https://www.w3.org/TR/css-text-decor-4/
Issue Tracking: Tracker http://www.w3.org/Style/CSS/Tracker/products/10
Editor: Elika J. Etemad / fantasai, Invited Expert, http://fantasai.inkedblade.net/contact, w3cid 35400
Editor: Koji Ishii, Google, kojiishi@gmail.com, w3cid 45369
Abstract: This module contains the features of CSS relating to text decoration, such as underlines, text shadows, and emphasis marks.
Link Defaults: css-color-3 (property) color, css-break-3 (dfn) fragment
</pre>
<pre class="link-defaults">
spec:css-text-3; type:dfn; text:character
spec:fill-stroke-3; type:property;
text: fill
text: stroke
</pre>
<h2 id=intro>Introduction</h2>
This is the initial draft of CSS Text Decoration Level 4;
it is being maintained as a diff spec against <a href="https://www.w3.org/TR/css-text-decor-3/">CSS Text Decoration Level 3</a>.
<h2 id="line-decoration">
Additional Controls for Line Decorations</h2>
<h3 id="text-decoration-line-property">
Text Decoration Lines: the 'text-decoration-line' property</h3>
<pre class="propdef">
Name: text-decoration-line
Value: none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error
Initial: none
Inherited: no (but see prose, above)
Computed value: specified keyword(s)
Animation type: discrete
</pre>
Specifies what line decorations, if any, are added to the element.
Values have the following meanings:</p>
<dl>
<dt><dfn value for="text-decoration-line">none</dfn>
<dd>
Neither produces nor inhibits text decoration.
<dt><dfn value for="text-decoration-line">underline</dfn>
<dd>
Each line of text is underlined.
<dt><dfn value for="text-decoration-line">overline</dfn>
<dd>
Each line of text has a line over it
(i.e. on the opposite side from an underline).
<dt><dfn value for="text-decoration-line">line-through</dfn>
<dd>
Each line of text has a line through the middle.
<dt><dfn value for="text-decoration-line">blink</dfn>
<dd>
The text blinks (alternates between visible and invisible).
Conforming user agents may simply not blink the text.
Note that not blinking the text is one technique to satisfy
<a href="https://www.w3.org/TR/UAAG/guidelines.html#tech-on-off-blinking-text">checkpoint 3.3 of WAI-UAAG</a>.
This value is <strong>deprecated</strong>
in favor of Animations [[CSS3-ANIMATIONS]].
<dt><dfn value for="text-tecoration-line">spelling-error</dfn>
<dd>
This value indicates the type of text decoration
used by the User Agent to highlight spelling mistakes.
Its appearance is UA-defined,
and may be platform-dependent.
<span class=note>It is often rendered as a red wavy underline.</span>
<dt><dfn value for="text-decoration-line">grammar-error</dfn>
<dd>
This value indicates the type of text decoration
used by the User Agent to highlight grammar mistakes.
Its appearance is UA defined,
and may be platform-dependent.
<span class=note>It is often rendered as a green wavy underline.</span>
</dl>
Note: In <a>vertical writing modes</a>,
'text-underline-position' can cause the underline and overline to switch sides.
This allows the position of underlines to key off of language-specific preferences
automatically.
Since ''spelling-error'' and ''grammar-error'' decorations are entirely UA-defined,
the UA <em>may</em> disregard
the other <a>sub-properties</a> of 'text-decoration',
as well any other properties typically affecting the appearance of line decorations
(such as 'text-underline-position', 'color', 'stroke', or 'fill')
when rendering these decorations.
However,
to the extent that honoring any of these properties
would be meaningful and practical
given the UA's chosen rendering,
the UA <em>should</em> apply them
as modifications to its default styling.
<h3 id="text-decoration-width-property">
Text Decoration Line Thickness: the 'text-decoration-width' property</h3>
<pre class="propdef">
Name: text-decoration-width
Value: auto | from-font | <<length>>
Initial: auto
Applies to: all elements
Inherited: no
Percentages: N/A
Computed value: specified keyword or absolute length
Animation type: by computed value
</pre>
This property, which is also a <a>sub-property</a> of the 'text-decoration' shorthand,
sets the stroke thickness of underlines, overlines, and line-throughs.
Values have the following meanings:
<dl dfn-for=text-decoration-width dfn-type=value>
<dt><dfn>auto</dfn>
<dd>
The UA chooses an appropriate thickness for text decoration lines;
see below.
<dt><dfn>from-font</dfn>
<dd>
If the <a>first available font</a> has
metrics indicating a preferred underline width,
use that width,
otherwise behaves as ''text-decoration-width/auto''.
<dt><dfn><<length>></dfn>
<dd>
Specifies the thickness of text decoration lines as a length.
The UA must floor the actual value at one device pixel.
Authors are strongly encouraged to use ''em'' units
so that the line thickness scales with the font.
</dl>
<h4 id="text-decoration-thickness">
Automatic Thickness of Text Decoration Lines</h4>
Issue: Insert L3 text here.
<h3 id="line-position">
Determining the Position and Thickness of Line Decorations</h3>
Issue: This section is copied over from early drafts of Text Decoration Level 3.
It is still under review, and needs integration with 'text-underline-offset' and 'text-decoration-width'.
<p>Since line decorations can span elements with varying font sizes and
vertical alignments, the best position for a line decoration is not
necessarily the ideal position dictated by the <a>decorating box</a>.
Instead, it's calculated, per line, from all text decorated by the <a>decorating box</a> on that line,
the <dfn>considered text</dfn>.
However, descendants of the <a>decorating box</a>
that are skipped due to 'text-decoration-skip',
descendant inlines with ''text-decoration-skip: ink'',
and any descendants that do not participate in the <a>decorating box</a>’s inline formatting context
are excluded from the set of <a>considered text</a>.
<p>
The line decoration positions are then calculated
per line
as follows
(treating <a>over</a>-positioned underlines</a> as <a>over</a> lines
and <a>under</a>-positioned overlines</a> as <a>under</a> lines):
<dl>
<dt><a>over</a> lines
<dd>
Align the line decoration with respect to the highest
<a>over</a> EM-box edge
of the <a>considered text</a>.
<dt><a>alphabetic</a> underlines
<dd>
<p>The alphabetic underline position is calculated by taking
the ideal offset (from the alphabetic baseline) of each run of <a>considered text</a>,
averaging those, and then using the lowest alphabetic baseline to actually position the line.
(Alphabetic baselines can differ between ''vertical-align/baseline''-aligned boxes
if the dominant baseline is non-alphabetic.)
To prevent superscripts and subscripts from throwing this position off-kilter,
an inline with a non-initial computed 'vertical-align'
is treated as having the ideal underline position of its parent.
<dt>non-alphabetic <a>under</a> lines
<dd>
Position the line decoration with respect to the lowest
<a>under</a> EM-box edge
of the <a>considered text</a>.
<dt>line-throughs
<dd>
Line-throughs essentially use the same sort of averaging as for alphabetic underlines,
but recompute the position when drawing across a descendant with a different computed 'font-size'.
(This ensures that the text remains effectively “crossed out” despite any font size changes.)
For each run of <a>considered text</a> with the same 'font-size',
compute an ideal position averaged from its font metrics.
To prevent superscripts and subscripts from throwing this position off-kilter,
an inline with a non-initial computed 'vertical-align'
is treated as having the ideal underline position of its parent.
Position the portion of the line across each decorated fragment at that position.
<p class='issue'>
For simplicity, line-throughs should draw over each element at that element's preferred/averaged position.
This can produce some undesirable jumpiness,
but there doesn't appear to be any way to avoid that which is correct in all instances,
and all attempts are worryingly complex.
What position should line-throughts adopt over elements that have a different font-size,
but no <a>considered text</a>?
</dl>
<p>
CSS does not define the thickness of line decorations.
In determining the thickness of text decoration lines,
user agents may consider the font sizes, faces, and weights of descendants
to provide an appropriately averaged thickness.
<div class="example">
<p>The following figure shows the averaging for underline:
<p><img alt="In the first rendering of the underlined text '1st a'
with 'st' as a superscript, both the '1st' and the 'a'
are rendered in a small font. In the second rendering,
the 'a' is rendered in a larger font. In the third, both
'1st' and 'a' are large."
height="105" src="images/underline-averaging.gif" width="326">
<p>In the three fragments of underlined text, the underline is drawn
consecutively lower and thicker as the ratio of large text to small
text increases.</p>
<p>Using the same example, a line-through would in the second fragment,
instead of averaging the two font sizes,
split the line-through into two segments:
<p><img alt="" src="images/linethrough-averaging.gif">
<p>In both cases, however, the superscript, due to the vertical-alignment shift,
has no effect on the position of the line.
</div>
<h3 id="underline-offset">
Text Underline Offset: the 'text-underline-offset' property</h3>
<pre class="propdef">
Name: text-underline-offset
Value: auto | from-font | <<length>>
Initial: auto
Applies to: all elements
Inherited: yes
Percentages: N/A
Computed value: specified keyword or absolute length
Animation type: by computed value
</pre>
This property, which is <em>not</em> a <a>sub-property</a> of the 'text-decoration' shorthand,
sets the offset of underlines from their initial position.
Values have the following meanings:
<dl dfn-for=text-underline-offset dfn-type=value>
<dt><dfn>auto</dfn>
<dd>
The UA chooses an appropriate offset for underlines.
<dt><dfn>from-font</dfn>
<dd>
If the <a>first available font</a> has
metrics indicating a preferred underline offset,
use that offset,
otherwise behaves as ''text-underline-offset/auto''.
<dt><dfn><<length>>
<dd>
Specifies the offset of underlines as a length.
This replaces any information in the font
or derived from glyph shapes / character ranges.
Authors are strongly encouraged to use ''em'' units
so that the offset scales with the font.
</dl>
The initial position of the underline depends on the value of 'text-underline-position'
as detailed below.
<table class="data">
<caption>Interaction of 'text-underline-position' and 'text-underline-offset'
<thead>
<tr>
<th>'text-underline-position'
<th>Initial Position
<th>Positive Direction
<tbody>
<tr>
<td>''text-underline-position/auto''
<td>alphabetic baseline
<td><a>over</a>
<tr>
<td>''text-underline-position/under''
<td>text-under edge
<td><a>over</a>
<tr>
<td>''text-underline-position/over''
<td>text-over edge
<td><a>under</a>
</table>
<ul>
<li>The line is aligned to the outside of the specified position.
(Below for ''text-underline-position/under''/''text-underline-position/auto'' positions,
above for ''text-underline-position/over''.)
<li>Positive lengths represent inward distances; negative lengths outward.
<li>Automatic adjustments made to accommodate descendant content are maintained;
the 'text-underline-offset' is in addition to those.
<span class="issue">Should this be removed?</span>
</ul>
When the value of the 'text-decoration-line' property is either
''spelling-error'' or ''grammar-error'',
the UA may ignore the value of 'text-underline-position'.
<h3 id="text-decoration-skipping">
Text Decoration Line Continuity</h3>
<h4 id="text-decoration-skip-property">
Text Decoration Line Continuity: the 'text-decoration-skip' property</h4>
<pre class="propdef">
Name: text-decoration-skip
Value: none | [ objects || [ spaces | [ leading-spaces || trailing-spaces ] ] || edges || box-decoration ]
Initial: objects leading-spaces trailing-spaces
Applies to: all elements
Inherited: yes
Percentages: N/A
Computed value: specified keyword(s)
Animation type: discrete
</pre>
Issue: The initial value is quite verbose,
which makes it inconvenient to set the property
to the initial value plus something else.
We should make this easier to specify.
Issue: This property will be split into individual properties
along the lines of 'text-decoration-skip-ink',
to improve its cascading behavior.
See <a href="https://github.com/w3c/csswg-drafts/issues/843">discussion</a>
and <a href="https://lists.w3.org/Archives/Public/www-style/2017Feb/0049.html">resolution</a>.
This property specifies what parts of the element's content
any text decoration affecting the element must skip over. It
controls all text decoration lines drawn by the element
and also any text decoration lines drawn by its ancestors.
Values have the following meanings:</p>
<dl>
<dt><dfn value for="text-decoration-skip">none</dfn></dt>
<dd>
Skip nothing: text-decoration is drawn for all text content
and across atomic inline-level boxes.</dd>
<dt><dfn value for="text-decoration-skip">objects</dfn></dt>
<dd>
Skip this element (its entire margin box) if it is an atomic inline
(such as an image or inline-block).
<dt><dfn value for="text-decoration-skip">spaces</dfn></dt>
<dd>
Skip all spacing, i.e. all <a>typographic character units</a> with the Unicode White_Space property [[UAX44]],
plus any adjacent 'letter-spacing' or 'word-spacing'.
<dt><dfn value for="text-decoration-skip">edges</dfn></dt>
<dd>
The UA should place the start and end of the line inwards slightly
(e.g. by half a line thickness)
from the content edge of the <a>decorating box</a> so that,
e.g. two underlined elements side-by-side do not appear to have a single underline.
(This is important in Chinese, where underlining is a form of punctuation.)
<div class="figure">
<p><img title="text-decoration-skip: edges"
alt="An underline below a series of Chinese characters has a gap between two adjacent underlining elements."
src="images/decoration-skip-edges.png"
>
<p class="caption">''text-decoration-skip: edges'' for <code><u>石井</u><u>艾俐俐</u></code>
</p>
</div>
<dt><dfn value for="text-decoration-skip">box-decoration</dfn>
<dd>
Skip over the box's margin, border, and padding areas.
Note that this only has an effect on decorations imposed by an ancestor;
a <a>decorating box</a> never draws over its own box decoration.
<dt><dfn>leading-spaces</dfn></dt>
<dd>
Skip all spacing,
i.e. all <a>typographic character units</a> with the Unicode White_Space property [[UAX44]]
and all <a href="https://www.w3.org/TR/css3-text/#word-separator">word separators</a>
plus any adjacent 'letter-spacing' or 'word-spacing',
when located at the start of the line.
<dt><dfn>trailing-spaces</dfn></dt>
<dd>
Skip all spacing,
i.e. all <a>typographic character units</a> with the Unicode White_Space property [[UAX44]]
and all <a href="https://www.w3.org/TR/css3-text/#word-separator">word separators</a>
plus any adjacent 'letter-spacing' or 'word-spacing',
when located at the end of the line.
</dl>
<p class="note">Note that this property inherits and that descendant
elements can have a different setting.</p>
The following addition is made to the default UA stylesheet for HTML:
<pre><code class="lang-css">
ins, del { text-decoration-skip: none; }
</code></pre>
When the value of the 'text-decoration-line' property is either
''spelling-error'' or ''grammar-error'',
the UA may ignore the value of 'text-decoration-skip'.
<h4 id="text-decoration-skip-ink-property">
Text Decoration Line Continuity: the 'text-decoration-skip-ink' property</h4>
<pre class="propdef">
Name: text-decoration-skip-ink
Value: auto | none
Initial: ''auto''
Applies to: all elements
Inherited: yes
Percentages: N/A
Computed value: specified keyword
Animation type: discrete
</pre>
This property controls how overlines and underlines are drawn
when they cross over a glyph.
When enabled, decoration lines skip over where glyphs are drawn:
interrupt the decoration line to let the shape of the text show through
where the text decoration would otherwise cross over a glyph.
The UA must also skip a small distance to either side of the glyph outline.
<div class="figure">
<p><img title="text-decoration-skip: ink"
alt="An alphabetic underline through Myanmar text skips around descenders and the vertical strokes of combining characters that drop below the alphabetic baseline."
src="images/decoration-skip-ink.png"
>
<p class="caption">''text-decoration-skip: ink''</p>
</div>
<div class="issue">
Ideographic scripts do not want to skip when ''text-decoration-skip-ink/auto''.
How can we define this behavior?
Are there more scripts wanting not to skip?
Need some normative text describe how ''text-decoration-skip-ink/auto'' works.
See
<a href="https://lists.w3.org/Archives/Public/www-style/2017Feb/0069.html">telcon minutes</a>,
<a href="https://github.com/w3c/alreq/issues/86">alreq#86</a>,
<a href="https://github.com/w3c/csswg-drafts/issues/1288">csswg#1288</a>
</div>
This property only applies to overlines and underlines;
line-throughs are unaffected.
<dl>
<dt><dfn value for="text-decoration-skip-ink">auto</dfn></dt>
<dd>
UA should skip over where glyphs are drawn.
<dt><dfn value for="text-decoration-skip-ink">none</dfn></dt>
<dd>
UA must draw contiguous lines without interruptions,
even when they cross over a glyph.
</dl>
<h2 id="text-shadow-property">
Additional Controls for Text Shadows</h2>
Level 4 adds a spread radius argument to 'text-shadow',
using the same syntax and interpretation as for 'box-shadow',
except that corners are always rounded
(since the geometry of a glyph is not so simple as a box).
<h2 id="emphasis-marks">
Additional Controls for Emphasis Marks</h2>
Issue: See also <a href="https://github.com/w3c/csswg-drafts/issues/1892">issue about continuity in size/position</a>.
<h3 id="text-emphasis-skip">
Emphasis Mark Skip: the 'text-emphasis-skip' property</h3>
<p class="issue">This section is under brainstorming.
It's also not yet clear if this property is needed quite yet, despite differences in desired behavior among publications.
<pre class="propdef">
Name: text-emphasis-skip
Value: spaces || punctuation || symbols || narrow
Initial: spaces punctuation
Applies to: all elements
Inherited: yes
Percentages: N/A
Computed value: specified keyword(s)
Animation type: discrete
</pre>
This property describes for which characters marks are drawn.
The values have following meanings:
<dl for=text-emphasis-skip type=value>
<dt><dfn>spaces</dfn>
<dd>
Skip <a href="https://www.w3.org/TR/css-text/#word-separator">word separators</a> or other <a>characters</a>
belonging to the Unicode separator category (Z*).
(But note that emphasis marks <em>are</em> drawn for a space
that combines with any combining characters.)
<dt><dfn>punctuation</dfn>
<dd>
Skip punctuation.
Punctuation in this definition includes characters belonging to
the Unicode P* category
that are not defined as ''symbols'' (see below).
<dt><dfn>symbols</dfn>
<dd>Skip symbols.
Symbols in this definition includes
all <a>typographic character units</a> belonging to
the Unicode S* <a>general category</a>
as well as any which are <code>NFKD</code>-equivalent [[!UAX15]]
to the following <a>characters</a> from the Unicode Po category:
<table class="data">
<tr><td># <td>U+0023 <td>NUMBER SIGN
<tr><td>% <td>U+0025 <td>PERCENT SIGN
<tr><td>‰ <td>U+2030 <td>PER MILLE SIGN
<tr><td>‱ <td>U+2031 <td>PER TEN THOUSAND SIGN
<tr><td>٪ <td>U+066A <td>ARABIC PERCENT SIGN
<tr><td>؉ <td>U+0609 <td>ARABIC-INDIC PER MILLE SIGN
<tr><td>؊ <td>U+060A <td>ARABIC-INDIC PER TEN THOUSAND SIGN
<tr><td>& <td>U+0026 <td>AMPERSAND
<tr><td>⁊ <td>U+204A <td>TIRONIAN SIGN E[[
<tr><td>@ <td>U+0040 <td>COMMERCIAL AT
<tr><td>§ <td>U+00A7 <td>SECTION SIGN
<tr><td>¶ <td>U+00B6 <td>PILCROW SIGN
<tr><td>⁋ <td>U+204B <td>REVERSED PILCROW SIGN
<tr><td>⁓ <td>U+2053 <td>SWUNG DASH
<tr><td>〽️ <td>U+303D <td>PART ALTERNATION MARK
</table>
<dt><dfn>narrow</dfn>
<dd>Skip characters where the <code>East_Asian_Width</code> property [[!UAX11]]
of the Unicode database [[!UAX44]] is not F (Fullwidth) or W (Wide).
</dl>
Characters belonging to the Unicode classes for control codes
and unassigned characters (Cc, Cf, Cn) are skipped
regardless of the value of this property.
<p class="issue">This syntax requires UA to implement drawing marks for spaces.
Is there any use case for doing so?
If not, should we modify the syntax not to allow drawing marks for spaces?
Issue: See also <a href="https://github.com/w3c/csswg-drafts/issues/839">discussion of the initial value</a>.
<!--
Some notes from Koji :
Here's what Kobayashi-sensei and I've got.
We have categorized to:
1. Controls
2. Spaces
3. Connectors
4. Symbols
5. Delimiters
>From these groups, his recommendation is not to put emphasis marks to any of these by default, including symbols.
1 is C* except Co as we discussed, and 2 is Z*. These are easy.
3: Connectors are Pc and Pd, plus U+30FB KATAKANA MIDDLE DOT. They are used to "connect", rather than "delimit".
4: Symbols include more than we have in the spec; #, &, %, @, $, ...
5: Delimiters are comma, full-stops, parenthesis, etc.; they're used to "delimit".
Category Po is tough one, as I expected (and you might as well I guess :). By looking at his examples, it has 3, 4, and 5, all mixed.
Here're options I came up:
OPTION 1: Categorize every code point of Po (there are 402) into 3, 4, and 5, and list them up in the spec.
OPTION 2: UAX #29 Text Segmentation: Sentence=Close|ATerm|SContinue|STerm are 5, in addition to Ps, Pe, Pi, Pf, and other Po are 4.
OPTION 3: More simplified; just make all Po as 4: Symbols. It includes full-stops for instance which is not ideal, but simple. Either way, default is ok (if we make symbols to skip by default as Kobayashi-sensei suggested.)
My preference is OPTION 2, I'm ok with 3. I don't like 1. What do you think?
U+30FB still cannot be handled, so we could make it as the only exception, but I think just ignoring it is also acceptable (authors still can specify "keep-symbol" to put emphasis marks on them.)
Three more things I'd like to have your opinions:
1. Name of value for "connectors": connectors, dashes, hyphens?
2. What do you think to skip-narrow by default? I have no idea how common emphasis marks for Tibetan is, but his definition includes skip-narrow.
3. If we take Kobayashi-sensei's list, skip-symbols is also default, so most values other than skip-narrow is "keep-*". Maybe we should change property name?
I'm copying all Sentence=Close|ATerm|SContinue|STerm for your reference, but you can play with the spreadsheet either on Windows Live or Google docs if you'd like:
http://cid-1dfc0a803975458e.office.live.com/edit.aspx/.Public/Unicode.xlsx
https://spreadsheets.google.com/ccc?key=0Ai2NamWX-WptdGpGZW9BdkhnVkVTTXFpMzhQTEloZ2c
0021 EXCLAMATION MARK Po STerm
0022 QUOTATION MARK Po Close
0027 APOSTROPHE Po Close
0028 LEFT PARENTHESIS Ps Close
0029 RIGHT PARENTHESIS Pe Close
002C COMMA Po SContinue
002D HYPHEN-MINUS Pd SContinue
002E FULL STOP Po ATerm
003A COLON Po SContinue
003F QUESTION MARK Po STerm
005B LEFT SQUARE BRACKET Ps Close
005D RIGHT SQUARE BRACKET Pe Close
007B LEFT CURLY BRACKET Ps Close
007D RIGHT CURLY BRACKET Pe Close
00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK Pi Close
00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK Pf Close
055C ARMENIAN EXCLAMATION MARK Po STerm
055D ARMENIAN COMMA Po SContinue
055E ARMENIAN QUESTION MARK Po STerm
0589 ARMENIAN FULL STOP Po STerm
060C ARABIC COMMA Po SContinue
060D ARABIC DATE SEPARATOR Po SContinue
061F ARABIC QUESTION MARK Po STerm
06D4 ARABIC FULL STOP Po STerm
0700 SYRIAC END OF PARAGRAPH Po STerm
0701 SYRIAC SUPRALINEAR FULL STOP Po STerm
0702 SYRIAC SUBLINEAR FULL STOP Po STerm
07F8 NKO COMMA Po SContinue
07F9 NKO EXCLAMATION MARK Po STerm
0964 DEVANAGARI DANDA Po STerm
0965 DEVANAGARI DOUBLE DANDA Po STerm
0F3A TIBETAN MARK GUG RTAGS GYON Ps Close
0F3B TIBETAN MARK GUG RTAGS GYAS Pe Close
0F3C TIBETAN MARK ANG KHANG GYON Ps Close
0F3D TIBETAN MARK ANG KHANG GYAS Pe Close
104A MYANMAR SIGN LITTLE SECTION Po STerm
104B MYANMAR SIGN SECTION Po STerm
1362 ETHIOPIC FULL STOP Po STerm
1367 ETHIOPIC QUESTION MARK Po STerm
1368 ETHIOPIC PARAGRAPH SEPARATOR Po STerm
166E CANADIAN SYLLABICS FULL STOP Po STerm
169B OGHAM FEATHER MARK Ps Close
169C OGHAM REVERSED FEATHER MARK Pe Close
1735 PHILIPPINE SINGLE PUNCTUATION Po STerm
1736 PHILIPPINE DOUBLE PUNCTUATION Po STerm
1802 MONGOLIAN COMMA Po SContinue
1803 MONGOLIAN FULL STOP Po STerm
1808 MONGOLIAN MANCHU COMMA Po SContinue
1809 MONGOLIAN MANCHU FULL STOP Po STerm
1944 LIMBU EXCLAMATION MARK Po STerm
1945 LIMBU QUESTION MARK Po STerm
1AA8 TAI THAM SIGN KAAN Po STerm
1AA9 TAI THAM SIGN KAANKUU Po STerm
1AAA TAI THAM SIGN SATKAAN Po STerm
1AAB TAI THAM SIGN SATKAANKUU Po STerm
1B5A BALINESE PANTI Po STerm
1B5B BALINESE PAMADA Po STerm
1B5E BALINESE CARIK SIKI Po STerm
1B5F BALINESE CARIK PAREREN Po STerm
1C3B LEPCHA PUNCTUATION TA-ROL Po STerm
1C3C LEPCHA PUNCTUATION NYET THYOOM TA-ROL Po STerm
1C7E OL CHIKI PUNCTUATION MUCAAD Po STerm
1C7F OL CHIKI PUNCTUATION DOUBLE MUCAAD Po STerm
2013 EN DASH Pd SContinue
2014 EM DASH Pd SContinue
2018 LEFT SINGLE QUOTATION MARK Pi Close
2019 RIGHT SINGLE QUOTATION MARK Pf Close
201A SINGLE LOW-9 QUOTATION MARK Ps Close
201B SINGLE HIGH-REVERSED-9 QUOTATION MARK Pi Close
201C LEFT DOUBLE QUOTATION MARK Pi Close
201D RIGHT DOUBLE QUOTATION MARK Pf Close
201E DOUBLE LOW-9 QUOTATION MARK Ps Close
201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK Pi Close
2024 ONE DOT LEADER Po ATerm
2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK Pi Close
203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK Pf Close
203C DOUBLE EXCLAMATION MARK Po STerm
203D INTERROBANG Po STerm
2045 LEFT SQUARE BRACKET WITH QUILL Ps Close
2046 RIGHT SQUARE BRACKET WITH QUILL Pe Close
2047 DOUBLE QUESTION MARK Po STerm
2048 QUESTION EXCLAMATION MARK Po STerm
2049 EXCLAMATION QUESTION MARK Po STerm
207D SUPERSCRIPT LEFT PARENTHESIS Ps Close
207E SUPERSCRIPT RIGHT PARENTHESIS Pe Close
208D SUBSCRIPT LEFT PARENTHESIS Ps Close
208E SUBSCRIPT RIGHT PARENTHESIS Pe Close
2329 LEFT-POINTING ANGLE BRACKET Ps Close
232A RIGHT-POINTING ANGLE BRACKET Pe Close
275B HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT So Close
275C HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT So Close
275D HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT So Close
275E HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT So Close
2768 MEDIUM LEFT PARENTHESIS ORNAMENT Ps Close
2769 MEDIUM RIGHT PARENTHESIS ORNAMENT Pe Close
276A MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT Ps Close
276B MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT Pe Close
276C MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT Ps Close
276D MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT Pe Close
276E HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT Ps Close
276F HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT Pe Close
2770 HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT Ps Close
2771 HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT Pe Close
2772 LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT Ps Close
2773 LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT Pe Close
2774 MEDIUM LEFT CURLY BRACKET ORNAMENT Ps Close
2775 MEDIUM RIGHT CURLY BRACKET ORNAMENT Pe Close
27C5 LEFT S-SHAPED BAG DELIMITER Ps Close
27C6 RIGHT S-SHAPED BAG DELIMITER Pe Close
27E6 MATHEMATICAL LEFT WHITE SQUARE BRACKET Ps Close
27E7 MATHEMATICAL RIGHT WHITE SQUARE BRACKET Pe Close
27E8 MATHEMATICAL LEFT ANGLE BRACKET Ps Close
27E9 MATHEMATICAL RIGHT ANGLE BRACKET Pe Close
27EA MATHEMATICAL LEFT DOUBLE ANGLE BRACKET Ps Close
27EB MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET Pe Close
27EC MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET Ps Close
27ED MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET Pe Close
27EE MATHEMATICAL LEFT FLATTENED PARENTHESIS Ps Close
27EF MATHEMATICAL RIGHT FLATTENED PARENTHESIS Pe Close
2983 LEFT WHITE CURLY BRACKET Ps Close
2984 RIGHT WHITE CURLY BRACKET Pe Close
2985 LEFT WHITE PARENTHESIS Ps Close
2986 RIGHT WHITE PARENTHESIS Pe Close
2987 Z NOTATION LEFT IMAGE BRACKET Ps Close
2988 Z NOTATION RIGHT IMAGE BRACKET Pe Close
2989 Z NOTATION LEFT BINDING BRACKET Ps Close
298A Z NOTATION RIGHT BINDING BRACKET Pe Close
298B LEFT SQUARE BRACKET WITH UNDERBAR Ps Close
298C RIGHT SQUARE BRACKET WITH UNDERBAR Pe Close
298D LEFT SQUARE BRACKET WITH TICK IN TOP CORNER Ps Close
298E RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER Pe Close
298F LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER Ps Close
2990 RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER Pe Close
2991 LEFT ANGLE BRACKET WITH DOT Ps Close
2992 RIGHT ANGLE BRACKET WITH DOT Pe Close
2993 LEFT ARC LESS-THAN BRACKET Ps Close
2994 RIGHT ARC GREATER-THAN BRACKET Pe Close
2995 DOUBLE LEFT ARC GREATER-THAN BRACKET Ps Close
2996 DOUBLE RIGHT ARC LESS-THAN BRACKET Pe Close
2997 LEFT BLACK TORTOISE SHELL BRACKET Ps Close
2998 RIGHT BLACK TORTOISE SHELL BRACKET Pe Close
29D8 LEFT WIGGLY FENCE Ps Close
29D9 RIGHT WIGGLY FENCE Pe Close
29DA LEFT DOUBLE WIGGLY FENCE Ps Close
29DB RIGHT DOUBLE WIGGLY FENCE Pe Close
29FC LEFT-POINTING CURVED ANGLE BRACKET Ps Close
29FD RIGHT-POINTING CURVED ANGLE BRACKET Pe Close
2E00 RIGHT ANGLE SUBSTITUTION MARKER Po Close
2E01 RIGHT ANGLE DOTTED SUBSTITUTION MARKER Po Close
2E02 LEFT SUBSTITUTION BRACKET Pi Close
2E03 RIGHT SUBSTITUTION BRACKET Pf Close
2E04 LEFT DOTTED SUBSTITUTION BRACKET Pi Close
2E05 RIGHT DOTTED SUBSTITUTION BRACKET Pf Close
2E06 RAISED INTERPOLATION MARKER Po Close
2E07 RAISED DOTTED INTERPOLATION MARKER Po Close
2E08 DOTTED TRANSPOSITION MARKER Po Close
2E09 LEFT TRANSPOSITION BRACKET Pi Close
2E0A RIGHT TRANSPOSITION BRACKET Pf Close
2E0B RAISED SQUARE Po Close
2E0C LEFT RAISED OMISSION BRACKET Pi Close
2E0D RIGHT RAISED OMISSION BRACKET Pf Close
2E1C LEFT LOW PARAPHRASE BRACKET Pi Close
2E1D RIGHT LOW PARAPHRASE BRACKET Pf Close
2E20 LEFT VERTICAL BAR WITH QUILL Pi Close
2E21 RIGHT VERTICAL BAR WITH QUILL Pf Close
2E22 TOP LEFT HALF BRACKET Ps Close
2E23 TOP RIGHT HALF BRACKET Pe Close
2E24 BOTTOM LEFT HALF BRACKET Ps Close
2E25 BOTTOM RIGHT HALF BRACKET Pe Close
2E26 LEFT SIDEWAYS U BRACKET Ps Close
2E27 RIGHT SIDEWAYS U BRACKET Pe Close
2E28 LEFT DOUBLE PARENTHESIS Ps Close
2E29 RIGHT DOUBLE PARENTHESIS Pe Close
2E2E REVERSED QUESTION MARK Po STerm
3001 IDEOGRAPHIC COMMA Po SContinue
3002 IDEOGRAPHIC FULL STOP Po STerm
3008 LEFT ANGLE BRACKET Ps Close
3009 RIGHT ANGLE BRACKET Pe Close
300A LEFT DOUBLE ANGLE BRACKET Ps Close
300B RIGHT DOUBLE ANGLE BRACKET Pe Close
300C LEFT CORNER BRACKET Ps Close
300D RIGHT CORNER BRACKET Pe Close
300E LEFT WHITE CORNER BRACKET Ps Close
300F RIGHT WHITE CORNER BRACKET Pe Close
3010 LEFT BLACK LENTICULAR BRACKET Ps Close
3011 RIGHT BLACK LENTICULAR BRACKET Pe Close
3014 LEFT TORTOISE SHELL BRACKET Ps Close
3015 RIGHT TORTOISE SHELL BRACKET Pe Close
3016 LEFT WHITE LENTICULAR BRACKET Ps Close
3017 RIGHT WHITE LENTICULAR BRACKET Pe Close
3018 LEFT WHITE TORTOISE SHELL BRACKET Ps Close
3019 RIGHT WHITE TORTOISE SHELL BRACKET Pe Close
301A LEFT WHITE SQUARE BRACKET Ps Close
301B RIGHT WHITE SQUARE BRACKET Pe Close
301D REVERSED DOUBLE PRIME QUOTATION MARK Ps Close
301E DOUBLE PRIME QUOTATION MARK Pe Close
301F LOW DOUBLE PRIME QUOTATION MARK Pe Close
A4FF LISU PUNCTUATION FULL STOP Po STerm
A60E VAI FULL STOP Po STerm
A60F VAI QUESTION MARK Po STerm
A6F3 BAMUM FULL STOP Po STerm
A6F7 BAMUM QUESTION MARK Po STerm
A876 PHAGS-PA MARK SHAD Po STerm
A877 PHAGS-PA MARK DOUBLE SHAD Po STerm
A8CE SAURASHTRA DANDA Po STerm
A8CF SAURASHTRA DOUBLE DANDA Po STerm
A92F KAYAH LI SIGN SHYA Po STerm
A9C8 JAVANESE PADA LINGSA Po STerm
A9C9 JAVANESE PADA LUNGSI Po STerm
AA5D CHAM PUNCTUATION DANDA Po STerm
AA5E CHAM PUNCTUATION DOUBLE DANDA Po STerm
AA5F CHAM PUNCTUATION TRIPLE DANDA Po STerm
ABEB MEETEI MAYEK CHEIKHEI Po STerm
FD3E ORNATE LEFT PARENTHESIS Ps Close
FD3F ORNATE RIGHT PARENTHESIS Pe Close
FE10 PRESENTATION FORM FOR VERTICAL COMMA Po SContinue
FE11 PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA Po SContinue
FE13 PRESENTATION FORM FOR VERTICAL COLON Po SContinue
FE17 PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET Ps Close
FE18 PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET Pe Close
FE31 PRESENTATION FORM FOR VERTICAL EM DASH Pd SContinue
FE32 PRESENTATION FORM FOR VERTICAL EN DASH Pd SContinue
FE35 PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS Ps Close
FE36 PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS Pe Close
FE37 PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET Ps Close
FE38 PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET Pe Close
FE39 PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET Ps Close
FE3A PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET Pe Close
FE3B PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET Ps Close
FE3C PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET Pe Close
FE3D PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET Ps Close
FE3E PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET Pe Close
FE3F PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET Ps Close
FE40 PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET Pe Close
FE41 PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET Ps Close
FE42 PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET Pe Close
FE43 PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET Ps Close
FE44 PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET Pe Close
FE47 PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET Ps Close
FE48 PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET Pe Close
FE50 SMALL COMMA Po SContinue
FE51 SMALL IDEOGRAPHIC COMMA Po SContinue
FE52 SMALL FULL STOP Po ATerm
FE55 SMALL COLON Po SContinue
FE56 SMALL QUESTION MARK Po STerm
FE57 SMALL EXCLAMATION MARK Po STerm
FE58 SMALL EM DASH Pd SContinue
FE59 SMALL LEFT PARENTHESIS Ps Close
FE5A SMALL RIGHT PARENTHESIS Pe Close
FE5B SMALL LEFT CURLY BRACKET Ps Close
FE5C SMALL RIGHT CURLY BRACKET Pe Close
FE5D SMALL LEFT TORTOISE SHELL BRACKET Ps Close
FE5E SMALL RIGHT TORTOISE SHELL BRACKET Pe Close
FE63 SMALL HYPHEN-MINUS Pd SContinue
FF01 FULLWIDTH EXCLAMATION MARK Po STerm
FF08 FULLWIDTH LEFT PARENTHESIS Ps Close
FF09 FULLWIDTH RIGHT PARENTHESIS Pe Close
FF0C FULLWIDTH COMMA Po SContinue
FF0D FULLWIDTH HYPHEN-MINUS Pd SContinue
FF0E FULLWIDTH FULL STOP Po ATerm
FF1A FULLWIDTH COLON Po SContinue
FF1F FULLWIDTH QUESTION MARK Po STerm
FF3B FULLWIDTH LEFT SQUARE BRACKET Ps Close
FF3D FULLWIDTH RIGHT SQUARE BRACKET Pe Close
FF5B FULLWIDTH LEFT CURLY BRACKET Ps Close
FF5D FULLWIDTH RIGHT CURLY BRACKET Pe Close
FF5F FULLWIDTH LEFT WHITE PARENTHESIS Ps Close
FF60 FULLWIDTH RIGHT WHITE PARENTHESIS Pe Close
FF61 HALFWIDTH IDEOGRAPHIC FULL STOP Po STerm
FF62 HALFWIDTH LEFT CORNER BRACKET Ps Close
FF63 HALFWIDTH RIGHT CORNER BRACKET Pe Close
FF64 HALFWIDTH IDEOGRAPHIC COMMA Po SContinue
10A56 KHAROSHTHI PUNCTUATION DANDA Po STerm
10A57 KHAROSHTHI PUNCTUATION DOUBLE DANDA Po STerm
11047 BRAHMI DANDA Po STerm
11048 BRAHMI DOUBLE DANDA Po STerm
110BE KAITHI SECTION MARK Po STerm
110BF KAITHI DOUBLE SECTION MARK Po STerm
110C0 KAITHI DANDA Po STerm
110C1 KAITHI DOUBLE DANDA Po STerm
-->
Privacy and Security Considerations {#priv-sec}
===============================================
This specification introduces no new privacy or security considerations.