- From: Etan Wexler <ewexler@stickdog.com>
- Date: Tue, 4 Jun 2002 12:13:55 -0700
- To: www-style@w3.org
Following are comments on the CSS3 Line module Working Draft (<http://www.w3.org/TR/2002/WD-css3-linebox-20020515>). For each occurrence of the notation "<'property-name'>", link "'property- name'" to the respective definition. The use of quote marks needs standardization. If you were writing a style manual for W3C CSS documents, what would you write about single quote marks and double quote marks? What would you write about the omission of quote marks? The use of hyphenation needs standardization. The following terms are given with variations in hyphenation and a suggestion for the best choice. The list is probably incomplete. after-edge, after edge (suggested); alignment baseline (suggested), alignment-baseline; alignment point (suggested), alignment-point; baseline identifier (suggested), baseline-identifier; baseline-table, baseline table (suggested); baseline-table font-size, baseline-table font size (suggested); before-edge, before edge (suggested); block progression dimension (suggested), block-progression-dimension; block progression direction (suggested), block-progression-direction; dominant baseline (suggested), dominant-baseline; font size (suggested), font-size; line height (suggested), line-height; line stacking strategy (suggested), line-stacking-strategy; shift-direction, shift direction (suggested); start-edge, start edge (suggested); text-after-edge, text-after edge (suggested); text-before-edge, text-before edge (suggested); writing mode (suggested), writing-mode; Abstract "This document presents a set of CSS line formatting properties. It also includes baseline alignment features as well as related functions like initial line and initial letter effect. It extends on the CSS 2 model [CSS2]." Replace the last two sentences with the following. "It extends the CSS2 model. In addition to CSS2 functionality, this specification provides for baseline alignment features, initial line effects, and initial letter effects." 2. Introduction "This modules specifies the presentation aspects of line within block elements and inline elements." There are a few typing errors and the sentence is ambiguous. Replace with the appropriate one of the following. "This module specifies the presentation aspects of lines within block elements and within inline elements." -or- "This module specifies the presentation aspects of lines within block elements and of inline elements." "All described properties, in addition to the noted values, take 'initial' and 'inherit'." Change to "All described properties accept a keyword value of 'initial' or 'inherit' in addition to accepting the noted values.". "These values are not repeated in each of the property value enumeration." Insert "universal" between "These" and "values". Pluralize "enumeration" to make "enumerations". "This module uses extensively" Change to "This module extensively uses". "This notation is also used extensively in [XSL1.0] for the same purpose." What purpose is that? The preceding sentences failed to explain a purpose. Besides adding an explanation of that purpose, add too an explanation of the notation "(relative)". 3. Line box, Line stacking and Content height "This section describes inline boxes formatting" Change to "This section describes the formatting of inline boxes". 3.1. Inline formatting context "In an inline formatting context, boxes are laid out in the inline progression direction, one after the other, following the block progression within the containing block." Are the boxes going in the inline progression direction or in the block progression direction? This sentence is poorly worded. A possible replacement follows. "In an inline formatting context, boxes are laid out into lines. Within a line, inline boxes follow the inline progression direction. The lines stack upon each other in the block progression direction." "Borders, padding and inline progression margins are respected between these boxes." This sentence is confusing given the later prose. Do before and after borders and padding affect the block progression dimension of the line? The answer here seems to be yes but later is no. "The rectangular area that contains the boxes that form a line is called a line box." Change "boxes" to "areas", as a CSS box includes padding, borders, and margins. "Thus, a paragraph is a stack of line boxes." Change "paragraph" to "block-level box". "Using a constant spacing may create a 'bleeding' effect between line boxes." What is "a 'bleeding' effect"? If it means "overlap", change to "Using a constant spacing may create overlap of line boxes." "A containing block defines a root inline element which wraps all the inline children of the block element, including the anonymous inline elements." The term "element" is misleading here because it has another meaning in SGML and XML. Change "root inline element" to "root inline object" and change "anonymous inline elements" to "anonymous inline blocks". "It inherits the inline behaviors that are set for the block element (like 'line-height') and play an important role in some line stacking strategies." Change "inline behaviors" to "property values". Singularize "play" to make "plays". 3.2. Line Box wrapping "Line boxes in the same inline formatting context may vary in block- progression advance or not, depending on the line stacking strategy." Eliminate the redundant "or not". "Since an inline box may not exceed the inline-progression width of a line box, long inline boxes are split" Change "a" to "its" and "long" to "overlong". "When an inline box is split, margins, borders, and padding have no visual effect where the split occurs." This contradicts section 7 of the CSS3 Box module Working Draft, "The 'border-break' property" (<http://www.w3.org/TR/css3-box/#the-border- break>), which offers the ability to specify that borders and padding repeat at each break. If the 'border-break' property is to be kept, eliminate the contradictory sentence. If the 'border-break' property is to be dropped, add an explanatory note. "Formatting of margins, borders, and padding may not be fully defined if the split occurs within a bidirectional embedding." I fail to understand how bidirectional embedding contributes to ambiguities in margins, borders, and padding. In any case, the comma after "borders" is inconsistent with other lists in the document. Either change all lists to use a final comma or drop the comma here. And the wording is too weak: while implementation behavior *may* vary, the formatting *is not* fully defined. Change "may not be" to "is not". "Margins, borders, padding, or text decorations have no visible effect after split1 or before split2." If the intent remains true, change to "Margins, borders, padding, and text decorations have no visible effect at the end edge of split1 or at the start edge of split2. If the intent is false (because of the 'border-break' property), eliminate the sentence. "Depending on the width of the P" Change "P" to "'P' element's box". [example image] Can somebody please make a larger, more legible version of this image? It would be nice if the type were clear and if the arrow lines occupied and integral number of pixels. 3.3. Inline box progression dimension (height in horizontal flow), the 'text-height' property Change the heading to "Inline box block progression dimension, the 'text-height' property". "Name: text-height Value: auto | font-size | text-size | max-size" I suggest the keyword "em-square" instead of "font-size" and the keyword "ascenders-descenders" instead of "text-size". 3.4. Line height adjustment: the 'line-height' property "The leading for an inline element is defined as the difference between the block-progression dimension as determined by the 'text-height' property and the computed value of 'line-height'." Add "The leading may be negative." "Half the leading is called the half-leading, each half-leading is located before and after the block-progression dimension of the element." Change the comma to a semicolon. Change "the element" to "each generated inline box". Add "If the leading is negative, the half-leading will intrude into the content area of its boxes." "Anonymous inline elements use the 'text-height' and 'line-height' property values specified for their parent." Change to "Anonymous inline boxes use the 'text-height' and 'line- height' property values specified for the deepest element which contains the boxes." "as if each line box starts with a zero-width (relative) inline box with the blocks' font and line height properties" Change to "as if each line box starts with a zero-width (relative) inline box with the font and line height property values of the deepest containing block-level element" "normal" "We recommend a computed value for 'normal' between 1.0 to 1.2" As specified for "<number>", the computed value cannot be a unitless number; the computed value must be an absolute length. Change the sentence to "We recommend that 'normal' correspond to a number between 1.0 to 1.2" "<length> The box height is set to this length. Negative values are illegal. The length is the computed value." Change the last sentence to "The computed value is an absolute length." "<number> The computed value of the property is this number multiplied by the element's font size." Change to "The computed value of the property is the arithmetical product of this number and the computed font size". "<percentage> The computed value of the property is this percentage multiplied by the element's computed font size." Change to "The computed value of the property is the arithmetical product of this percentage and the computed font size". "none The computed value of the property is the ancestor block element font- size." Change the sentence to "The computed value of the property is the computed font size of the deepest containing block-level element." "When the 'line-height' value is less than the font size, the final inline box extended block progression dimension will be less than the font size and the rendered glyphs will "bleed" outside the box." Change to "When the computed 'line-height' value is less than the computed font size, the final inline box extended block progression dimension may, depending on the line stacking strategy, be less than the font size and the rendered glyphs will "bleed" outside the box." 3.5. Line Stacking: the 'line-stacking-strategy', 'line-stacking-ruby', 'line- stacking-shift' properties, and the 'line-stacking' shorthand property "When the line-stack strategy dictates that the inline element line-height be ignored, this means that for those elements only their block progression dimensions are considered for the stack-height, not their extended block progression dimensions." This does not sit well with (nor, strictly speaking, contradicts) a passage from section 3.4: "When the line-height value is ignored for an inline element, the extended block progression dimension is identical to the block progression dimension." I find it conceptually easier to specify that the 'line-height' property always determines the extended block progression dimension (EBPD); the 'line-stacking-strategy' property then determines whether the EBPD is part of the line stacking strategy. "XSL has a similar property with the same name which use different but equivalent values" Singularize "use" to make "uses". "1. The element text-height property is set to 'max-size'. 2. The line stacking strategy is set to 'block-line-height'." Surround "text-height" with single quote marks. Change "line stacking strategy" to "the 'line-stacking-strategy' property". "This property determines the line stacking method for block elements containing elements with base-shift." I believe that "with base-shift" should be "with a baseline-shift". The word "elements" needs qualification; the only inline elements that matter are those which do not have an intermediary block-level element between them and the block-level element in consideration. "consider-shifts In determining the stack-height, include the adjusted top-edge and bottom-edge of any characters that have a baseline-shift. disregard-shifts In determining the stack-height, include the unshifted top-edge and bottom-edge of any characters that have a baseline-shift." Change both occurrences of "top-edge" to "before-edge". Change both occurrences of "bottom-edge" to "after-edge". Change both occurrences of "characters" to "glyphs". "1. The element text-height property is set to 'max-size'. 2. The line stacking strategy is set to 'block-line-height'." Surround "text-height" with single quote marks. Change "line stacking strategy" to "the 'line-stacking-strategy' property". "Note. XSL has a similar property with a different name: 'line-height- shift-adjustment' which use the same values." Change "with a different name:" to a comma and add a comma after "'line-height-shift-adjustment'". Singularize "use" to make "uses". 4. Baseline alignment "Baseline alignment describes the alignment of textual content and based on information contained in font tables associated with font resources." Add "is" after "and". "Additional descriptions for these font tables are provided in the CSS3 Fonts module." Change the link destination (currently <http://www.w3.org/Style/Group/css3-src/css3-fonts/Overview.html)> to the public Fonts Working Draft. 4.1. Baseline information provided by fonts "Within a script and within a line of text having a single font-size, the sequence of alignment-points defines, in the inline-progression- direction, a geometric line called a baseline." Choose one for the whole document: "inline progression direction" or "inline-progression-direction". I believe that the latter is consistent with XSL, although the former is predominant in the Line module Working Draft. If there are to be hyphens, use them also for the terms "inline- progression-dimension", "block-progression-direction", and "block- progression-dimension". "This figure shows the vertical position of the alignment-point for alphabetic and many syllabic scripts, illustrated by a Roman "A"" Change "Roman" to "Latin". "A baseline-table specifies the position of one or more baselines in the design space coordinate system. The function of the baseline table is to facilitate the alignment of different scripts with respect to each other when they are mixed on the same text line. Because the desired relative alignments may depend on which script is dominant in a line (or block), there may be a different baseline table for each script. In addition, different alignment positions are needed for horizontal and vertical writing modes. Therefore, the font may have a set of baseline tables: typically, one or more for horizontal writing-modes and zero or more for vertical writing-modes. " Again, be consistent in hyphenation. Choose either "baseline-table" or "baseline table". Choose either "writing modes" or "writing-modes". "Note that the EM Box is positioned differently for these two cases." Change "Box" to "box". "Even though the ideographic glyph in Example 4 is positioned on the vertical ideographic baseline, because it is centered in the EM box, all glyphs with the same EM Box are centered, vertically, with respect to one another." Change "Box" to "box". Then clarify this confusing statement. I think that the statement means that glyphs centered in their em boxes and of the same font size will center on a single vertical axis. "CSS assumes that the font tables include, for each glyph in the font, one width value, one alignment-baseline and one alignment-point for the horizontal writing- modes. If vertical writing-modes are supported, then each glyph must have another width value, alignment-baseline and alignment-point for the vertical writing-modes." Add "for" after each occurence of "value" and after each occurrence of "alignment-baseline". "This figure shows glyphs from three different scripts" Eliminate the redundant "different". 4.2. Baseline identifiers "The baseline alignment properties control the alignment of child element with respect to their parent." Add "a" after "of". Change "their" to "its". Or, instead of those two changes, pluralize "element" to make "elements". "For historical reasons, this baseline is at the bottom of the ideographic EM box and not in the center of the ideographic EM box." A link to an explanation of those historical reasons would be enlightening, if not essential. "middle This identifies a baseline that is offset from the alphabetic baseline in the shift-direction by 1/2 the value of the x-height font characteristic. The position of this baseline may be obtained from the font data or, for fonts that have a font characteristic for "x-height", it may be computed using 1/2 the "x-height"." Change both occurrences of "1/2" to "half". Eliminate the quote marks around the last two occurrences of "x-height". "For each line box, there is a dominant-baseline, a baseline-table and a baseline-table font-size which are those of the nearest block-level ancestor element and are applied to its root inline element." Change to "For each line box, there is a dominant-baseline, a baseline- table and a baseline-table font-size which are those of the deepest containing block-level element and are applied to its root inline object." "Depending on the 'line-stacking-strategy' being used" Eliminate the quote marks around and the hyphens within "line-stacking- strategy". "Depending on the 'line-stacking-strategy' being used, the line stacking progression (also called stack-height) can be different from the line block progression dimension." Change "line stacking progression" to "line stacking dimension". "For an inline element, the extended inline box includes the maximum extent of their static or relative positioned children located in the same line box and may include leading specified by their line-height value." Change "the extended" to "an extended" since there may be more than one. Change the first occurrence of "their" to "its". Surround "line- height" with single quote marks. Either change the second occurrence of "their" to "its" or change "value" to "values", depending on the intended meaning. There is a problem with the wording; the maximum extent of a relatively positioned box is arbitrary. I assume that the intended meaning was to include the maximum extent of the conceptual boxes of relatively positioned elements as they would sit in static positioning. "Depending on the line-stacking-strategy value, the extended line box may have a different block progression dimension." Change "line-stacking-strategy value" to "line stacking strategy". From what would the block progression dimension be different? "The following text explains the interaction between the line-stacking- strategy and the various baseline alignment parameters." Change "line-stacking-strategy" to "line stacking strategy". "participate on the evaluation of the line block progression dimension." Change "on" to "in". "The extended inline boxes of all inline elements include the leading introduced by their line-height value." Surround "line-height" with single quote marks. "For 'line-stacking-strategy: block-line-height', the ancestor block 'line- height' value participates on the evaluation of the line block progression dimension." Change to "For 'line-stacking-strategy: block-line-height', the 'line- height' value of the deepest containing block-level element participates in the evaluation of the line block progression dimension." "The inline element line-height values are ignored." Surround "line-height" with single quote marks. "The position of the dominant-baseline on the start edge of the line box is determined by using a virtual 'zero-width' inline box with the block font and line height properties located on the start edge of the line box." Change to "The position of the dominant-baseline on the start edge of the line box is determined by using a virtual zero-width inline box, located on the start edge of the line box, with the font and line height properties of the deepest containing block-level element." "The extended inline boxes of all inline elements do not include any extra leading." This sentence will need elimination if it is agreed that the extended block progression dimension is not dependent on line stacking strategy. "For 'line-stacking-strategy: max-height' and 'line-stacking-strategy: grid- height', only the ancestor block 'line-height' value participates on the evaluation of the line block progression dimension." Change to "For 'line-stacking-strategy: max-height' and 'line-stacking- strategy: grid- height', only the 'line-height' value of the deepest containing block-level element participates in the evaluation of the line block progression dimension." "The inline element line-height values are ignored." Surround "line-height" with single quote marks. "The extended inline boxes of all inline elements do not include any extra leading." This sentence will need elimination if it is agreed that the extended block progression dimension is not dependent on line stacking strategy. "The "before-edge" baseline offset is set to the maximum extent of the "before-edges" of the extended inline boxes of the remaining areas." This rules out the definition of extended inline box that does not depend on the line stacking strategy (which is fine, but needs clarification in section *****). "If all the extended inline boxes in a line box are aligned either to the "before-edge" or to the "after-edge", then use the offset of the "text- before-edge" baseline of the line as the offset of the "before-edge" baseline of the line." Change to "If all the extended inline boxes in a line box are aligned either to the "before-edge" or to the "after-edge", then the offset of the "before-edge" baseline of the line is the offset of the "text-before-edge" baseline of the line." "The offset of the "after-edge" baseline of the line from the dominant- baseline of the line is determined by ignoring all extended inline boxes whose alignment-baseline is after-edge." Take the second occurrence of "after-edge" out of the 'code' element. "For the purpose of before-edge and after-edge baseline computation, inline boxes include the maximum extent of their static or relative positioned children located in the same line box." The same caveat as before about relatively positioned children holds. "Maximum alignment extents are measured by including the half leading extent in the appropriate direction for non replaced elements" I thought that leading would only be included under certain line stacking strategies; is it so? Hyphenate between "non" and "replaced". "The rectangles with no arrows represent images that receive the default, dominant baseline, alignment." Change to "The rectangles with no arrows represent images that receive the default alignment to the dominant baseline." "Examples 1 and 2 show the "before-edge" alignment is determined by the tallest non-"before-edge" aligned objects" Eliminate "is". "in example 1 this is the default aligned, arrowhead free rectangular image and in example 2 this is the double headed arrow rectangle." Hyphenate between "default" and "aligned", between "arrowhead" and "free", and between "double" and "headed". "In example 3, the images with "before-edge" alignment has a taller member than do the "after-edge" aligned images. In example 4, the tallest image is in the "after-edge" aligned set." Hyphenate before both occurrences of "aligned". 4.3. Overview of the baseline alignment process "Because the value of the 'font-family' property is a list of fonts, to insure a consistent choice of baseline-table" Change "insure" to "ensure". "we define the nominal font in a font list as the first font in the list for which a glyph data is available." Change "a glyph data is available" to "glyph data are available" or to "a glyph datum is available", depending on intent. "glyph data is assumed to be present" Change "is" to "are". "This definition insures a content independent determination determination of the font and baseline table that is to be used." Change "insures" to "ensures". Hyphenate between "content" and "indepenedent" and between "baseline" and "table". 4.4. Dominant baseline: the 'dominant-baseline' property "A scaled-baseline-table is a compound value with three components: a baseline-identifier for the dominant baseline; it can be qualified as the 'dominant' baseline-identifier (or 'dominant baseline' in short); the baseline-identifier is basically an 'alignment-baseline' value. a derived baseline-table which contains definition for additional baseline-identifiers related to various scripts, and a baseline-table font-size." Change the first period to a comma. Pluralize "definition" to make "definitions". "Some values of the property re-determine all three values; other only reestablish the baseline-table font-size." Pluralize "other" to make "others". "If the value of the script property is 'auto, the 'auto' value is equivalent to 'alphabetic' for horizontal 'writing-mode' values and 'central' for vertical 'writing-mode' values." Surround "script" with single quote marks. Add a single quote mark after the first occurrence of "auto". Add "to" after "and". "If the value of the script property is other than 'auto'" Surround "script" with single quote marks. "The dominant baseline-identifier is set using the computed value of the 'script' property." This needs more explanation. Is the name of the script the name of the dominant baseline-identifier? I think not. So how does the script determine the dominant baseline-identifier? "The 'writing-mode' value, whether horizontal or vertical is used to select the baseline-table that correspond to that baseline-identifier." Insert a comma after "vertical". Singularize "correspond" to "corresponds". "The dominant baseline-identifier, the baseline-table and the baseline- table font-size remain the same as that of the parent." Change "that" to "those". "The 'alphabetic' baseline is the standard baseline for Roman scripts." Change "Roman" to "Western" or to "Latin, Greek, and Cyrillic". "The dominant baseline-identifier is set to the 'hanging' baseline, the derived baseline- table is constructed" Eliminate the space before "table". "The dominant baseline-identifier is set to the 'ideographic' baseline, the derived baseline- table is constructed" Eliminate the space before "table". "The dominant baseline-identifier is set to the 'mathematical' baseline, the derived baseline- table is constructed" Eliminate the space before "table". "That font baseline-table is chosen using the following priority order of baseline-table names" Change to "That font baseline-table is chosen by trying the following baseline-tables in succession and keeping the first that exists". This change applies to the "central", "middle", "text-after-edge", and "text- before-edge" definitions. "The baseline-table is changed to the value of the 'font-size' property on this element." Insert "font-size" after "baseline-table". This change applies to the "central", "middle", "text-after-edge", and "text-before-edge" definitions. "Note:" Change the colon to a period. "Computed baselines do not (necessarily) choose a defining baseline table from the nominal font." I think that this means that the baseline-table used for an element may not correspond to the dominant baseline of that element, but the sentence is rather unclear. "The catch is that the positions of the defined baselines -- the 'hanging', 'alphabetic', 'mathematical' and 'ideograph' baselines -- can be specified differently for different choices of which of these baselines is dominant." Change both occurrences of double hyphen to em dash. Change "ideograph" to "ideographic". 4.5. Aligning the alignment point of an element: the 'alignment- baseline' property "Note: The 'alignment-adjust' property specifies how the alignment point is determined and defaults to the baseline with the same name as the computed value of the alignment-baseline property. " Change the colon to a period. Surround "alignment-baseline" with single quote marks. "The alignment-point of the element being aligned" Change "element being aligned" to "box" or vice versa. This change applies to the all the value definitions for 'alignment-baseline'. "If the element 'script' property value is 'auto', the alignment point of each glyph is aligned with the baseline-identifier of the script to which the glyph belongs." Change "element" to "element's". Change "baseline-identifier" to "baseline". "If the element 'script' property value is other than 'auto', the alignment point of each glyph is aligned with the baseline-identifier specified by the 'script' property." Change "element" to "element's". Change "baseline-identifier" to "baseline". Change "specified" to "implied". "The baseline-identifier position is determined by using the relevant information related to the parent element dominant-baseline set." Change "baseline-identifier" to "baseline". Change "element" to "element's". "The alignment-point of the element being aligned is aligned with the 'text-before-edge' baseline of the parent." Take "'text-before-edge'" out of the 'span' element. "The alignment-point of the element being aligned is aligned with the 'text-after-edge' baseline of the parent." Take "'text-after-edge'" out of the 'span' element. "alphabetic The alignment-point of the element being aligned is aligned with the lower baseline of the parent." Change "lower" to "alphabetic". "The values: before-edge, text-before-edge, after-edge and text-after- edge " Eliminate the colon. Surround each keyword with single quote marks. "For example 'before-edge' means 'top' in an horizontal writing mode and 'right' in a vertical writing mode." Add a comma after "example". Change "an" to "a". Change "a vertical" to "the 'tb-rl'". 4.6. Setting the alignment point: the 'alignment-adjust' property "Computed value: see text" The text fails to specify certain computed values. Are the computed values the keywords? Are the computed values <length>? "With the 'alignment-adjust' property, the position of the baseline identified by the 'alignment-baseline' can be explicitly determined." Change "baseline identified" to "alignment point aligned". "The user agent should use heuristics to determine the position of a non existing baseline for a given element." Hyphenate between "non" and "existing". "Padding, border or margin do not affect that alignment point." Change "or" to "and". "The alignment point of the inline-level element itself is at the intersection of the start-edge of the first inline box and the baseline identified by the 'alignment-baseline' property if this baseline exists in the baseline-table for the element dominant-baseline. If that specific baseline does not exist, the user agent may use heuristics to determine where that missing baseline would be." Change to "If the baseline, B, identified by the 'alignment-baseline' property exists in the baseline table for the element's dominant baseline, then the alignment point of the inline-level element is at the intersection of the start edge of the first inline box and the baseline B. If the baseline B does not exist in the baseline table for the element's dominant baseline, the user agent may use heuristics to determine where that baseline would be." "For other inline box content like images, the user agent will use heuristics to determine the position of the alignment point." Eliminate "box". Add a comma after "content". I do not understand why heuristics are necessary. Even replaced elements have an nominal font and that font must have baseline tables. "For example when the resulting baseline is 'alphabetic' or 'ideographic', it is expected that the alignment point will be at" Add a comma after "example". Change "expected" to "recommended" and eliminate "will". "If the resulting baseline is 'hanging', the intersection of the start-edge and the before-edge of the inline box, including its respective margin should be used instead." Change to "If the resulting baseline is 'hanging', it is recommended that the alignment point be at the intersection of the start-edge and the before-edge of the inline box, including its respective margin." "the 'alignment-adjust: auto' value is equivalent to 'after-edge' or 'before- edge' respectively." Add a comma before "respectively". "This may include or not the line-height of the element, depending on the line-stacking-strategy." Change to "Whether this includes leading specified by the 'line-height' property depends on the line stacking strategy." "The alignment point is at the intersection of the start-edge of the element and the 'text-before-edge' baseline of the element." Move "'text-before-edge'" out of the 'span' element. "This may include or not the line-height of the element, depending on the line-stacking-strategy." Change to "Whether this includes leading specified by the 'line-height' property depends on the line stacking strategy." "The alignment point is at the intersection of the start-edge of the element and the 'text-after-edge' baseline of the element." Move "'text-after-edge'" out of the 'span' element. "The computed value of the property is this percentage multiplied by the computed 'line-height' of the element." Change to "The computed value of the property is the arithmetical product of this percentage and the computed 'line-height' of the element." 4.7. Repositioning the dominant baseline: the 'baseline-shift' property "Computed value: see text" The text fails to specify certain computed values. Are the computed values the keywords? Are the computed values <length>? "The 'baseline-shift' property allows repositioning of the dominant- baseline relative to the dominant-baseline." Add "parent element's" after "to the". "The shifted object might be a sub- or superscript." Change "object" to "element". "Within the shifted element, the whole baseline table is offset; not just a single baseline." Change the semicolon to a comma. "For sub- and superscript, the amount of offset is determined from the nominal font of the parent." Change to "For subscripts and superscripts, the amount of offset is determined from the nominal font of the parent element." "The offset for this position is determined by the font data for the parent nominal font as adjusted by the dominant baseline-table font-size of the parent element. If there is no applicable font data the User Agent may use heuristic to determine the offset." Change "parent nominal font" to "parent element's nominal font". Change "is" to "are". Change "User Agent" to lower case. Change "heuristic" to "heuristics". These changes apply to the 'sub' and 'super' definitions. "The computed value of the property is this percentage multiplied by the computed 'line-height' of the parent element." Change to "The computed value of the property is the arithmetical product of this percentage and the computed 'line-height' of the parent element." "For 'baseline-shift the percentage values refer to the 'line-height' of the parent element." Add a single quote mark after "baseline-shift". "Note. Values of this property have slightly different meanings in the context of tables. Please consult the section on table height algorithms for details." Correct the markup. This note should not be in a 'div' element nor in an 'em' element, but in a 'p' element in class "note". "If the element doesn't have a baseline, align the bottom of the inline box, including its margin with the parent's dominant baseline." Add a comma after "margin". "If there is no parent or if there is a change of flow orientation between this element and its parent, the dominant baseline is set to 'alphabetic' for horizontal flow and 'central' for vertical flow." "Flow orientation" is undefined. Add "to" before "'central'". "Align the script preferred baseline of the element (determined by the computed script value) with the equivalent baseline of the parent element. " Hyphenate between "script" and "preferred". Change "script value" to "value of the 'script' property". "The dominant baseline is set to 'alphabetic' if there is no parent or if there is a flow orientation change between this element and its parent, otherwise it is set to 'no-change'." Change "flow orientation change" to "change of flow orientation". Change the comma to a semicolon. "Align the 'central' baseline of the inline element with the central baseline of the parent." Surround the second occurrence of "central" with single quote marks. "Align the 'middle' baseline of the inline element with the middle baseline of the parent." Surround the second occurrence of "middle" with single quote marks. 4.9. Inline box alignment: the 'inline-box-align' property "The 'inline-box-align' property determines which line of a multi-line inline block align with the previous and next inline elements within a line." Singularize "align" to make "aligns". "The alignment strategy for the inline lock itself (i.e. the definition of it alignment point and which parent baseline should be used for the alignment) is determined by the inline block element baseline alignment properties applicable to the line being used for the alignment." Change "lock" to "block". Change "it" to "its" Change "element" to "element's". "This property has no effect for single line inline block." Hyphenate between "single" and "line". Pluralize "block" to make "blocks". "initial Use the initial line of the inline block element for alignment purpose." This keyword conflicts with the universal meaning of 'initial' as specifiying a property's initial value. I suggest the keyword 'first' instead. Of course, we could simply eliminate this keyword as a possible value, because its meaning is identical to the integer '1'. "Use nth line" Change to "Use the nth line". 5.1. Initial line "For example it may use a difference typeface, a color, font-size or even casing (like all uppercase)." Change to "For example, it may use a difference typeface, color, font size or even casing (like all uppercase)." "set of style properties" Eliminate "style". "Although there is no properties only applicable to ::first-line pseudo elements, in essence the 'text-indent' property which is applied to 'block- level' elements is in fact only effective on the first line of the block element." Change to "Although there are no properties only applicable to ::first-line pseudo elements, the 'text-indent' property affects only the first line of the block element." 5.2. Drop Initial overview "similar to a 'floated' element" Eliminate the quote marks around "floated". "(For writing-mode:lr-tb, 'after' corresponds to bottom and 'before' to 'top')." Change to "(For writing mode 'lr-tb', 'after' corresponds to 'bottom' and 'before' to 'top'.)" "The 'after' alignment point connects with one of the alignment point of the nth line of the block element of which the initial letter is part of." Pluralize the second occurrence of "point" to make "points". Eliminate the trailing "of". "If no drop initial size is explicitly provided, there is a secondary connection point where the 'before' alignment points connects with one of the alignment point of the initial line." Singularize "points" to make "point". Pluralize "point" to make "points". "If a drop initial size is provided, there is no secondary connection point as it would result otherwise in an over constraint situation." Change to "If a drop initial size is provided, there is no secondary connection point as it would cause an overconstraint. "the size is provided in 'line' unit" Pluralize "unit" to make "units". "The CSS mechanism to 'select' the drop initial content is the ::first-letter pseudo element." Eliminate the single quote marks. "The first letter is defined as including all starting punctuation characters (defined in Unicode as 'open' (Ps), 'close' (Pe) and 'other' (Po), if any, followed by the first non-punctuation character cluster." Change to "The first letter is defined as including all starting punctuation characters (any characters in Unicode General Categories Ps, Pe, Pi, Pf or Po), if any, followed by the first non-punctuation character cluster." "A character cluster may be a single character, a combining sequences" Singularize "sequences" to make "sequence". "In addition, one property: 'text-indent' although applying to block-level elements is in fact effective on its first line of text and has therefore an influence on the indentation of the first-letter versus the start edge of the containing block." Change to "In addition, the property 'text-indent', although applying to block-level elements, affects a block's first line of text and has therefore an influence on the indentation of the first-letter glyphs from the start edge of the containing block." "Using the 'text-indent' allows the correction of optical effect (like uppercase 'O') or even pushing the starting piece of the initial letter in a 'virtual' margin." I do not understand what is meant by "optical effect" or by "'virtual' margin". "The following figure shows first a simple case of a three line drop initial, and second a case of a two line drop initial but with a three line size initial letter." Hyphenate before each occurrence of "line" and after the third occurrence. "Typically the ink of drop initial characters 'fills' the space between the baseline and the text-before-edge, therefore 'taller' characters are processed accordingly." Change to "Typically the 'ink' of drop initial glyphs fills the space between the baseline and the text-before-edge, so taller glyphs are processed accordingly." "Typically characters are stretched in both direction" Change "characters" to "glyphs". Pluralize "direction" to "directions". "Even if the character has no 'ink' at the primary connection line, the stretching is performed as if there were a 'virtual' point at that level." Change "character" to "glyph". Eliminate the single quote marks around "virtual". Then explain to me the meaning of this sentence. The putative visual aid that follows imparts little information. "For characters that have only ink 'after' (below) their baseline" Change "characters" to "glyphs". Eliminate the single quote marks. "for symbols that have no ink" Surround "ink" with single quote marks. "Some characters are always expected" Change "characters" to "glyphs". "For example, this is the case for all ideograms and related characters like the Japanese Kana characters." Change to "For example, this is the case for all Han ideograms and for Japanese kana." "The following figure shows how the ink of the character representing the number one in CJK (middle picture) is not stretched to hit the top of the text-before-edge of the initial line, but is instead stretched following the same ratio as the character in the left picture." Surround "ink" with single quotes. Change both occurrences of "character" to "glyph". Change "CJK" to "Han". "Drop initial characters can be aligned" Change "characters" to "glyphs". "The examples above used the alphabetic and the ideographic baselines." Surround "alphabetic" and "ideographic" with single quote marks. "The following figures compares the usage of the text-after-edge baseline (picture on the left) and the alphabetic baseline (picture on the right)." Singularize "figures" to make "figure". Surround "text-after-edge" and "alphabetic" with single quote marks. "Note that when the alphabetic baseline is used for characters that have ink below the baseline" Surround "alphabetic" and "ink" with single quote marks. Change "characters" to "glyphs. "For example, in Devanagari the hanging baseline may be preferred." Surround "hanging" with single quote marks. "but the secondary connection point connects the hanging baselines of the initial letter and the initial line." Surround "hanging" with single quote marks. "Drop initial with hanging devanagari characters" Capitalize "devanagari" to make "Devanagari". "The drop initial effect is typically based on a number of lines, i.e. the combined line- height adjusted by the alignment strategies for the connection lines is used to determine the default size of the drop initial character." Change to "The drop initial effect is typically based on a number of lines. That is, the combined line heights (adjusted by the alignment strategies) for the connection lines are used to determine the default size of the drop initial character." "However there is a potential circular issue as the activation of the effect modifies the content of the lines and therefore may affect their line- height." Change to "However, there is a potential for circular definitions as the activation of the effect modifies the content of the lines and therefore may affect their line height." "The recommended strategy is to determine the drop initial character size using the initial combined line height and to possibly stretch the character along the new baseline if the combined line height is modified by the drop initial effect." Should "character size" be "font size"? Pluralize both occurrences of "line height" to make "line heights". Change "to possibly stretch the character" to "possibly to stretch the glyph". It seems from the image that follows that "along the new baseline" should be "toward the new baseline". Is that so? [image: Drop initial with variable line heights] The third example has the drop initial "T" and then a redundant normal "T" in the first line. 5.3. Sizing drop initial, the 'drop-initial-size' and the 'drop-initial- value' properties "Name: drop-initial-value" "initial The drop initial letter is aligned on the initial line" Add an ending period. Or simply eliminate this as a possible value; the 'initial' value is equivalent to '1', yes? "Name: drop-initial-size Value: auto | <line> | <length> | <percentage>" "Computed value: specified values (except for initial and inherit)" The computed value must be an absolute <length> (perhaps excepting 'auto'). Certainly, percentages and relative <length> must not appear in computed values "auto The drop initial letter is sized" Change "letter is" to "glyphs are". "<line> The drop initial letter is sized using the combined line height of the nth lines (as determined by the line value)." Change "letter is" to "glyphs are". Pluralize "line height" to make "line heights". Change "nth" to "n". Change "line value" to "<line> value". Is "<line>" a synonym for "<integer>"? If so, use "<integer>". If not, explain the syntax of a <line> value. "The letter may be stretched on one dimension if the line height of each line is variable to avoid circular issues." Change to "To avoid circular definitions, the glyphs may be stretched on one dimension if the line height of each line is variable." "<length> The drop initial letter is sized using the length value." Change "letter is" to "glyphs are". Change "length value" to "<length> value". "<percentage> The drop initial letter is sized relatively to the combined line height of the n lines determined by the 'drop-initial-value' property value." Change "letter is" to "glyphs are". Pluralize "line height" to make "line heights". 5.4. Aligning drop initial: the 'drop-initial-before-align', 'drop-initial- before-adjust', 'drop-initial-after-align' and 'drop-initial-after-adjust' properties "The 'drop-initial-after-align' property determines which alignment line within the nth line box (n being defined by the 'drop-initial-value' property) is used at the primary connection point with the initial letter box." Change "alignment line" to "baseline". Change "at" to "for". Change "initial letter box" to "drop initial box". "The values are the same as the 'alignment-baseline' property values." Link "'alignment-baseline'" to its definition. "Name: drop-initial-after-adjust Value: central | middle | after-edge | text-after-edge | ideographic | alphabetic | mathematical | <percentage> | <length>" "Computed value: specified values (except for initial and inherit)" Percentages and relative <length> must not appear in computed values. Perhaps it should read "Computed value: specified values for baseline identifiers, absolute <length> for <percentage> and <length>". For each of the value definitions, change "element" to "drop initial box". "after-edge The alignment point is at the intersection of the end-edge of the element and the 'after-edge' of the extended inline box of the element. This may include or not the line-height of the element, depending on the line- stacking-strategy." Change the last sentence to "Whether this includes leading specified by the 'line-height' property depends on the line stacking strategy." "text-after-edge The alignment point is at the intersection of the end-edge of the element and the 'text-after-edge' baseline of the element." Take "'text-after-edge'" out of its special markup. "<percentage> The computed value of the property is this percentage multiplied by the computed 'line-height' of the element." Change the sentence to "The computed value of the property is the mathematical product of this percentage and the computed 'line-height' value of the element." "The alignment point is on the end-edge of the inline box and is offset from the after-edge by the computed value. A value of '0%' makes the text-after-edge the alignment point." Change "inline box" to "drop initial box". Is the offset from the after- edge or from the 'text-after-edge'? And in which direction is the offset? "<length> The alignment-point is on the end-edge of the inline box. Its position along the end-edge is offset from the after-edge by the <length> value. A value of '0cm' makes the text-after-edge the alignment point." Change "inline box" to "drop initial box". Again, from where and in which direction is the offset? "The 'drop-initial-before-align' property determines which alignment line within the initial line box is used at the secondary connection point with the initial letter box." Change "alignment line" to "baseline". Change "at" to "for". Change "initial letter box" to "drop initial box". "This property is only effective is the value of the 'drop-initial-size' property is 'auto'." Change "only effective is" to "effective only if". "caps-height The caps-height alignment line is used." Surround "caps-height" with single quote marks. Change "alignment line" to "baseline". Explain where the 'caps-height' baseline is. "<'alignment-baseline'> The values are the same as the 'alignment-baseline' property values." Link "'alignment-baseline'" to its definition. "Name: drop-initial-before-adjust Value: before-edge | text-before-edge | central | middle | hanging | mathematical | <percentage> | <length>" "Computed value: specified values (except for initial and inherit)" Percentages and relative <length> must not appear in computed values. Perhaps it should read "Computed value: specified values for baseline identifiers, absolute <length> for <percentage> and <length>". Should 'caps-height' be a possible value for 'drop-initial-before-adjust'? In general, 'text-before-edge' will leave room for diacritics. "This property is only effective is the value of the 'drop-initial-size' property is 'auto'." Change "only effective is" to "effective only if". For each of the value definitions, change "element" to "drop initial box". "before-edge The alignment point is at the intersection of the end-edge of the element and the 'before-edge' of the extended inline box of the element. This may include or not the line-height of the element, depending on the line- stacking-strategy." Change the last sentence to "Whether this includes leading specified by the 'line-height' property depends on the line stacking strategy." "text-before-edge The alignment point is at the intersection of the end-edge of the element and the 'text-before-edge' baseline of the element." Take "'text-before-edge'" out of its special markup. "<percentage> The computed value of the property is this percentage multiplied by the computed 'line-height' of the element." Change the sentence to "The computed value of the property is the mathematical product of this percentage and the computed 'line-height' value of the element." "The alignment point is on the end-edge of the inline box and is offset from the text-before-edge by the computed value." Change "inline box" to "drop initial box". In which direction is the offset? "<length> The alignment-point is on the end-edge of the inline box." Change "inline box" to "drop initial box". "Its position along the end-edge is offset from the text-before-edge by the <length> value." In which direction is the offset? 6. Properties index "In addition to the specified values, all properties take the initial and inherit values" Surround "initial" and "inherit" with single quote marks. Add an ending period. "drop-initial-size" "refers to combined line height size as provided by drop-initial-value" Change the percentages explanation to "refers to the combined line heights as specified by 'drop-initial-value'". "vertical- align" "not defined for shorthand properties" Change the initial value statement to "see individual properties". Or change the statement for 'line-stacking'. 7. Profiles "There are 3 modules defined by this chapter: CSS1 line model: CSS2 line model: CSS3 line model:" Change to "There are three models defined by this chapter: the CSS1 line model, the CSS2 line model, and the CSS3 line model." "The CSS1 line module is made of the following properties/values:" Change to "The CSS1 line model has the following properties/values:" Why do the CSS1 and CSS2 tables have the heading "Media groups" instead of just "Media"? Why does "N/A" appear in this column? After all, every property applies to certain media. "relative to the font-size of the element itself" Change "font-size" to "font size". "The following table describes the CSS2 text module." Change "module" to "model". "In addition, the 'vertical-align' has a new value: <length>." Change to "In addition, the 'vertical-align' property accepts a new value type: <length>." "Properties that applies to all elements also applies to generated content." Change both occurrences of "applies" to "apply". "Finally, 'vertical-align' also applies to table-cell elements." Surround "table-cell" with single quote marks. ".Name" Eliminate the period. "'line- height' normal | <number> | <length> | <percentage>" Add the value "inherit". "relative to the font-size of the element itself" Change "font-size" to "font size". "'vertical- align'" "inline-level and table-cell elements" Surround "table-cell" with single quote marks. "The CSS3 module adds the following properties" Change "module" to "model". Change the final comma on each of the bullet points to a period. "Baseline alignment: 'alignment-adjust', 'alignment-baseline', 'baseline- shift', 'dominant-baseline', 'inline-box-align'" Link "'inline-box-align'" to its definition. "It also modifies the following properties as described:" Change the colon to a period. "'vertical-align' has three new value: 'auto', middle and 'use-script' and has its initial value changed to 'auto'." Change to "'Vertical-align' has three new values ('auto', 'middle' and 'use-script') and has its initial value changed to 'auto'." "all properties take the value 'initial'." Capitalize "all" to make "All". 8. Glossary Hiragana Japanese syllabic script, or character of that script. Rounded and cursive in appearance. Subset of the Japanese writing system, used together with kanji and katakana. In recent times, mostly used to write Japanese words when kanji are not available or appropriate, and word endings and particles. Also see Katakana. "Katakana Subset of the Japanese writing system consisting of phonetic characters used to represent Roman words. Also see Hiragana." Change definition to "Japanese syllabic script, or character of that script. Angular in appearance. Subset of the Japanese writing system, used together with kanji and hiragana. Used to represent words from Latin script." Maybe "Latin script" should be "foreign scripts"; I thought that katakana were in use to represent, for example, Arabic. Appendix A: Usage of baseline alignment (informative) "These inline elements make up the content of a line in a block where the writing-mode is "lr-tb" and the font is "Helvetica"." Change the quote marks around "lr-tb" to sinqle quote marks. Change "font" to "font family". "p { writing-mode: lr-tb; font: Helvetica; }" The 'font' declaration is invalid; change it to "font: 1em Helvetica". "The other baseline alignment initial values apply." Change to "The baseline alignment properties not explicitly set take their initial values." "Since a horizontal writing-mode is in use, the dominant- baseline- identifier is set to "alphabetic"" Change the quote marks around "alphabetic" to single quote marks. "the baseline-table is taken from the nominal-font for the block in which the line appears, which, in this case, is Helvetica" Change "Helvetica" to "a Helvetica font". "There is a break in the staff lines to separately show the inner inline element." Change to "There is a break in the staff lines to show the inner inline element separately." "The "alignment-baseline" property is the primary control on the positioning of an inner element with respect to its parent. The initial value of the "alignment-baseline" property is "baseline"." Change all quote marks to single quote marks. "Since this example only has Latin glyphs, they are aligned to the "alphabetic" baseline." Change quote marks to single quote marks. "This is shown by the short blue line that connects the two separated staffs (A) in the figure." Move "(A)" to be just after "blue line". "the glyphs of the Gurmukhi script are aligned to the "hanging" baseline" Change quote marks to single quote marks. "The "hanging" baseline position is computed from the font-table" Change quote marks to single quote marks. "In the next figure, fragments of the text of the previous examples make up the content of the outer inline element. The inner inline element has a change of font-size, however." Eliminate ", however". "p { writing-mode: lr-tb; font: Helvetica; }" The 'font' declaration is invalid; change it to "font: 1em Helvetica". "The Latin glyphs are still aligned to the "alphabetic" baseline and the Gurmukhi glyphs, which are pronounced "ji" are aligned to the "hanging" baseline. Note also that just changing the "font-size" property did not change the baseline-table in effect in the inner inline element." Change the quote marks around "alphabetic", around "hanging", and around "font-size" to single quote marks. "The next figure is equivalent to the previous example with the Gurmukhi character replaced by ideographic characters." Pluralize "Gurmukhi character" to make "Gurmukhi characters" "These are aligned to the "ideographic" baseline." Change quote marks to single quote marks. "To change the scaling of the lines of the baseline table, it is necessary to use the "dominant-baseline" property on the inner inline element." Change to "To change the scaling of the baseline table, it is necessary to set explicitly the 'dominant-baseline' property on the inner inline element." "The value of "reset-size" causes the baseline-table font-size to be reset from the font-size of the element on which the "dominant-baseline" property appears." Change quote marks to single quote marks. "p { writing-mode: lr-tb; font: Helvetica; }" The 'font' declaration is invalid; change it to "font: 1em Helvetica". "The alignment of the inner inline element, with respect to the outer inline element, is still determined by aligning the dominant baselines (alphabetic)." Surround "alphabetic" with single quote marks. "But, what if it is more important that the small Gurmukhi glyphs align with the large Gurmukhi glyphs than having the Latin glyphs align." Eliminate "But,". Change the period to a question mark. "p { writing-mode: lr-tb; font: Helvetica; }" The 'font' declaration is invalid; change it to "font: 1em Helvetica". "The "hanging" baseline becomes the dominant baseline and the initial value of the "alignment-baseline" property causes the (newly) dominant "hanging" baselines to be aligned as is shown by the connection of the blue baselines." Change quote marks to single quote marks. "Instead it is sufficient to explicitly specify that the inner inline element is aligned on its "hanging" baseline." Change quote marks to single quote marks. "p { writing-mode: lr-tb; font: Helvetica; }" The 'font' declaration is invalid; change it to "font: 1em Helvetica". "The only change this approach would make in the above figure is to color the "hanging" baseline red and keep the "alphabetic" baseline as the (blue) dominant baseline." Change quote marks to single quote marks. Eliminate the parentheses. "This baseline in the inner inline element would not (as it does not in the above figure) align with the "alphabetic" baseline in the outer inline element." Change to "The 'alphabetic' baseline in the inner inline element would not (as it does not in the above figure) align with the 'alphabetic' baseline in the outer inline element." "Another baseline alignment property is the "baseline-shift" property. Like the properties other than the "dominant-baseline" property" Change quote marks to single quote marks. "p { writing-mode: lr-tb; font: Helvetica; }" The 'font' declaration is invalid; change it to "font: 1em Helvetica". "The European number "1" is aligned to the "alphabetic" baseline and the Gurmukhi syllable "ji" is aligned to the "hanging" baseline." Change the quote marks around "alphabetic" and around "hanging" to single quote marks. "p { writing-mode: lr-tb; font: Helvetica; }" The 'font' declaration is invalid; change it to "font: 1em Helvetica". "Because changing the font-size on a superscript (or subscript) is common, this is the one case where changing the font-size does cause the baseline-table font-size to be reset when the "dominant-baseline" property has its initial value." Change the quote marks to single quote marks. Normative references I believe that CSS3 Fonts and CSS3 Text should be normative references. Other references "[UNICODE]" Update reference to Unicode 3.2.0.
Received on Tuesday, 4 June 2002 15:12:01 UTC