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 timed text. The smilText modules also define a set of additional elements and attributes to control timed text rendering. All smilText content is processed in a manner consistent with other SMIL media. This means, among other aspects, that 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. The SmilText profile allows smilText to be used as an external format; this is described informally in Appendix B.

Since the smilText elements and attributes are defined in a series of modules, designers of other markup languages may reuse these modules when they wish 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 containing embedded temporal markup within the context of a SMIL presentation. Such text may 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 smilText as an text media object, or the use of 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 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.

When used as an external format, a smilText object consists of a smil host-level identifier with a smilText base profile, and a set of dimensioning and temporal parameters. With the exception of event processing, the functionality of embedding a smilText object as an in-line element in a SMIL presentation and storing it in an external object in a separate file is identical.

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

For implementations that support the use of smilText as an external object, a separate rendering agent will control the processing of smilText content. Depending on the implementation of this agent, functionality in the TextStyling and TextMotion modules may be available. Functionality defined in the BasicText module must be supported.

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 rendering text specified in an external file, the smil element together with the smilText baseProfile attribute value provides a top-level container for text content. As defined within the SmilText profile, default timing and spatial characteristics may be defined on the external smilText encoding; when embedded as a media object in a SMIL presentation, these default characteristics will be overridden by the effective values of identical attributes specified on the media object reference in the SMIL presentation.

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 (for in-line use) or the definition of a height/width of the rendering area (for external use), 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.
For in-line use of smilText, the values of the begin attribute are:
begin-value : ( clock-value | ed-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 supported. The use of offsets based on scheduled activation of other elements is not supported. All support for event timing is optional and not required. If event timing cannot be supported, the associated time will be ignored.


When used as an external container format, the attribute value is a single clock valued, defined as follows:

begin-value : clock-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.

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 a 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 guarantees 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.1 [XSL11] 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.1 [XSL11] 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.

In-Line 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!" ... > . Note that since this example does not define explicit temporal markup on the smilText element, the intrinsic duration will be zero seconds. The fill semantics of the embedding SMIL content will determine the visual persistence of the content.

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 that 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">
       Hello World!
    </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 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.

External Use of smilText

It is possible to define an external file with timed text content using smilText semantics. The capabilities of such an external use are defined in the SmilText profile. A full SMIL rendering agent is not required to render the smilText content.

The following example shows an external encoding of smilText content:

      
    
        <smil xmlns="http://www.w3.org/ns/smil" version="3.0" baseProfile="smilText"
              height="50" width="30" dur="6s">
         <body>
           Willemijn's 11th Birthday Party
           <tev xml:id="TS12" next="2s"/>
           was held six weeks late.
           <clear xml:id="TS13" begin="TS14.beginEvent"/>
           (Again!)
         </body>
        </smil>

The external file (which in this example we assume is named "external.smil"), may be referenced by any smilText-complaint rendering agent. If that rendering agent is a SMIL 3.0 player, then the following reference to the text file may be used:

     ...
     <par>
        <textstream src="external.smil" dur="10s" width="40" region="Contents" >
        <audio xml:id="TS14" begin="4.5s" src="gongAudio.mp3">
     </par>
     ...

In this example, the source smilText file is defined as proscribed by the SmilText profile. It contains a namespace declaration for smil plus the smilText base profile definition, as well as default values for height, width and duration. The SMIL fragment shown next illustrates a <par> containing an audio object and a textstream object that references the smilText encoding. The SMIL-based reference overrides the width specification given in the smilText source file. The smilText duration is treated as the intrinsic duration of the object; the duration is extended in the SMIL file in a manner similar to the reference of a video object.

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

A profile integrating this module will define the event names generated when named elements are activated in smilText. Unless overridden by the profile, each tev and clear element must raise an event named tevEvent. This event must also be raised at the start and end of the smilText element; the smilText element must also raise the standard beginEvent and endEvent events.

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, for in-line use of smilText, 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 may be expected to support all of the styling attributes defined in this section. If a given attribute is not 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 within 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 within 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 within 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 is not 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 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 or unsupported 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 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. If a specified size cannot be support, implementations are expected to provide a best-effort substitute size.

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. If a particular style cannot be support, implementations may provide an implementation-dependent alternative style.

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. If a particular weight cannot be support, implementations may provide an implementation-dependent alternative weight.

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.

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 is not 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.tevEvent"/>
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 may use the standard SMIL timing attributes, plus several new attributes to explicitly control text placement and styling. A tevEvent will 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 is 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 interpreted 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

8.6.1 Appendix A: Differences with the DFXP Specification

This section is informative.

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]:

8.6.2 Appendix B: Using SMIL 3.0 SmilText as a Stand-Alone External Format

This section is informative.

This section defines the use of SmilText as an external, stand-alone timed text format. This is accomplished by using the SMIL 3.0 SmilText profile. In the following sections, examples of the use of the SMIL 3.0 SmilText profile are provided. Full details of the profile are given in the SMIL 3.0 SmilText profile specification.

Elements and Attributes

The SMIL 3.0 smilText profile provides a light-weight collection of SMIL elements and attributes that are specifically defined to allow the specification of an external smilText object. This profile allows an author to encode in-line smilText content in an external file with little modification. The profile does not define any new elements or attributes. The basic difference from the in-line specification of SmilText content is that the external content uses the smilText element as the top-level container element. The external smilText element is expanded with dimensioning and background color attributes that allow a simple smilText engine to effectively render the content. These attributes are defined in the following sections.

The dur Attribute

This attribute is functionally and syntactically equivalent to the dur attribute defined in the SMIL Timing Modules. When placed on the top-level smil element in the external file that also includes a baseProfile attribute with the value SmilText, the dur attribute defines the intrinsic value of the duration of the text object. The default value for this attribute is zero (0). A value of indefinite is allowed and specifies an object that does not have a self-scheduled end.

The height Attribute

This attribute specifies the height of a rendering area for the SmilText content. It is functionally and syntactically equivalent to the height attribute defined in the SMIL Layout Modules, with the exception that percentage values are not supported in external SmilText profile files. The default value for this attribute is auto, which allows the (SMIL or other) rendering agent to determine the height of the rendering area based on definitions made in the rendering agent. When used with an external object that will be rendered by a SMIL processor, any value for this attribute in the external file will be overridden by the effective height value defined for the media element that references the external file.

The width Attribute

This attribute specifies the width of a rendering area for the SmilText content. This attribute is functionally and syntactically equivalent to the width attribute defined in the SMIL Layout Modules, with the exception that percentage values are not supported in external SmilText profile files. The default value for this attribute is auto, which allows the (SMIL or other) rendering agent to determine the width of the rendering area based on definitions made in the rendering agent. When used with an external object that will be rendered by a SMIL processor, any value for this attribute in the external file will be overridden by the effective width value defined for the media element that references the external file.

The backgroundColor Attribute

This attribute is used to specify the background color of the rendering area containing the external SmilText content. This attribute is functionally and syntactically equivalent to the backgroundColor attribute defined in the SMIL Layout Modules. The default value for this attribute is transparent. When used with an external object that will be rendered by a SMIL processor, any value for this attribute in the external file will be overridden by the effective backgroundColor value defined for the media element that references the external file.

Other External SmilText Attributes

The SmilText profile may define other attributes that may be used on the top-level smil element, or specific SmilText modules that may be used within by the external SmilText context. These are not considered here.

Examples

The following example illustrates the use of SmilText as an external timed-text format. Assume that the following file is named externalText.smil:

 <smilText xmlns="http://www.w3.org/ns/smil" height="40" width="60" dur="12s" backgroundColor="white" textAlign="right">
      Willemijn's 11th Birthday Party
      <tev begin="5s"/>
      was held six weeks late.
      <tev next="5s"/>
      (Again!)
</smilText>

This example displays text string that is aligned at the right of the 40x60 rendering extent. The background color of the rendering area is set to white. The intrinsic duration is set to 12 seconds. Note that the smilText element is used as a top-level content container for text. No head or element body need be specified. The SMIL version and baseProfile attributes are set to 3.0 and smilText by default. (The profile specification defines the rules for default content of all elements and attributes.)

Since the external smilText file does not have a layout section in the head, there is no requirement to use layout related attributes (such as region) on the smilText definition. Note that to enhance copy/paste transfer of smilText objects between internal and external files, the specification of any non-recognized attributes is ignored by the SmilText profile.

The following SMIL 3.0 fragment illustrates the use of an external SmilText definition within a SMIL file:

 <smil ...>
  <head>
     ...
    <layout>
        ...
      <region xml:id="Contents" top="5px" left="10%" width="80%" height="300px" />
    </layout>
   </head>
   <body>
      ...
        <textstream xml:id="ST99" region="Contents" src="externalText.smil" dur="25s"/>
      ...
   </body>
 </smil>

In this example, the effective values for height, width, backgroundColor and duration are taken from the embedding SMIL file rather than the external SmilText profile file.

8.6.3 Appendix C: Using ITS Facilities with SMIL 3.0 SmilText

This section is informative.

W3C publishes a set of internationalization and localization guidelines [ITS] that allow content to be easily localized and translated. The smilText modules provide a direct means of specify content, and the ITS facilities have been defined to apply to smilText, div, p and spanelements.

The following fragment illustrates an ITS rules file:

<its:rules
  xmlns:its="http://www.w3.org/2005/11/its"
  xmlns:s="http://www.w3.org/2008/SMIL30/" version="1.0">

 <!-- Rule number 1 -->
 <its:translateRule selector="//s:*" translate="no"/>

 <!-- Rule number 2 -->
 <its:translateRule selector="//s:smilText | //s:div | //s:p | //s:span " translate="yes"/>

<!-- Rule number 3 -->
<its:withinTextRule selector="//s:span" withinText="yes"/>

</its:rules>

The first two rules are used to separate translatable and non-translatable content. They can be read as: the default for elements is that they are not translatable (first <translateRule> element). The exceptions (translatable elements and attribute content) are handled by the second <translateRule> element, which takes precedence over the first one.

The third rule about "Elements within Text" describes that the <span> element appears in the flow of other elements, like <smilText>, <p> or <div>. The default for "Elements Within Text" is that elements are not nested.

For internationalization and localization purposes, a SMIL 3.0 file is associated to the ITS rules file indicated above.


previous   next   contents