WD-css3-text-20021024 substantive comments

Following are substantive comments on the Working Draft,
"CSS3 module: text",
<http://www.w3.org/TR/2002/WD-css3-text-20021024>.



3.1. Text layout introduction


"(e.g., Roman scripts)" ... "(e.g., mixing Roman with Arabic)"

Change both occurrences of "Roman" to "Latin".


"For example, Roman scripts are typically written left to right"

Change "Roman" to "Latin".



3.2. Setting the inline and block progressions: the
'writing-mode' and direction' properties


"Sets the inline progression to left-to-right, and the block
progression to top-to-bottom as is common in most Roman-based
documents."

Change to "Sets the inline progression to left-to-right, and the
block progression to top-to-bottom, as is common in the Latin
script."


"Sets the inline progression to top-to-bottom, and the block
progression to right-to-left as is common in Asian scripts."

Devanagari, Arabic, Tamil, Thai, and Mongolian are all Asian
scripts; none of these normally proceed top-to-bottom and
right-to-left. Change to "Sets the inline progression to
top-to-bottom, and the block progression to right-to-left, as is
common in some East Asian scripts."  Or change "Asian scripts"
to "the Han script".


"tb-lr"
.. "The direction property is set to 'ltr'."

This writing mode is like 'rl-tb' turned 90 degrees
counterclockwise. So why is 'direction' set to 'ltr'?


"bt-lr"
.. "The direction property is set to 'rtl'."

This writing mode is like 'lr-tb' turned 90 degrees
counterclockwise. So why is 'direction' set to 'rtl'?


".hinv {writing-mode: lr-tb; display: inline-block;}
<span class="hinv">1996</span>"

The class name "hinv" is tied to presentation and should be
replaced by, for example, "date".


"The 'writing-mode' and 'direction' properties, when specified
for table column elements, are not inherited by cells in the
column since columns don't exist in the document tree."

Columns may exist in the document tree; in fact, columns must
exist in the document tree if one is setting properties on them.
That is not the issue. The issue is that the column elements are
never the ancestors of their constituent cell elements.


"As such, 'writing-mode' resets the 'direction' value.
Similarly, modifying 'direction' after 'writing-mode' changes
effectively the 'writing-mode' value to the opposite inline
progression."

In other words, a declaration of either property sets both
properties. This should be formally recognized, so that in the
following example, the computed 'writing-mode' value is 'rl-tb'.

e { writing-mode: lr-tb; direction: rtl; }



3.3. Glyph orientation within a text run: the
'glyph-orientation-vertical' and 'glyph-orientation-horizontal'
properties


"The glyph orientation relative to the inline progression is
determined automatically based on the Unicode character code of
the rendered character."

From a certain perspective, this is true, but the statement
fails to speak to the heart of the matter. It is the width
property of the character that determines the orientation of the
character's glyph. Is there a concern about confusing readers by
using "width" and "property" with meanings that differ from
their CSS meanings?


Following the example of the split between 'word-break-CJK' and
'word-break-inside', we should have
'glyph-orientation-vertical-wide' and
'glyph-orientation-vertical-narrow'. We can retain
'glyph-orientation-vertical' as a shorthand, its 'auto' value
setting 'glyph-orientation-vertical-wide' to '0deg' and
'glyph-orientation-vertical-narrow' to '90deg'.


"The user agent may round the value of the angle to the values
of glyph rotation supported by the user agent."

Does this affect the computed value?


"Name: glyph-orientation-horizontal"
..
"Applies to: all inline-level elements"

Why does 'glyph-orientation-horizontal' apply only to
inline-level elements?



4.5. Additional compression: The 'text-justify-trim' property


"i.e. the blank space within the character area itself"

Change "character" to "glyph".



5. Indentation: the 'text-indent' property


How does 'text-indent' interact with "text-align: center"? Is
the content of the first line centered within the area remaining
after the indentation is considered?



7.1. Text wrapping: the 'wrap-option' property


The focus on line feed characters (U+000A) is very tied to XML.
In SGML, for instance, the commonly preserved line break
character is carriage return (U+000D). And, looking to the
future, line separator (U+2028) will come to be the line break
character of choice, even if XML sticks to line feed. 


"a text wrap after the last character which can fit"

Change "character" to "glyph".



8.5. Text kerning: the 'kerning-mode' and
'kerning-pair-threshold' property


"Name: kerning-pair-threshold
Value: auto | <length>"

Should "<length>" be "<'font-size'>"?


"This property controls the font size threshold, above which
pair kerning would be active (if enabled)."

So if the font size equals the threshold, pair kerning is
inactive. Was this really the intent?


"<length> 
<font-size> threshold."

Change the prose to "Pair kerning is activated when the computed
font size exceeds the specified <length>."  Or is it the actual
font size that is compared?


 
9. Text decoration


Why do the property names start with "text-"? Is there some
danger that, say, "underline-style" would clash with a property
name from another module?


The "Applies to" fields in the property definitions should read
"all elements with and generated content with textual content",
yes?



9.1. Introduction


"Until CSS2, the only text decorations available were available
through the 'text-decoration' property exposing itself various
effects underline, overline, line-through, etc... and the
text-shadows property."

Change to "In CSS1 and in CSS2, the 'text-decoration' property
controls text decorations: underline, overline, line-through,
and blinking. CSS2 adds text shadows, which the 'text-shadow'
property controls."


"However the text-decoration property has some limitations
stemming from its syntax, which allows for multiple
'text-decoration' formatting effects to be specified at the same
time but it precludes finer control over each of those
formatting effects. More specifically, it offers no way to
control the color or line style of the underline, overline or
line-through."

Change to "However, the 'text-decoration' property has
limitations stemming from its syntax, precluding fine control
over each of those formatting effects. Specifically, it offers
no way to control the color or line style of the underline,
overline or line-through."


"The 'text-decoration' property itself is now a shorthand
property for all these new properties, but it only takes its own
set of values which affects all the other text decoration
properties."

Change to "The 'text-decoration' property itself is now a
shorthand property for all these new properties. However, the
'text-decoration' values are not composites built from the
values of constituent properties. Rather, 'text-decoration'
values come from a small set specific to the 'text-decoration'
shorthand property."


"If an element is empty or is a replaced element (e.g., the IMG
element in XHTML), user agents must ignore these properties.
Text content also excludes white space characters that are
collapsed during the white space processing."

There is no 'IMG' element type in XHTML: there is instead the
lower-case 'img'. Change the sentence to "If an element is empty
or is a replaced element (e.g., img elements in XHTML), user
agents must refrain from rendering text decorations on the
element. In deciding whether an element is empty, user agents
must ignore white-space characters that are collapsed during the
white-space processing."


"All these text decoration properties are not inherited, but
descendant boxes should be formatted with the same decoration
(e.g., they should all be underlined). The color of decorations
should remain the same even if descendant elements have
different 'color' values."

Why are these suggestions ("should") and not requirements
("must")?


"Finally, user agents may chose either to average thickness and
positions of the 'line' text-decorations based on the children
text size and baselines, or to ignore the text of children."

Change to "In determining the position of and thickness of text
decoration lines, user agents may consider the font sizes of and
dominant baselines of children. Of course, user agents may
ignore children in these determinations."


"Typically the underline superscript text segments are averaged,
while the subscript segments are not."

Change to "User agents typically consider superscript segments
but ignore subscript segments."


9.2. Text decoration style: the 'text-underline-style',
'text-line-through-style' and 'text-overline-style' properties


"thick
single  line using a greater line width."

This style is inadvisable. When we add properties to control
text decoration line width, this style will be redundant. Let's
approach width control in a thorough and proper way.

I propose the properties defined as follows.

Names:          text-underline-width,
                text-line-through-width,
                text-overline-width
Value:          auto | normal | <number>
                 | <length>| <percentage>
                | thin | medium | thick
Initial:        auto
Applies to:     all elements with and generated
                content with textual content
Inherited:      no
Percentages:    computed 'font-size'
Media:          visual
Computed value: <length>

Possible values:

auto
	The user agent may use any algorithm to determine the text
	decoration width. Implementors are encouraged to consider
	the font sizes and baselines of all affected text. The text
	decoration style should affect the resulting value (the
	style 'double', for instance, would typically produce a
	width greater than the style 'solid' produces)..
normal
	The text decoration width is the normal text decoration width
	for the nominal font. If no font characteristic exist for
	the width of the text decoration in question, the user agent
	should proceed as though 'auto' were specified.
<number>
	The text decoration width is the product of the <number> and
	the computed 'font-size'. If inherited, the inherited value
	is the <number> rather than the computed <length>.
<length>
	The text decoration width is the <length>.
<percentage>
	The text decoration width is the product of the <percentage>
	and the computed 'font-size'.
thin
	This value is equivalent to a <number> value kept by the user
	agent. The <number> must be constant throughout a given view
	of a document and should yield a thin line.
medium
	This value is equivalent to a <number> value kept by the user
	agent. The <number> must be constant throughout a given view
	of a document, must be greater than or equal to the 'thin'
	<number> and should yield a medium line.
thick
	This value is equivalent to a <number> value kept by the user
	agent. The <number> must be constant throughout a given view
	of a document, must be greater than or equal to the 'medium'
	<number> and should yield a thick line.



9.3. Text decoration color: the 'text-underline-color',
'text-line-through-color' and 'text-overline-color' properties


"Computed value: specified value (except for initial and
inherit)"

Why would 'auto' not compute to a <color>?


"The color of the underline is determined by the 'color'
property."

Change "underline" to "text decoration".



9.4. Text decoration mode: the 'text-underline-mode',
'text-line-through-mode' and 'text-overline-mode' properties


Is white-space the same for these properties as for other CSS
constructs? If so, somebody using, for example, U+3000
(ideographic space) is going to be sorely surprised.


The properties defined as follows, inspired by certain comments
on www-style [UNDERLINE-SKIP] [THAI-UNDERLINE] include and
exceed the functionality of the text decoration mode properties.

Names:          text-underline-skip,
                text-line-through-skip,
                text-overline-skip
Value:          none | [ white-space || [ strokes <length>? ] ]
Initial:        none
Applies to:     all elements with and generated
                content with textual content
Inherited:      no
Percentages:    N/A
Media:          visual
Computed value: specified value (except for initial and inherit)

Possible values:

none
	The text decoration is continuous.
white-space
	The text decoration skips white-space.
strokes
	The text decoration skips glyph strokes that cross it. If no
	<length> follows, the user agent may use any algorithm to
	determine the clearance to maintain around the strokes.
<length>
	The <length>, which must be non-negative, indicates the
	clearance to maintain around glyph strokes. User agents may
	impose a minimum and a maximum on actual values.



9.5. Other text decoration simple properties:
'text-underline-position' and 'text-blink'


I propose the properties defined as follows.

Names:          text-underline-position,
                text-line-through-position,
                text-overline-position
Value:          auto | normal |
                <baseline>? [ <number> | <length>
                              | <percentage> ]
                | <baseline>
Initial:        auto
Applies to:     all elements with and generated
                content with textual content
Inherited:      no
Percentages:    computed 'font-size'
Media:          visual
Computed value: <length>

The computed position specifies an offset from the
text-after-edge. Positive values are toward the text-before-edge
while negative values are away from the text-before-edge. A text
decoration is positioned so that its middle aligns with the
respective position.

Possible values:

auto
	The user agent may use any algorithm to determine the text
	decoration position. Implementors are encouraged to consider
	the font sizes and baselines of all affected text, as well
	as the text decoration width. The text decoration style may
	affect the resulting value.
normal
	The text decoration position is the normal text decoration
	position for the nominal font. If no font characteristic
	exists for the position of the text decoration in question,
	the user agent should proceed as though 'auto' were
	specified.
<baseline>
	The baseline identifier specifies a baseline position. If a
	term follows the baseline identifier, the baseline position
	is the position from which the following term specifies an
	offset. If no term follows, the computed baseline position
	is the text decoration position.
<length>
	If a <baseline> was specified, the text decoration position
	is the sum of the <baseline> position for the nominal font
	and the <length>. If no <baseline> was specified, the text
	decoration position is the <length>.
<percentage>
	If a <baseline> was specified, the text decoration position
	is the sum of the <baseline> position for the nominal font
	and the product of the <percentage> and the computed
	'font-size'. If no <baseline> was specified, the text
	decoration position is the product of the <percentage> and
	the computed 'font-size'.
<number>
	If a <baseline> was specified, the text decoration position
	is the sum of the <baseline> position for the nominal font
	and the product of the <number> and the computed
	'font-size'. If no <baseline> was specified, the text
	decoration position is the product of the <number> and the
	computed 'font-size'. If inherited, the inherited value is
	the specified value.


"Name: text-blink"
..
"Inherited: no"

	Why is this property not inherited? The 'text-blink' property
	is substantially different from the other text decoration
	properties. That the other properties are not inherited is a
	poor reason.


"blink
blink"

Change the description to "Produces blinking text, which
alternates between visible and invisible states at rates
determined by the user agent."


"Conforming CSS2 user agents are not required to support this
value."

That's great, but what about CSS3 user agents?



9.6. Text decoration shorthand properties: 'text-underline',
'text-line-through', 'text-overline-mode' and 'text-decoration'


"The 'text-underline' property is the shorthand for
'text-underline-style', 'text-underline-color',
'text-underline-mode' and 'text-underline-position'."

Add "Any constituent properties not explicitly assigned values
in a 'text-underline' declaration take their respective initial
values."


"The 'line-through' property is the shorthand for
'text-line-through-style', 'text-line-through-color' and
'text-line-through-mode'."

Presuming the status quo, change "'line-through'" to
"'text-line-through'". Add "Any constituent properties not
explicitly assigned values in a 'text-line-through' declaration
take their respective initial values."


"This 'text-overline' property is the shorthand for
'text-overline-style', 'text-overline-color' and
'text-overline-mode'."

Add "Any constituent properties not explicitly assigned values
in a 'text-underline' declaration take their respective initial
values."


"The 'text-decoration' shorthand sets the properties" ... "to
their default values"

Change "default" to "initial".


"All the sub-properties maintain their defaults."

Change "sub-properties" to "constituent properties". Change
"defaults" to "initial values".



9.7. Text shadows: the 'text-shadow' property 


I thought, following comments that Chris Lilly made
[TEXT-SHADOW] [BOX-SHADOW], that 'text-shadow' would be
deprecated or eliminated in favor of the far more flexible
'filter' property (with its excellent SVG pedigree). I favor its
elimination. Has the Working Group considered Chris's comments?


"Value: none | [<color> || <length> <length> <length>? ,]*
[<color> || <length> <length> <length>?]"

This grammar is faulty in its placement of the comma. Observe
that it permits the following declaration.

    text-shadow: red blue;

Observe that the grammar forbids the following declaration.

    text-shadow: 0.1em 0.1em red, -1em -1em blue;

Change the grammar as follows.

"Value: none | [<shadow> ,]* <shadow>"

Define <shadow> as follows.

"[<color> || <length> <length> <length>?]"

Incidentally, the 'box-shadow' property definition can use
<shadow>.


"Inherited: no"

Why is 'text-shadow' not inherited?


"Each shadow effect must specify a shadow offset"

If this is true then the value grammar is faultier still. Change
the definition of <shadow> as follows.

"[<color> <length> <length> <length>? | <length> <length>
<length>? <color>?]"


"A shadow offset is specified with two <length> values that
indicate the distance from the text. The first length value
specifies the horizontal distance to the right of the text. A
negative horizontal length value places the shadow to the left
of the text. The second length value specifies the vertical
distance below the text. A negative vertical length value places
the shadow above the text."

Change "values" to "terms" and the four occurrences of "value"
to "term". Change the last four occurrences of "length" to
"<length>".


"The exact algorithm for computing the blur effect is not
specified."

Add "If no blur radius is specified, the treatment is as if a
blur radius of zero were specified and the shadow has the same
size and shape as the glyphs that cast it."


"Such user agents should consider declarations that specify the
optional third parameter to be parser errors"

Change "optional third parameter" to "blur radius".


"A color value may optionally be specified before or after the
length values of the shadow effect. The color value will be used
as the basis for the shadow effect."

Change both occurrences of "value" to "term" and "values" to
"terms".



10.1. What is document grid?


"The grid behavior can be set on the line progression, on the
block progression or both."

Line progression is the same as block progression, as lines are
but a special type of block box. Change the sentence to "The
grid behavior can be set on the inline-progression-dimension, on
the block-progression-dimension or both."


"'line-height' of the block element set to the desired grid
block progression dimension value"

Eliminate "dimension".


"'text-height' which defines the inline box block progression
dimension. Depending on the content size, one or a multiple of
'line-height' will be necessary to accommodate a given inline
box content."

Change "inline box block progression dimension" to "block
progression value for inline boxes". Eliminate the last
occurrence of "content".


"The grid on the line progression is obtained by altering the
character advance width (or line progression) of inline
elements."

Change the first occurrence of "line progression" to
"inline-progression-dimension". Change "character" to "glyph".
Change the second occurrence of "line progression" to "inline
progression value".


"Adding extra space between each characters by using the
'letter-spacing' property."

Change "each characters" to "grapheme clusters".


"Giving a fixed advance width to ideograph characters only.
Other characters are spaced normally."

Change "ideograph characters" to "ideographic grapheme
clusters". Change "Other characters" to "other grapheme
clusters".


"Giving a fixed advance width to all characters, excepted
connected glyphs (like Arabic)."

Change "characters" to "grapheme clusters".



10.2. Line grid mode: the 'line-grid-mode' property


"ideograph"

"This mode applies in the following ways to the various
categories of character:"

"each wide-cell glyph (as well as narrow-cell kana) that can fit
within a single grid space is
rendered in the horizontal center of the grid space. The width
of the grid space is determined by the 'line-grid-progression'
setting."

"consecutive narrow-cell and connected glyphs are treated as a
single strip, which is then placed in the center of the smallest
number of grid spaces necessary for it to fit in. If a line
break occurs within such a strip, the strip is treated as two
separate strips whose individual placement follows the same
rules as those for a single strip."

"non-breakable objects (e.g. images) and wide-cell glyphs that
for some reason are wider than a single grid space, are each
centered within the smallest number of grid cells necessary for
it to fit in."

Change to the following.

"ideograph"

"Content is divided into units that we will call strips. Each
strip is horizontally centered within the smallest number of
grid spaces that can contain the strip."

"Each grapheme cluster with a wide base character is a strip.
Each grapheme cluster with a narrow kana character as its base
character is a strip. Each non-breakable object (e.g. an image)
is a strip."

"For other grapheme clusters the case is more complicated. Line
break characters form the boundaries of provisional strips. The
user agent attempts to fit each provisional strip in the grid
spaces remaining on the current line. If the current provisional
strip fits on the current line, the user agent proceeds to the
next line and the next provisional strip. If the current strip
(s1) does not fit in the grid spaces remaining on the current
line, the user agent finds the last line break opportunity in
s1, transfers all content after the line break opportunity to a
new strip (s2), and tries again to fit the current strip. The
user agent repeatedly transfers content in this manner from s1
to s2 until s1 either fits on the current line or has no more
line break opportunities. If the current line is not blank and
s1 does not fit in the grid spaces remaining on the current line
and s1 has no line break opportunities, the user agent combines
s1 and s2 into a single strip as they were originally, proceeds
to the next line and tries as before to fit the strip. If the
current line is blank or s1 fits in the grid spaces remaining on
the current line, the user agent proceeds to the next line and
uses s2 as the current strip."


"If a line break opportunity cannot be found in a text run going
over the line boundary, then that text run will be pushed down
to the next line and the last part of the previous line will be
left blank."

Eliminate this passage if adopting the change above.


"all"

"This type of grid can be used to achieve mono-spaced layout.
The layout rules are simple: all non-connected glyphs are
treated as equal, that is every glyph is centered within a
single grid space by default. Runs of connected glyphs are
treated as strips the same way as in 'ideograph' grid.
Justification or any other character-width changing behaviors
are disabled for the block element."

Change to the following.

"all"

"This type of grid can be used to achieve mono-spaced layout. As
with 'ideograph', content is divided into strips and each strip
is horizontally centered within the smallest number of grid
spaces that can contain the strip. The rules for determining
strips differ."

"Each grapheme cluster with a non-joining base character is a
strip. Each non-breakable object (e.g. an image) is a strip.
Each run of grapheme clusters with joining base characters that
join to each other is a strip."



10.3. Line grid progression: the 'line-grid-progression'
property


"Value: text-height | line-height | <length>"
"Initial: normal"

That initial value is not defined.


"This property affects the line progression of characters
subject to the fixed advance width as determined by the
'line-grid-mode' property."

Change to "This property determines the inline progression
dimension of grid spaces." Or, if not adopting that suggestion,
change "characters subject" to "characters which are subject".
This latter suggestion eliminates the possibility of the
misreading of the sentence as equivalent to "This property,
subject to the fixed advance width as determined by the
'line-grid-mode' property, affects the line progression of
characters."


"The computed value of the block element text-height is used."

What is 'text-height'?


"div.section1 { line-grid-progression: .5in }"

"would make each glyph in a horizontally laid out part of a
document rendered within 0.5 inch of horizontal space"

Change the prose to "The rule set above would make grid spaces
0.5 inches long in a div element in the section1 class. If the
element has horizontal flow, it would look like the following
(without the grid lines, which are shown for clarity)."


"Enlarged character grid applied to mixed text in horizontal
layout"

Eliminate "character".


"If the section's layout flow is vertical, then 0.5in becomes
the vertical distance between consecutive characters in a
column"

Change to "If the element has vertical flow, then 0.5 inches is
the vertical measure of each grid space".


"Enlarged character grid applied to mixed text in
vertical-ideographic layout"

Eliminate "character".



11.1. Capitalization: the 'text-transform' property


"The case mapping rules for the character repertoire specified
by the Unicode Standard 3.0 can be found on the Unicode
Consortium web site: http://www.unicode.org."

Proper references are needed and should be to the particular
data files,
<http://www.unicode.org/Public/UNIDATA/UnicodeData.txt> and
<http://www.unicode.org/Public/UNIDATA/SpecialCasing.txt>.



11.2. Hanging punctuation: the 'hanging-punctuation' property


"This property determines whether a punctuation mark, if one is
present, may be placed outside the content area in the padding
or margin area, at the start or at the end of a full line of
text."

Eliminate "in the padding or margin area,". After all, the
padding and margin in question may be of zero width.


"It is the responsibility of the style writer to create
meaningful padding and margin areas to allow effective rendering
of the punctuation."

If the hanging punctuation would be placed outside the margin
area, is the punctuation still rendered?


"A leading punctuation, if present, may overhang at the start of
the content area. It is placed in the padding or margin area."

"An ending punctuation, if present, may overhang at the end of
the content area. It is placed in the padding or margin area."

Reiterating the question above, what happens if the padding and
margin are zero?


"No hanging punctuation allowed (the punctuation and the
character preceding it shown in blue for clarity)"

Change to "No hanging punctuation allowed (the punctuation mark
and the glyph preceding it shown in blue and the right content
edge shown with dashed line for clarity)".


"Hanging punctuation appearing in the end of line padding area
(the punctuation and the character preceding it shown in blue
for clarity)"

Change to "Punctuation hanging at the end of line (the
punctuation and the glyph preceding it shown and the right
content edge shown with dashed line in blue for clarity)".


"Note: User agents should follow the convention of the scripts
for trimming either only the first lines or all lines. For
example, in Roman text, only a punctuation appearing at the
starting point of the first line may be placed outside the
content area."

I believe that this passage is too restrictive. In Latin text,
it is acceptable that punctuation overhang at the end of the
last line. Perhaps a change to the following will be
sufficiently correct.

"Note: User agents should follow script-specific and
language-specific conventions about which lines allow which
hanging punctuation. For example, in Latin text, a leading
punctuation mark may overhang only on the first line and a
trailing punctuation mark may overhang only on the last line."


11.3. Combining text: the 'text-combine' property'


'This property controls the creation of composite characters
(a.k.a. "kumimoji") or lines (a.k.a. "warichu").'

Change "characters" to "grapheme clusters".


"No composite characters are created."

Change to "Glyphs arrange normally."


"Combines glyphs to fit within the space of a single wide-cell
glyph, by reducing them in size and stacking them next to and/or
on top of each other. This effect is commonly used in Asian
typography."

Writing "East Asian" instead of "Asian" would be more accurate.


"No more than 5 glyphs can be combined at a time."

Change to "No more than five grapheme clusters can combine into
a unit."


"If the text to be combined results in a single glyph, no
special combination effect occurs."

Change to "If the text to be combined has only a single grapheme
cluster, no special combination effect occurs."


"The following texts shows the arrangement for 2, 3, 4 and 5
characters"

Change to "The following texts shows the arrangement for two,
three, four and five grapheme clusters."


"The following mark-up:"

"span.kumimoji { text-combine: letters }"

That is not markup but a styling rule.


"could make the following 4 characters appear as one (shown in
blue for clarity):"

The example calls for an overhaul. I suggest the following.

"Assume the following document."

"<doc>The word kumimoji, <span
class="kumimoji">&#x304F;&#x307F;&#x3082;&#x3058;</span>, is
Japanese.</doc>"

"Assume the following rule set."

"span.kumimoji { text-combine: none; }"

"The document would look like the following:"

[image with English text and hiragana]

[caption] "Mixed text layed out normally"

"Now assume the following rule set."

"span.kumimoji { text-combine: letters; }"

"The document would look like the following:"

[image with English text and with kumimoji of hiragana]

[caption] "Mixed text with kumimoji applied to four characters"


"The combined lines appear inline with the surrounding text."

This is false when the warichu element is a block-level element,
a situation that the 'Applies to' field allows. Correct the part
which is incorrect.


"The combination may be broken across several lines, each line
box representing its own logical subset of the combination."

This is unclear. Please restate.


"The following mark-up:"

"span.warichu { text-combine: lines }"

That is not markup but a styling rule.


"would make the enclosed text look like the following (shown in
blue for clarity):"

[image]

I suggest an example like the one suggested above.


12. Properties index


"text-shadow" ... [Inherited] "no (see prose)"

There is no prose in the property description that discusses
inheritance.



14. Profiles


"'text-align'" [Values] "left | right | center | justify"
[Initial] "start"

Change "start" to "depends on user agent and writing direction".
(CSS1 writes "UA specific".)


"'text-align'" [Values] "left | right | center | justify |
<string> | inherit" [Initial] "start"

Change "start" to "depends on user agent and writing direction",
as CSS2 writes.


"'text-decoration', in addition to its CSS2 behavior, becomes a
shorthand property for the following properties:
'text-line-through', 'text-overline', 'text-underline'"

The enumerated properties are themselves shorthand properties,
so 'text-decoration' actually sets  'text-line-through-color',
'text-line-through-mode', 'text-line-through-style',
'text-overline-color', 'text-overline-mode',
'text-overline-style', 'text-underline-color',
'text-underline-mode', 'text-underline-style', and
'text-underline-position'.


15. Glossary


"Hangul"
"Subset of the Korean writing system."

That is a spare description.  The following is a start on
something at least a bit more informative. "Subset of the Korean
writing system in which a few letters combine to form syllables.
Visually, each written syllable occupies the same amount of
space."


"Kashida"
"Arabic elongation character."

Change the description to "Any of a number of elongation glyphs
that sit on the alphabetic baseline; used in Arabic and Syriac.
Also a character (U+0640, "Arabic tatweel") used to indicate the
glyph."


"Subset of the Japanese writing system consisting of phonetic
characters used to represent Roman words."

Change "Roman" to "Western".


"Kumimoji"
"Composite character consisting of up to 5 characters that are
reduced in size and combined to fit within the space of a single
character."

Change the description to "Composition of two to five grapheme
clusters that are reduced in size an arranged to fit within the
space of a single wide-cell glyph."


"Logograph, Logogram"
"Character in the Chinese (or East Asian in general) writing
system that represents an entire word."

Change the description to "Character or glyph that represents an
entire word. Common in the Han script used in China, Japan, and
Korea."



Appendix A: Vertical Layout Effect on CSS Properties


"Underline appears on the left side of a vertical column and
overline appears on the right"

This is false on two counts: {writing mode: tb-lr} and
{text-underline-position: before-edge}.



Normative references


Why is [ISO15924] not listed as a normative reference? It
determines the valid values for 'text-script'.

Why is [UAX-11] not listed as a normative reference? It
determines the behavior of "glyph-orientation-vertical: auto".

Why is [XML1.0] not listed as a normative reference? It
determines which characters count as whitespace.


 
Other references


"[HTML40]"
..
"[HTML401]"

Seeing these references together, I have to wonder why HTML 4.01
alone is not enough. The sole reference to HTML 4.0 is in
section 11.1
(<http:/www.w3.org/TR/2002/WD-css3-text-20021024/text.html>):
"See HTML [HTML40] for ways to find the language of an HTML
element."





[UNDERLINE-SKIP]
Christoph P=E4per.
"Questions on CSS3 Module: Text - line".
21 October 2002.
<mid:003201c27944$73490ee0$3ef4ae8b@heim4.tuclausthal.de> /
<http://lists.w3.org/Archives/Public/www-style/2002Oct/0074.html>.

[THAI-UNDERLINE] 
Arthit Suriyawongkul.
"will CSS3 support styles of underline-skipping (for char with tail) ?"
8 November 2002.
<mid:3DCB6112.DC453267@Sun.COM> /
<http://lists.w3.org/Archives/Public/www-style/2002Nov/0018.html>.

[TEXT-SHADOW]
Chris Lilley
"Re: box-shadow)ext-shadow', 'box-shadow', and 'font-effect' (was Re:   Proposal:  box-shadow)"
5 October 2001.
<mid:3BBCECCF.47AADF47@w3.org> /
<http://lists.w3.org/Archives/Public/www-style/2001Oct/0038.html>.

[BOX-SHADOW]
Chris Lilley.
"Re: Proposal: box-shadow"
2 October 2001.
<mid:3BBA0E49.858D4174@w3.org> /
<http://lists.w3.org/Archives/Public/www-style/2001Oct/0019.html>.

Received on Friday, 31 January 2003 00:04:58 UTC