Version 3 (modified by, 9 years ago) (diff)

Elaborate content.

Line Breaking in WebKit

WARNING: This page contains forward looking statements, which should not yet be considered an accurate description of WebKit.

Line Breaking

CSS3 Text defines a set of rules governing 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 UAX14, must be honored; an example of the latter is that soft break opportunities are not concretely defined.

The line-break property

In order to customize line breaking behavior, CSS3 Text intorduces the inheritable 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 default line breaking behavior rules.

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 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.

Implementation Details