= Line Breaking in WebKit = {{{ #!div class="important" **WARNING:** This page contains forward looking statements, which should ''not yet'' be considered an accurate description of WebKit. }}} == Line Breaking == [http://dev.w3.org/csswg/css3-text/ CSS3 Text] defines a set of rules governing [http://dev.w3.org/csswg/css3-text/#line-break-details default line breaking behavior], some of which is very specific, i.e., testable and repeatable among browsers, and some of which is generic, i.e., not standardized. An example of the former is that the non-tailorable line breaking classes defined by the Unicode Line Breaking Algorithm, Unicode Technical Report #14 [http://www.unicode.org/reports/tr14/ UAX14], must be honored; an example of the latter is that [http://dev.w3.org/csswg/css3-text/#soft-wrap-opportunity soft break opportunities] are not concretely defined. === The `line-break` property === In order to customize line breaking behavior, CSS3 Text intorduces the inheritable [http://dev.w3.org/csswg/css3-text/#line-break line-break] property, with the following standard values: * `auto` * `loose` * `normal` * `strict` If not specified, the initial (default) value is `auto`. CSS3 Text does not fully define line breaking behavior for any of these values. Rather, it specifies certain constraints or absence of constraints that are expected to operate as an additional layer of behavior on top of the [http://dev.w3.org/csswg/css3-text/#line-break-details default line breaking behavior] rules. In addition, CSS3 Text does not define the meaning of `auto` other than saying "the UA determines the set of line-breaking restrictions to use". Since these definitions leave a great deal of latitude on the part of the browser (UA implementation), WebKit must make specific choices in how to interpret these values, about which see more below. === The former `-webkit-line-break` property === Since Safari 3.0, WebKit has supported a non-standard `-webkit-line-break` property, based on the earlier `-khtml-line-break` property in Safari 2.0, which accepted one of two values: * `normal` (default) * `after-white-space` The behavior for `normal` was defined by the [http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariCSSRef/Articles/StandardCSSProperties.html#//apple_ref/css/property/-webkit-line-break Safari CSS Reference] as "a standard line-breaking rule", while `after-white-space` was defined as "the line breaks after white space", neither of which definitions are sufficiently precise to obtain interoperability. === The new `-webkit-line-break` property === With the introduction of CSS3 Text features, and since its properties have not yet been designated non-prefixed by the CSS Working Group, it is necessary to merge the value space of the former `-webkit-line-break` property and the new `line-break` property into a newly defined `-webkit-line-break` property that accepts the following values: * `auto` (default) * `loose` * `normal` * `strict` * `after-white-space` Note that this functional merger results in the value `auto` being returned as the default value instead of the former `normal` value. || **Value** || **Interpretation** || || `auto` || ICU default rules || || `loose` || ICU default rules as modified by CSS3 Text semantics for `loose` || || `normal` || ICU default rules as modified by CSS3 Text semantics for `normal` || || `strict` || ICU default rules as modified by CSS3 Text semantics for `strict` || === Implementation Details === == References == 1. [=#css3text http://dev.w3.org/csswg/css3-text/] 1. [=#uax14 http://www.unicode.org/reports/tr14/] 1. [=#icu http://site.icu-project.org] 1. [=#html5lang http://www.w3.org/TR/html5/global-attributes.html]