previous   next   contents  

8. SMIL 3.0 smilText

Editors for SMIL 3.0
Dick Bulterman, CWI
Sjoerd Mullender, CWI
Samuel Cruz-Lara, INRIA

Table of contents

8.1 Changes for SMIL 3.0

This section is informative.

This module defines new functionality for SMIL 3.0. It extends the media types available for SMIL, but does not alter any other existing functionality from SMIL 2.1 or earlier versions.

8.2 Introduction

This section is normative.

The functionality described in these modules provide a new media type for use in SMIL presentations. This functionality is called smilText. Unlike other media types defined in the media object module, all of which are synonyms of the ref element, the smilText modules provide a text container element with an explicit content model for defining in-line text. The smilText modules also define a set of additional elements and attributes to control explicit in-line text rendering. smilText content is processed in a manner consistent with other SMIL media. This means, among other aspects, that the smilText respects SMIL timing and layout behavior, including the semantics of the fit and fill attributes of SMIL Layout.

The smilText Modules are composed of a BasicText module and two modules with additional functionality that build on top of the BasicText module: the TextStyling and TextMotion modules. These modules contain elements and attributes used to define in-line text content. Since the smilText elements and attributes are defined in a series of modules, designers of other markup languages can reuse these modules when they need to include a simple form of timed text functionality into their language.

8.2.1 Motivation

This section is informative.

The purpose of including text content functionality into SMIL 3.0 is to allow authors to define small amounts of lightly-formatted text within the context of a SMIL presentation. Such text can be used for labels within a presentation or for incidental captions or foreign-language subtitles. Users who wish to use large amounts of structured text (with or without temporal markup) should consider the use of external text media objects encoded in formats such as XHTML or the "Distribution Format Exchange Profile" (DFXP) of Timed Text [DFXP].

All versions of SMIL have had support for the text element, which is defined as an alias of the generic SMIL ref media reference element. A typical use of the text element is:

    <text region="Title" src="Headline.html" dur="10s" >

Users new to SMIL are often surprised that the text element does not have a content model -- that is, an ability to specify the content text along with the element, such as in:

    <text region="Title" dur="10s" >
       Willemijn's 11th Birthday Party
    </text>

More advanced users of SMIL found that they were able to insert in-line text content into the SMIL file using a data URL, such as:

    <text src="data:,Willemijn's%2011th%20Birthday%20Party" 
          region="Title" dur="10s" >

However, the strict syntax of this approach, plus the limited styling options available, make it a less-than-optimal way of including incidental text content into a SMIL presentation. A more author-friendly approach to text inclusion was a requirement for SMIL 3.0.

The implementation of SMIL on a wide range of devices, from set-top boxes and mobile devices to conventional desktop computers, means that care needed to be taken in defining the complexity of the smilText modules. The motivation of the SMIL's in-line text facility was not to provide complete support for all types of text, but to provide a balance between authoring convenience and player complexity. smilText was also designed to differentiate text styling from general layout and positioning so that smilText could be used efficiently with SMIL Layout. Both of these motivations, plus the desire to define a media facility that could be used across all of SMIL's implementation platforms, has resulted in a simple text specification that can meet many of the requirements for incidental text within a SMIL document.

smilText has been designed as a functional subset of the W3C Timed Text Distribution Format Exchange Profile (DFXP) of TimedText. While users familiar with DFXP will recognize the functionality included in this specification, the differences in temporal and layout specifications between SMIL and DFXP have resulted in a slightly different syntax in the two languages. The SYMM working group has striven to minimize these differences. A complete list of differences between smilText and DFXP is presented in Appendix A.

8.2.2 The smilText Rendering Model

In order for text content to be compatible with the SMIL timing semantics, a general text processing model has been defined for smilText. In this model, text is classified as a continuous media type, with the inherent duration defined by timing mark-up within the smilText definition. All text content is processed as if it were first rendered to an off-screen bitmap; this bitmap is then used as the basis for inclusion into a SMIL presentation much as if it were a video object. If the smilText contains no internal timing mark-up, the processing model treats it as if it were a logical image.

The dimensions used in constructing the off-screen bitmap representation of smilText will depend on a number of factors. In general, the layout model used to define a drawing area for the text content will provide initial values for the extents of the text area. The default text-wrap behavior for smilText is to wrap the text content based on region width. In this case, the region will determine the text-area width and the text content will determine the effective off-screen bitmap height. If the wrap behavior is set to disallow automatic text wrapping (which is only possible if the TextStyle module is supported by the profile implementing smilText), the effective height is determined based on the number of lines of text (which in turn is determined by the number of manual line breaks created via the br element) and constrained by the region height, while the text content determines the off-screen bitmap width.

In most cases, content defined in a smilText element will define a new off-screen bitmap pseudo-image that will replace any existing content in the target region. If multiple smilText elements are active simultaneously and target the same layout region, the behavior is fully defined by the semantics of the SMIL timing and layout models. Users of smilText are encouraged to study the examples at the end of each module description to better understand the impact of SMIL timing on text rendering with smilText.

8.3 SMIL 3.0 BasicText Module

This section is normative.

This section defines the elements and attributes that make up the functionality in the SMIL 3.0 BasicText module. Languages implementing elements and attributes found in the BasicText Module must implement all elements and attributes defined in this section.

8.3.1 Elements and Attributes

The SMIL 3.0 BasicText module defines four elements and four attributes which, together, provide basic support for in-line text within a SMIL presentation. The functionality provided by these elements and attributes represent the minimum level of text processing that can be required by a user agent implementing smilText.

The elements defined in this module are:

smilText
tev
clear
br

The attributes defined in this module are:

begin
next
textWrapOption
xml:space

In addition, this module extends the definition of the SMIL Layout region element to include the textWrapOption attribute.

Note that unless overridden by the profile integrating these modules, all smilText elements will also reference the xml:id, xml:lang and ITS attributes to specify the identity and the language used in a particular text fragment.

For profiles that support only the BasicText module, all in-line text content styling and processing is defined and controlled by the SMIL user agent rendering the text. Additional content styling elements and attributes are defined in the TextStyling and TextMotion modules; support for this extended functionality is profile dependent.

The smilText Element

The smilText element functions as a logical and temporal structuring element that allows the inclusion of in-line text content into a SMIL presentation. When rendering in-line text, the smilText element provides a top-level container for timing semantics. Additional timing semantics may be defined on the content within the smilText element.

When text is rendered into an associated region, the existing content of the region is replaced by the element content. The properties of the region will determine the extents of the rendering area and the clipping behavior of text placed in the region. The effective value of the textWrapOption attribute will determine if lines wrap if they are wider than the space provided. In-line text is considered to be rendered instantaneously at the beginning of the simple duration of the text element unless temporal markup using the tev or clear elements is defined within the text. In smilText, extra white space between characters is processed according to the xml:space model defined in XML 1.1 [XML11]. The xml:space attribute is reused in smilText, with the conventional semantics described in the section xml:space, below.

Anchors and links, if supported by the profile integrating this module, may be attached to content within the smilText element. In these cases, the syntax and semantics of SMIL Linking will be expected, including temporal attributes on anchors.

Element attributes

This element accepts the textWrapOption and xml:space attributes, which will override the effective value for these attribute defined on the layout region.

Profiles including the smilText element must define which other SMIL attributes may be attached to this element. At a minimum, the definition of an associated layout region and basic SMIL timing control, including the definition of a begin and end or duration will be expected.

Element Content

The smilText element contains mixed content. The profile integrating this element will define a content model. If character content is present, it will be rendered as text in a manner consistent with other elements and attributes in this module. The intrinsic duration of a smilText element ends as soon as the last resolved tev or clear element is processed. If a smilText element does not contain any internal timing, then the simple duration will be determined by timing markup on the element itself. If no content is present, the smilText element must still observe all SMIL timing properties.

The tev Element

The tev element defines a "temporal moment" within a block of smilText content. Depending on the values of the begin or next attributes, it determines a scheduling time at which the associated text content (up to the following tev or clear element or the end of the smilText element) is rendered. The tev element does not define a content container, but is simply a temporal marker within a text fragment.

Element attributes

This element accepts the begin and next attributes. Profiles including the tev element must define which other SMIL attributes will be attached to this element.

Element content

This element has no content.

The clear Element

The clear element defines a "temporal moment" within a block of smilText content at which the full contents of the rendering area are cleared. Depending on the values of the begin or next attributes, it also determines a scheduling time at which the associated text content (up to the following tev or clear element or the end of the smilText element) is rendered. This element is functionally equivalent to the tev element, except that it has a side-effect of clearing the rendering area before any new content is rendered. This element does not define a content container, but is simply a temporal marker within a text fragment.

Element attributes

This element accepts the begin and next attributes. Profiles including the clear element must define which other SMIL attributes will be attached to this element.

Element content

This element has no content.

The br Element

The br element functions as a forced line break within in-line content defined in a smilText element. The br element is only valid within as content of a smilText element and has no temporal semantics other than those of its parent smilText element.

Element attributes

This element does not accept any attributes beyond those specified by the profile.

Element content

This element has no content.

The begin Attribute

This attribute defines an absolute time, relative to the beginning of the parent smilText element, when the associated tev or clear element becomes active. Within a single element, absolute begin times are expected to be specified in temporal order. If this is not the case, the associated tev or clear element becomes active as soon as the previous fragment is activated.
The attribute value is a semi-colon separated list of begin-values:
begin-value : ( clock-value | event-value )
Defines the element's begin time.
Clock-value
Describes the element begin as a non-negative offset from the start of the element's smilText container. The offset is measured in parent simple time.
event-value : ( Id-value "." )? ( event-ref? ) ( ( "+" ) Clock-value )?
Describes an event and an optional offset that determine the element begin. The element begin is defined relative to the time that the event is raised. Events may be any event defined for the host language in accordance with [DOM2Events]. These may include user-interface events, event-triggers transmitted via a network, etc. When using smilText, only event-based timing is support. The use of offsets based on scheduled activation of other elements is not supported.

The general semantics of this element are the same as the SMIL begin attribute defined within the timing module, with the restriction that only the subset of potential time values defined above are supported.

If both a begin and next attribute are defined on any tev/clear elements, only the begin attribute will be recognized.

The next Attribute

The next attribute defines a relative start time, relative to the effective begin time of the parent smilText element, or the most recently activated tev or clear element within the parent.
The attribute value is single clock value.
Clock-value
Defines a time marker relative to the effective start time of the preceding temporal marker The offset is measured in parent simple time.

If both a begin and next attribute are defined on any tev/clear elements, only the begin attribute will be recognized.

The textWrapOption Attribute

The textWrapOption attribute specifies whether text content that is larger than the effective space available on one line in a region wraps. Given the complexities of general support for line breaking in different languages, smilText only can guarantee implementation-dependent, best effort support for determining appropriate line break points.

Values:

wrap (default)
Text is wrapped across lines within a region: content that extends beyond the logical boundary of the rendering region will be displayed across multiple lines or columns.
noWrap
Text is not wrapped across lines within a region: content that extends beyond the logical boundary of the rendering region will be truncated in an implementation-dependent manner.
inherit
The effective value is used, as defined by the initial value or an override value.

The initial value is set to wrap.

Unless otherwise defined by the profile integrating this attribute, it may be used on the smilText element or as a default on the region element.

This section is informative.

Since smilText is expected to be supported by a wide range of rendering agents, the behavior associated with text wrapping is defined to be best-effort. In general, rendering agents are encouraged to support text wrapping as defined by DFXP [DFXP].

The xml:space Attribute

The xml:space attribute specifies how whitespace and linefeeds are processed.

Values:

default (default)
Whitespace is collapsed according to the semantics defined by XML 1.1, ([XML11] section 2.10).

As with DFXP, smilText processing with an effective value for xml:space of default must occur as if the following XSL 1.0 [[XSL 10]] properties were specified:

  • suppress-at-line-break="auto"

  • linefeed-treatment="treat-as-space"

  • white-space-collapse="true"

  • white-space-treatment="ignore-if-surrounding-linefeed"

preserve
Whitespace is preserved according to the semantics defined by XML 1.1, ([XML11], section 2.10).

As with DFXP, smilText processing with an effective value for xml:space of preserve must occur as if the following XSL 1.0 [[XSL 10]] properties were specified:

  • suppress-at-line-break="retain"

  • linefeed-treatment="preserve"

  • white-space-collapse="false"

  • white-space-treatment="preserve"

This attribute may be used on the smilText element or as a default on the region element. In general, smilText does not add white space into a text string unless explicitly authored.

Evaluation of begin and end time lists

A smilText object is defined as a collection of text characters that may have one or more timing markers inserted in the text. The markers allow incremental appearance of text fragments.

In its most simple form, a smilText element contains a block of text that is displayed in its entirety at the effective start time of the element. This behavior is logically equivalent to placing a clear element with a begin time of '0' at the start of the smilText element.

It is possible to insert one or more tev elements within the smilText content. Each of these elements specify an absolute or relative starting time for the text immediately after the tev element. The text is displayed instantaneously up to the following tev element. If a clear element is used, any content within the associated rendering region is erased before the new text is displayed.

The next attribute defines a relative offset as the start time of the associated tev or clear element. This time is defined as being relative to the effective start time of the preceding tev (or clear) element -- or from the start of the smilText element if no preceding tev/clear element was defined. The effective start time is the time that the preceding element actually was activated, either by a resolved time value or in response to an event.

The intrinsic duration of a smilText element is one of the following:

Examples

This section is informative.

General Use of smilText

The smilText element provides a temporal wrapper for in-line text:

    <smilText>
       Hello world!
    </smilText>

The smilText element is the equivalent of allowing a data URL that contains text content, such as: <ref src="data:,Hello%20world!" ... > .

In this simple form, the text will be rendered based on the default layout properties defined for the user agent. If SMIL Layout is used, the default behavior is: a dynamic region will be defined that contains the text content of the element. All styling information -- including font, font size, font style and font color -- will be determined by the SMIL player.

If the SMIL Layout BasicLayout module is also supported by the profile implementing this module, the rendering extent and the clipping behavior of the text rendered in a SMIL region will be determined by the effective value of SMIL's layout attributes.

<smil ...>
 <head>
   ...
   <layout>
     ...
     <region xml:id="Title" top="5px" left="10%" width="80%" height="30px" />
     ...
   </layout>
  </head>
  <body>
   ...
    <smilText region="Title" dur="10s">
       Willemijn's 11th Birthday Party
    </smilText>
   ...
  </body>
</smil>

This is equivalent to specifying: <ref region="Title" src="data:,Hello%20world!" ... >. In both cases, the properties associated with the region named Title will be used when positioning the text.

If the rendering space for the content of the smilText element is greater than the horizontal extent of one line, the effective value of the textWrapOption attribute will determine whether content will be clipped or wrapped:

<smil ...>
 <head>
     ...
     <region xml:id="Title" top="5px" left="10%" width="80%" height="30px" 
          textWrapOption="wrap"/>
     ...
  </head>
  <body>
   ...
    <smilText region="Title" dur="10s">
       Willemijn's 11th Birthday Party was held six weeks late. (Again!)
    </smilText>
   ...
  </body>
</smil>

Line breaks within smilText content may be forced by using the br element within text content:

   ...
    <smilText region="Title" dur="10s">
       Willemijn's 11th Birthday Party<br/>was held six weeks late.<br/>(Again!)
    </smilText>
   ...
  </body>
</smil>

The following fragment illustrates use of temporal markers with a smilText element that contains an explicit duration:

 <smil ...>
  <head>
     ...
    <layout>
     <root-layout width="400" height="300"/>
      <region xml:id="Contents" top="5px" left="10%" width="80%" height="300"/>
    </layout>
   </head>
   <body>
      ...
        <smilText xml:id="TS01" region="Contents" dur="6s">
           Willemijn's 11th Birthday Party
           <tev xml:id="TS02" next="2s"/>
           was held six weeks late.
           <clear xml:id="TS03" begin="4s"/>
           (Again!)
        </smilText>
         ...
   </body>
 </smil>

The smilText element TS01 is active for 6s. All activity occurs within this time period, even if the timing definition within the smilText object extends beyond the 6s time limit. If SMIL Layout is used (as in this case), the fill attribute will determine the visual persistence of the text content if its internal timing was shorter than that of the smilText object.

The initial content that is rendered is the string Willemijn's 11th Birthday Party. At 2s after the start of the TS01 container, the fragment with id TS02 gets rendered. In this case, the content was held six weeks late. is displayed along with the previous contents of the smilText element. (The exact display depends on the size of the rendering region and the setting of the textWrapOption attribute.)

At 4s after the start of the parent smilText container, the fragment with the id TS03 is displayed. The use of the clear element causes the display area to be erased before the new text is displayed. Note that since a begin attribute is used instead of the next attribute, the activation time of this fragment is relative to the containing smilText container instead of relative to TS02.

The following fragment is similar to the previous example, except that it illustrates use of temporal markers with a smilText element that does not contain an explicit duration (and in which the duration is dependent on the intrinsic duration of the smilText content):

 <smil ...>
  <head>
     ...
    <layout>
     <root-layout width="400" height="300"/>
      <region xml:id="Contents" top="5px" left="10%" width="80%" height="300"/>
    </layout>
   </head>
   <body>
      ...
        <smilText xml:id="TS04" region="Contents">
           Willemijn's 11th Birthday Party
           <tev xml:id="TS05" next="2s"/>
           was held six weeks late.
           <clear xml:id="TS06" begin="4s"/>
           (Again!)
        </smilText>
         ...
   </body>
 </smil>

The smilText element TS04 is active for a duration that is determined by its content. All activity occurs within this time period. Note that in this example, this may lead to an unexpected result.

The initial content that is rendered is the string Willemijn's 11th Birthday Party. At 2s after the start of the TS05 container, the fragment with id TS02 gets rendered. In this case, the content was held six weeks late. is displayed along with the previous contents of the smilText element.

At 4s after the start of the parent smilText container, the fragment with the id TS06 is displayed. The use of the clear element causes the display area to be erased before the new text is displayed. All of the text that is defined to be rendered at this instance is placed into the region, but after this the smilText element ends: no additional timing markup has been provided to extend its intrinsic duration. The fill semantics associated with the smilText element will determine the visual persistence of the content, if any.

The following example is used to illustrate smilText behavior when used with event-based timing:

      ...
    <par>
        <smilText xml:id="TS11" region="Contents" dur="6s">
           Willemijn's 11th Birthday Party
           <tev xml:id="TS12" next="2s"/>
           was held six weeks late.
           <clear xml:id="TS13" begin="TS14.beginEvent"/>
           (Again!)
        </smilText>
        <audio xml:id="TS14" begin="4.5s" src="gongAudio.mp3">
    </par>
      ...

In this example, elements TS11 and TS12 act as TS01 and TS02 in the example earlier in this section. Coincident with the start of TS12, the potential active period for TS13 begins. Anytime between 2s after TS11 and the end of the smilText element, TS13 will begin if the "gong.beginEvent" is activated. In this example, the activation happens at 4.5 after the start of the par element containing both the smilText and audio object.

The following example illustrates the interaction of timing rules within smilText:

      ...

        <smilText xml:id="TS31" region="Contents" dur="10s">
           fragment 1,
           <tev xml:id="TS32" next="2s"/>
           fragment 2,
           <clear xml:id="TS33" begin="1s"/>
           fragment 3,
           <clear xml:id="TS34" begin="XXX.beginEvent"/>
           fragment 4,
           <clear xml:id="TS35" next="5s"/>
           fragment 5,
           <clear xml:id="TS36" begin="8s"/>
           fragment 6.
        </smilText>
      ...

The TS31 smilText element starts, and 'fragment 1,' is rendered. Then, 2s later, TS32 is appended to the displayed text. At the same time, TS33 is appended to the display: it has an absolute begin time of 1s after the start of TS31, but its temporal scope only becomes active once TS32 has displayed. (The begin time is still absolute, so the fragment is displayed immediately.) TS34 comes into temporal scope at 2s (that is, at the effective begin time of its predecessor), so the associated fragment will be displayed if the event is triggered between 2s and 10s in the presentation. TS35 is displayed 5s after the effective start of TS34 (assuming the parent smilText container is still active). The effective begin time of TS36 will depend on a number of factors: if the TS35 fragment starts before an absolute 8s, TS36 will wait until 8s. If it starts later (but before the end of the smilText container), the fragment will start immediately.

Fill Semantics of smilText

SMIL timing defines a number of rules that govern the rendering persistence of smilText content. These are:

Layout and Rendering Consequences of smilText

In terms of visual behavior, the value of the fit attribute will determine clipping behavior of the text. Since not all user agents can be expected to dynamically scale plain text, fit="slice" will be the expected default behavior with basic smilText.

In terms of the rendering semantics defined in the TextStyling module, the only behavior defined by basic smilText is the append text mode semantic.

8.3.2 Integration Requirements

If the including profile supports the XMLBase functionality [XMLBase] , the values of the longdesc attribute (of present) on the smilText element must be interpreted in the context of the relevant XMLBase URI prefix.

All of the attributes specified for media within the SMIL MediaParam module must be supported by implementations integrating this module.

Any profile that integrates the clear element must define what is meant by "display area" and further define the interaction.

8.4 SMIL 3.0 TextStyling Module

This section is normative.

This section defines the elements and attributes that make up the SMIL TextStyling Module. Languages implementing the elements and attributes in the TextStyling Module must implement all elements and attributes defined below, as well as those defined in the BasicText module.

8.4.1 Elements and Attributes

The TextStyling module defines the following five elements:

div
p
span
textStyle
textStyling

The TextStyling module defines the following twelve attributes:

textAlign
textBackgroundColor
textColor
textDirection
textFontFamily
textFontSize
textFontStyle
textFontWeight
textMode
textPlace
textStyle
textWritingMode

In addition, this module extends the definition of the SMIL Layout region element to include the TextStyling attributes listed above.

Since smilText is designed to be implemented on a wide range of rendering agents, not all agents can be expected to support all of the styling attributes defined in this section. If a given attribute cannot be supported, an implementation-dependent behavior may be substituted by the rendering agent.

The div Element

The div element functions as a logical container for in-line formatting attributes defined within a smilText element. The div element does not define any temporal semantics with a smilText element. Use of the div element causes an implicit line break before the rendering of the element. User agents may supply an additional line of white space.

Element attributes

Unless otherwise defined by the profile integrating this module, the div element may (re)specify values for the following attributes:

textAlign
textBackgroundColor
textColor
textFontFamily
textFontSize
textFontStyle
textFontWeight
textStyle
textWrapOption
textWritingMode
xml:space

Unless specified otherwise by the profile integrating this element, the profile's core attributes may also be used. All other attributes are ignored.

Element content

Unless overridden by the profile integrating this module, this element accepts mixed content including zero or more characters to which the specified styling is applied. Any styling attributes changed within the scope of this element must be restored to their previous values outside the scope of this element. The content accepted by this element is defined by the profile integrating this module.

The p Element

The p element functions as a logical container for in-line formatting attributes defined within a smilText or div element. The p element may not be nested within another p element. The p element does not define any temporal semantics with a smilText element. The use of the p element causes an implicit line break. User agents may supply an additional line of white space after the implicit line break. Any extra empty lines may be merged with empty lines produced by the div element on a best-effort basis.

Element attributes

Unless defined otherwise by the profile integrating this module, the p element may (re)specify values for the following attributes:

textBackgroundColor
textColor
textFontFamily
textFontSize
textFontStyle
textFontWeight
textStyle
textWrapOption
textWritingMode
xml:space

Unless specified otherwise by the profile integrating this element, the profile's core attributes may also be used. All other attributes are ignored.

Element content

Unless otherwise specified by the profile integrating this module, this element accepts mixed content, including zero or more characters to which the specified styling is applied. Any styling attributes changed within the scope of this element must be restored to their previous values outside the scope of this element. The content accepted by this element is defined by the profile integrating this module.

The span Element

The span element functions as a logical container for in-line formatting attributes defined within a smilText, div, or p element. The span element does not define any temporal semantics with a smilText element. The use of the span element does not cause a line break nor does it insert any white space before or after the scope of the element.

Element attributes

Unless specified otherwise in the profile integrating this module, the span element may (re)specify values for the following attributes:

textBackgroundColor
textColor
textDirection
textFontFamily
textFontSize
textFontStyle
textFontWeight
textStyle
xml:space

Unless specified otherwise by the profile integrating this element, the profile's core attributes may also be used. All other attributes are ignored.

Element content

Unless overridden by the profile integrating this module, this element accepts mixed content, including zero or more characters to which the specified styling is applied. Any styling attributes changed within the scope of this element must be restored to their previous values outside the scope of this element. The content accepted by this element is defined by the profile integrating this module.

The textStyle Element

The textStyle element is used to define a set of text style attributes in the document head section. The style group defined with this element may be used within a SMIL layout region to define default styles for text elements in that region, or within the smilText content elements smilText, div, and p.

Element attributes

All of the styling attributes defined in this module (with the exception of the textStyle attribute) may be specified within a textStyle element in the head section. Note that if text style attributes are referenced on an element to which they do not apply, they are ignored. If multiple instances of the same styling attribute are defined, the value associated with the lexically-last instance is used.

This element will use the xml:id attribute within the profile's core attribute set to define a unique identity for the set of text style attributes.

Element content

This element has no content.

The textStyling Element

The textStyling element delineates a set of textStyle elements in the document head section.

Element attributes

Unless specified otherwise by the profile integrating this element, the profile's core attributes may also be used. All other attributes are ignored.

Element content

This element contains one or more textStyle elements as children.

The textAlign Attribute

The textAlign attribute provides a hint on how text should be aligned within the region referenced by the smilText element, based on the primary writing direction defined by the textWritingMode attribute. textAlign attribute may be used on the smilText and div elements or as a default on the region and textStyle elements. It is supported on a best-effort basis. The semantics of this attribute are a subset of those defined in XSL 1.1, ([XSL11], section 7.16.9).

Values:

start
The text is aligned on the starting edge of the rendering region based on the primary writing direction defined by the textWritingMode attribute. For example, it will be left-aligned in the region if the primary writing mode is left-to-right, and it will be right-aligned in the region if the primary writing mode is right-to-left.
end
The text is aligned on the ending edge of the rendering region based on the primary writing direction defined by the textWritingMode attribute. For example, it will be right-aligned in the region if the primary writing mode is left-to-right, and it will be left-aligned in the region if the primary writing mode is right-to-left.
left
If the primary writing direction is either left-to-right or right-to-left, the text is left-aligned in the region. It is ignored otherwise.
right
If the primary writing direction is either left-to-right or right-to-left, the text is right-aligned in the region. It is ignored otherwise.
center
If the primary writing direction is either left-to-right or right-to-left, the text is center-aligned in the region. It is ignored otherwise.
inherit (default)
The effective value is used, as defined by the initial value or an override value.

The initial value for this attribute is start.

This section is informative.

Because of the implementation complexities of arbitrary text placement, not all text renderers may support all of the alignment operations specified by this attribute. If the selected attribute value cannot be supported, a renderer may substitute a player-dependent behavior.

The textBackgroundColor Attribute

The textBackgroundColor attribute is identical to the "background-color" property in the XSL 1.1, ([XSL11], section 7.8.2) specification. As such, support for CSS2 system colors is required. This attribute specifies the background color used to fill the area around text content that falls within a player-defined bounding box. This attribute may be used on the smilText, div, p or span elements, or as a default on the region and textStyle elements.

Values:

CSS2 color specification
The textBackgroundColor attribute may take on the CSS value inherit. This means that the background color used for text will be that of the backgroundColor attribute defined for the region specified by the parent text element.

If no color has been specified, the default is transparent.

The textColor Attribute

The textColor attribute is identical to the "color" property in the XSL 1.1, ([XSL11], section 7.18.1) specification. As such, support for CSS2 system colors is required. This attribute specifies the color used to render text content in the region specified by the parent text element. This attribute may be used on the smilText, div, p or span elements, or as a default on the region and textStyle elements.

Values:

CSS2 color specification
The textColor attribute may take on the CSS value inherit. This means that the color used for text will be that of the color attribute defined for the region specified by the parent text element.

If no color has been specified, the default is implementation dependent.

The textDirection Attribute

The textDirection attribute provides a hint on the desired horizontal direction of text within a span. The specified direction may be overridden by the font based on the Unicode Bidirectional algorithm. This attribute is supported on a best-effort basis. The semantics defined in XSL 1.1, ([XSL11], section 7.29.1) are available, plus two attributes that allow default unicode-bidi behavior to be overriden. Unlike XSL 1.1 and DFXP, smilText only supports this functionality within a span element or as a default on the textStyle element. For block-level control of text direction, see the textWritingMode attribute.

Values:

ltr
Text is written in a left-to-right direction, unless overridden by font unicode-bidi processing.
rtl
The text is written in a right-to-left direction, unless overridden by font unicode-bidi processing.
ltro
Text is written in a left-to-right direction, and any font unicode-bidi processing is explicitly overridden.
rtlo
The text is written in a right-to-left direction, and any font unicode-bidi processing is explicitly overridden.
inherit (default)
The effective value is used, as defined by the initial value or an override value.

The initial value for this attribute is ltr.

This section is informative.

Because of the implementation complexities of arbitrary text placement, not all text renderers may support all of the direction operations specified by this attribute. If the selected attribute value cannot be supported, a renderer may substitute a player-dependent behavior.

In XSL and DFXP, two attributes are used to control direction and unicode-bidi override. Given the lightweight nature of smilText, basic override behavior is supported within the textDirection attribute.

The textFontFamily Attribute

This attribute defines the family of font used to render text. An ordered list of specific font names and/or a generic family name may be supplied. The resolution of a generic family name to a specific font instance is not defined by this specification, but may be defined by a profile implementing this module. The sansSerif and serif fonts are expected to be proportional. See XSL 1.1, ([XSL11], section 7.9.2) for font family details. This attribute may be used on the smilText, div, p or span elements, or as a default on the region and textStyle elements.

Values:

font-list:
a prioritized, comma-separated list of font names, optionally including one or more of the generic font identifiers monospace, sansSerif, and/or serif.
inherit: (default)
The effective value is used, as defined by the initial value or an override value.

The initial value for this attribute is sansSerif. If an unrecognized textFontFamily is specified, monospace will be expected.

The textFontSize Attribute

This attribute defines the size of the font to be used. In order to reduce implementation burden and to provide scalability across device classes, only absolute and relative sizes (as defined in XSL 1.1, ([XSL11], section 7.9.4) are supported by smilText. This attribute may be used on the smilText, div, p or span elements, or as a default on the region and textStyle elements.

Values:

length
absolute-size
absolute-size represents a set of absolute font sizes, maintained by the SMIL player (and possible influenced by the player user agent). Expected absolute sizes are: [ xx-small | x-small | small | medium | large | x-large | xx-large ]. As recommended in XSL 1.1, it is expected that each of the absolute sizes will differ by a factor of 1.2. The default absolute size is medium.
relative-size
relative-size represents a relative increase or reduction in the absolute font size value. Expected values are: [ larger | smaller ]. Effective font sizes larger than the absolute-size xx-large or smaller than the absolute-size xx-small will not be supported.
inherit (default)
The effective value is used, as defined by the initial value or an override value.

The initial value for this attribute is medium.

The textFontStyle Attribute

This attribute defines the style (italic, oblique, reverseOblique or normal) of the text displayed. If the specified style is not available, a style of normal will be used. This attribute may be used on the smilText, div, p or span elements, or as a default on the region and textStyle elements. Of the values defined in XSL 1.1, ([XSL11], section 7.9.7), only the options defined in the following list will be supported by smilText.

Values:

normal
italic
oblique
reverseOblique
inherit (default)
The effective value is used, as defined by the initial value or an override value.

The initial value for this attribute is normal.

The textFontWeight Attribute

This attribute defines the weight (bold or regular) of text displayed. If the specified weight is not available, a weight of normal will be used. This attribute may be used on the smilText, div, p or span elements, or as a default on the region and textStyle elements. Of the values defined in XSL 1.1, ([XSL11], section 7.9.9), only the options defined in the following list will be supported by smilText.

Values:

normal
The normal font weight for the font family selected is used.
bold
The bold font weight for the font family selected is used.
inherit (default)
The effective value is used, as defined by the initial value or an override value.

The initial value for this attribute is normal.

The textMode Attribute

The attribute defines the manner in which each temporal fragment within a smilText element is added to the rendering area. This attribute may be used on the smilText element or as a default on the region and textStyle elements.

Values:

append
The new fragment is added to any existing content in the rendering area. The new content is appended to the text at the logical end of the display without the introduction of any additional white space.
replace
New content replaces any existing content in the rendering area. The new content becomes the only content within the display.
inherit (default)
The effective value is used, as defined by the initial value or an override value.

The initial value for this attribute is append.

This section is informative.

The textStyling module extends the single default value of append defined by the BasicText module with replace and inherit. Note that the textMotion module further extends this attribute with values that specify how text movement is controlled.

The textPlace Attribute

The attribute provides a hint on where content is initially placed in a rendering area, both as an initial string and after a clear operation. The placement is defined in terms of the secondary writing direction, as defined by the textWritingMode attribute. The textPlace attribute may be used on the smilText element or as a default on the region and textStyle elements.

Values:

start
New content in an empty region is placed first at the starting edge of the secondary writing direction, and then flowed in the secondary writing direction as text is wrapped or explicit br elements are used. For example, if the secondary writing direction is top-to-bottom, the content will initially be placed at the top of the region.
center
New content in an empty region is placed first at the center of the secondary writing direction, and then flowed in the secondary writing direction as text is wrapped or explicit br elements are used. For example, if the secondary writing direction is top-to-bottom, the content will initially be placed at the vertical center of the region.
end
New content in an empty region is placed first at the ending edge of the secondary writing direction, and then flowed in the secondary writing direction as text is wrapped or explicit br elements are used. For example, if the secondary writing direction is top-to-bottom, the content will initially be placed at the bottom of the region.
inherit (default)
The effective value is used, as defined by the initial value or an override value.

The initial value for this attribute is start.

This section is informative.

If no text motion attributes have been defined, any text that is explicitly or implicitly placed beyond the ending boundary of the region will not be displayed. As a consequence, if the value end is used without motion, only one line of content will be visible.

s

The textStyle Attribute

The attribute references a text style set defined using the textStyle element in the document head. This attribute may be used on the smilText, div, p or span elements, or as a default on the region element.

Values:

IDREF
The ID of a textStyle definition. If the IDREF specified as a value does not refer to a valid textStyle set definition, this attribute is ignored.

The textStyle attribute will be applied only to the content within the scope of the element to which it is applied.

The textWritingMode Attribute

The textWritingMode attribute provides a hint on the desired primary and secondary writing directions of text added to a region. It is supported on a best-effort basis. The semantics defined in XSL 1.1, ([XSL11], section 7.29.7) are available, with the restriction that only the subset provided below may be available. This attribute may be used on the smilText, div or p elements, or as a default on the region and textStyle elements. When used with the div or p elements, implementations may limit the allowable the override behavior to the opposite of the primary writing direction. The specified behavior may be overridden by the Unicode BIDI algorithm. Within a p, the direction of text and unicode-bidi processing may be overridden by the textDirection attribute.

Values: lr-tb | rl-tb | tb-rl | tb-lr | lr | rl | inherit

lr-tb
The primary writing direction of text is a left-to-right progression and the secondary writing direction is a top-to-bottom progression.
rl-tb
The primary writing direction of text is a right-to-left progression and the secondary writing direction is a top-to-bottom progression.
tb-lr
The primary writing direction of text is a top-to-bottom progression and the secondary writing direction is a left-to-right progression.
tb-rl
The primary writing direction of text is a top-to-bottom progression and the secondary writing direction is a right-to-left progression.
lr
A shortcut for lr-tb.
rl
A shortcut for rl-tb.
inherit (default)
The effective value is used, as defined by the initial value or an override value.

The initial value for this attribute is lr-tb.

This section is informative.

Because of the implementation complexities of arbitrary text placement, not all text renderers may support all of the alignment operations specified by this attribute. A given profile may further restrict the available values. If the selected attribute value cannot be supported, a renderer may substitute a player-dependent behavior. At a minimum, lr-tb may be expected.

Implementations may define default behavior if a div or p element attempts to override both the primary and secondary writing directions (such as changing from lr-tb to tb-lr). Additionally, changes to the primary writing direction may be ingored if the text mode is set to crawl, and changes to the secondary writing direction may be ignored if the text mode is set to scroll, as defined within the TextMotion module.

Note that only the subset of XSL 1.1's writing-mode attribute supported by DFXP are adopted by smilText. In smilText, the XSL naming conventions for the writing modes are adopted.

Examples

This section is informative.

The following example provides an indication of the use of smilText within a profile that provides support for the TextStyling module (such as the SMIL 3.0 Language profile).

00 <smil ...>
01  <head>
     ...
02    <textStyling>
03      <textStyle xml:id="HeadlineStyle" textFontFamily="serif" textFontSize="12px" 
             textFontWeight="bold" textFontStyle="italic"          
             textWrapOption="noWrap" textColor="blue" textBackgroundColor="white" />
04    </textStyling>
05    <layout>
         ...
06      <region xml:id="Title" top="5px" left="10%" width="80%" height="25px"
             textStyle="HeadlineStyle" />
07      <region xml:id="Captions" top="215px" left="10%" width="80%" height="35px" 
          textFontFamily="serif" textColor="orange"  backgroundColor="blue"/>
08      <region xml:id="Slides" top="10px" left="5%" width="90%" height="200px" />
09    </layout>
10   </head>
11   <body>
      ...
12    <par>
13     <smilText region="Title" textFontFamily="sansSerif" fill="freeze">
14        Willemijn's 11th Birthday Party
15     </smilText>
16     <seq>
17       <par>
18         <img region="slides" src="p001.jpg" begin="1s" dur="9s"/>
19         <audio ... src="yip.mp3" begin="woof.beginEvent"/>
20         <smilText region="Captions" textAlign="start" dur="8s">
21              Shortly <span textFontStyle="italic">before</span> dawn ...
22              <tev next="1.5s"/>
23              <div textAlign="center" textColor="green">
24              just as the clock began
25              </div>
26              <br/>
27              to chime six times...
28              <tev begin="4s"/>
29              our trusty dog Gretchen
30              <tev xml:id="woof" begin="3s"/>
31              barked. 
32         </smilText>
33       </par>
         ...
34       <par>
35         <img region="Slides" src="p128.jpg" dur="7s"/>
36         <text region="Captions" src="c128.html" dur="7s"/>
37       </par>
38     </seq>
39     <audio ... src="Commentary.mp3" />
40    </par>
41   </body>
42 </smil>

In this example, one text style is defined (on line 03) and three layout regions are defined, one of which (on line 06) references a style definition with local overrides, and another of which (on line 07) uses mostly default style. In the body of the presentation, a parallel container is defined that contains a text title (on line 13); most of the styling attributes are defined on the region via the text style attribute. Later in the presentation, a sequence of images are defined that are each accompanied by one or more text captions. The text definition on line 13 illustrates that text, like images, has no inherit duration, but that by using the SMIL fill attribute, the content of the smilText element remains visible until the end of the parent time container (in this case, the par that is defined on line 12). The three smilText fragments that accompany the image defined on line 18 illustrate that the in-line text object can use the standard SMIL timing attributes, plus several new attributes to explicitly control text placement and styling. A beginEvent can be generated by a text fragment and used to control some other portion of the presentation, as is shown in line 30's triggering of the sound on line 19. Finally, the text element on line 36 illustrates that it is possible to mix in-line and external text in a single document.

8.4.2 Integration Requirements

None.

8.5 SMIL 3.0 TextMotion Module

This section is normative.

This section defines the elements and attributes that make up the SMIL TextMotion Module. Languages implementing the elements and attributes in the TextMotion Module must implement all elements and attributes defined below, as well as those defined in the BasicText and TextStyling modules.

8.5.1 Elements and Attributes

This section defines the elements and attributes that make up the functionality in the SMIL 3.0 TextMotion module.

This module does not define any new elements.

This module:

  1. extends the definition of the BasicText module's smilText element and the TextStyling module's textStyle element to include the textConceal and textRate attributes;
  2. extends the definition of the TextStyling module's textMode attribute to include the crawl, scroll and jump attribute values; and
  3. extends the definition of the SMIL Layout region element to include the textConceal and textRate attributes.

The textMode Attribute

The textMode is extended to support three values for motion-based text presentation of a smilText object. These values may be used on the smilText element or as a default on the region and textStyle elements.

Values:

crawl
This value causes text to move as a single line against the primary writing direction (as defined by the textWritingMode attribute). The initial position of the text in the primary writing direction will be determined by the textAlign attribute, unless overridden by the textConceal attribute. The position of the text in the secondary writing direction will be determined by the textPlace attribute. All line breaks, either implicit or explicit, will be ignored. The speed of movement, in pixels per second, is determined by the textRate attribute. If present, the tev/clear elements may be used to specify incremental appearance of content within a crawling string.
scroll
This value causes text to move smoothly against the secondary writing direction (as defined by the textWritingMode attribute). The alignment of the text in the primary writing direction will be determined by the textAlign attribute. The initial position of the text in the secondary writing direction is defined by the textPlace attribute, unless overridden by the textConceal attribute. All line breaks, either implicit or explicit, will be respected. The speed of movement, in pixels per second, is determined by the textRate attribute. Unless otherwise specified by the textRate attribute, the tev/clear elements may be used to specify incremental presentation of content within a scrolling string.
jump
This value causes text to jump against the secondary writing direction (as defined by the textWritingMode attribute) by line within the region when the current line fills (or after an explicit br). The alignment of the text in the primary writing direction will be determined by the textAlign attribute. The initial position of the text in the secondary writing direction is defined by the textPlace attribute, unless overridden by the textConceal attribute. All line breaks, either implicit or explicit, will be respected. The number of line jumped is determined by the textRate attribute. The tev/clear elements may be used to specify incremental presentation of content within a jumping block.

The default value for this attribute is given in the textMode definition in the TextStyling module.

The textMode will be applied to all text displayed in the region.

This section is informative.

Given the complexities of supporting text motion, it can be expected that motion in all primary and secondary modes may not be available. At a minimum, motion should be supported with an effective text writing mode of lr-tb.

The textConceal Attribute

The textConceal attribute specifies the initial and ending positioning content as a result of a textMode setting of crawl, scroll or jump. This attribute may be specified on the smilText element or as a default on the region and textStyle elements.

Values:

none:
Text initially will be rendered at the starting point in the region defined by the textPlace and textAlign attributes, and will finish at the terminating placement determined by the normal processing of the content. No leading or trailing space will be added.
initial:
Text initially will be rendered at a starting point that is just outside the region and enter the region once the simple duration begins. Text will finish at the terminating placement determined by the normal processing of the content. This has the visual effect that leading spaces will be added to the content. If textMode is set to crawl, the textAlign attribute will be ignored. If textMode is set to scroll or jump, the textPlace attribute will be ignored.
This setting will extend the intrinsic duration of the content to support the rendering of leading spaces.
final:
Text initially will be rendered at the starting point in the region defined by the textPlace and textAlign attributes. At the conclusion of normal processing of the content, any content left in the rendering region will be crawled, scrolled or jumped out of view. This has the visual effect that trailing spaces will be added to the content.
This setting will extend the intrinsic duration of the content to support the rendering of trailing spaces.
both:
The initial and final behavior described for this attribute are both applied to the text.
This setting will extend the intrinsic duration of the content to support the rendering of leading and trailing spaces.
inherit: (default)
The effective value is used, as defined by the initial value or an override value.

The initial value for this attribute is none.

This section is informative.

Given the complexities of supporting text motion and recalculating the intrinsic duration, only best-effort support for all textConceal modes can be expected.

The textRate Attribute

The textRate specifies the rate of motion of smilText elements that have the crawl, scroll or jump values defined for the textMode attribute. This attribute may be specified on the smilText element or as a default on the region and textStyle elements.

Values:

auto (default):
The interpretation of this value depends on the effective motion mode of text. When used with the crawl or scroll text modes, this value specifies that the rendering system should determine the appropriate rate of movement (in pixels per second) to display the entire content of the smilText element (including any extra spacing required for processing the textConceal attribute) within its simple duration. All timing markup on tev/clear elements to be ignored and no activation events will be generated from within the smilText element. If the simple duration is not known, implementations may make an informed guess or provide a default rate. When used with the jump text mode, this value specifies that a single line in the secondary writing direction is jumped when an explicit or implicit line break is generated. There is no further impact on temporal processing of the text. When used with all other text modes, this attribute is ignored.
CSS2 pixel value:
The interpretation of this value depends on the effective motion mode of text. When used with the crawl or scroll text modes, this value defines a non-negative integer representing a pixel movement rate in pixels per second. The "px" unit qualifier in pixel values may be omitted. When used with the jump text mode, this value will be interpreted as a non-negative integer and the "px" qualifier, if present, will be ignored. When used with all other text modes, this attribute is ignored.
non-negative integer:
The interpretation of this value depends on the effective motion mode of text. When used with the crawl or scroll text modes, this value will be interpretted as a CSS2 pixel value without the "px" qualifier. When used with the jump text mode, this value defines the number of lines to jump when adding new content. When used with any other text mode, this attribute is ignored.

Implementations may use simple algorithms to determine the rate of motion, either based on a fixed pixel movement value per update cycle or as a default value.

Looping behavior of crawling, scrolling or jumping text may be specified using standard SMIL repeat semantics on the smilText element.

Examples

This section is informative.

The text motion rendering behavior of within this module has been designed to be relatively simple to implement and stay consistent with other forms of scrollable/crawlable text. The following example illustrates the use of the attributes and attribute values defined in this section.

 <smil ...>
  <head>
     ...
    <layout>
        ...
      <region xml:id="Contents" top="5px" left="10%" width="80%" height="300px"
             textMode="crawl" textRate="20px" />
    </layout>
   </head>
   <body>
      ...
        <smilText xml:id="TS21" region="Contents" textAlign="right">
           Willemijn's 11th Birthday Party
           <tev begin="5s"/>
           was held six weeks late.
           <tev next="5s"/>
           (Again!)
        </smilText>
         ...
   </body>
 </smil>

This example displays a crawling text string that is initially aligned at the right of the display. The text crawls across the screen in a direction that is opposite to the (in this case default) textWritingMode of left-to-right. Initially, only the first fragment is visible. After 5 seconds, the entire portion of the second fragment is made visible; note that a portion may be initially clipped from view. After another 5 seconds, the final fragment is added to the text display.

8.5.2 Integration Requirements

None.

8.6 Appendices

This section is informative.

8.6.1 Appendix A: Differences with the DFXP Specification

While smilText has been modelled as a functional subset of the "Distribution Format Exchange Profile" [DFXP] of W3C Timed Text, there are several differences between the languages. In this section, we review the components taken from DFXP, the components not taken from DFXP and the extensions defined that are not in DFXP.

Components Taken From DFXP for smilText

The following elements and attributes have been taken from DFXP [DFXP] and are included in smilText. Note that relevant attribute names from DFXP are preceded with 'text' to avoid conflict with attributes used in SMIL layout.

Component DFXP Name smilText Name Differences
Content br
div
p
span
br
div
p
span
The br element is identical in use.
The div and span elements may not be nested in smilText. The div, p and span elements may not contain timing markup in smilText.
Styling elements style
styling
textStyle
textStyling
These elements are declared in the document head.
smilText allows styles to be associated with layout regions as default values.
Styling attributes textAlign
backgroundColor
color
direction
fontFamily
fontSize
fontWeight
style
wrapOption
writingMode
textAlign
textBackgroundColor
textColor
textFontFamily
textFontSize
textFontWeight
textStyle
textWrapOption
textWritingMode
smilText limits the range of values permitted for some of these attributes. Several attributes are considered to be hints in smilText: these are textAlign, textDirection, textWrapOption, and textWritingMode. Renderers may supply implementation-dependent behavior for these attributes.

Components Not Taken From DFXP for smilText

The following elements and attributes are not included in smilText.

Additions in smilText Not in DFXP

The following elements and attributes are included in smilText but are not directly available in DFXP [DFXP]:


previous   next   contents