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.
The SYMM WG is exploring the addition of a multilingual module for specific support translating timed-text content, and for a linguistic markup module to aid in processing semantically-scaled timed text. This addition will be presented in a separate specification; it is not expected to impact the basic facilities of smilText as defined in this document.
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.
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. 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 [DFXP]. 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.
This section is normative.
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.
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.
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:
The attributes defined in this module are:
In addition, this module extends the definition of the SMIL Layout region element to include the textWrapOption attribute.
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 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 contents 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 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.
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.
The smilText element may contain character content. If this content is present, it will be rendered as text in a manner consistent with other elements and attributes in this module. If no content is present, the smilText element must still observe all SMIL timing properties.
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. This element does not define a content container, but is simply a temporal marker within a text fragment.
This element accepts the begin, next and id attributes. Profiles including the tev element must define which other SMIL attributes may be attached to this element.
This element has no content.
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.
This element accepts the begin, next and id attributes. Profiles including the clear element must define which other SMIL attributes may be attached to this element.
This element has no content.
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.
This element does not accept any attributes.
This element has no content.
The general semantics of this element are the same as the SMIL begin attribute defined within the timing module, with the restriction that only a subset of potential time values are supported.
Values:
This attribute may be used on the smilText element or as a default on the region element.
Values:
This attribute may be used on the smilText element or as a default on the region element.
Editor's note:
The DFXP [[rovides additional information on the exact processing ofDFXP]] specification provides additional information on the exact processing of
whitespace, based on XSL 1.0 [[XSL 10]] semantics. This description may be integrated into
the smilText specification, but we have not done so since it required modifying the definition of
xml:space. Feedback on this topic is welcome.
This section is informative
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 defines 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/clearelement 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.
Authors are encouraged to study the examples in this section for details on the interaction of smilText, tev, clear, begin and next.
This section is informative.
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 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 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:
<smil ...> <head> ... <layout> <root-layout width="400" height="300"/> <region id="Contents" top="5px" left="10%" width="80%" height="300"/> </layout> </head> <body> ... <smilText id="TS01" region="Contents" dur="6s"> Willemijn's 11th Birthday Party <tev id="TS02" next="2s"/> was held six weeks late. <clear 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 example is used to illustrate smilText behavior when used with event-based timing:
... <par> <smilText id="TS11" region="Contents" dur="6s"> Willemijn's 11th Birthday Party <tev id="TS12" next="2s"/> was held six weeks late. <clear id="TS13" begin="gong.beginEvent"/> (Again!) </smilText> <audio id="TS14" begin="4.5s" src="gongAudio.mp3"> </par> ...
In this example, elements TS11 and TS12 act as TS01 and TS02 in the previous example. 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 id="TS31" region="Contents" dur="10s"> fragment 1, <tev id="TS32" next="2s"/> fragment 2, <clear id="TS33" begin="1s"/> fragment 3, <clear id="TS34" begin="XXX.beginEvent"/> fragment 4, <clear id="TS35" next="5s"/> fragment 5, <clear 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.
SMIL timing defines a number of rules that govern the rendering persistence of smilText content. These are:
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.
This section is normative.
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.
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.
The TextStyling module defines the following five elements:
The TextStyling module defines the following eleven attributes:
In addition, this module extends the definition of the SMIL Layout region element to include the TextStyling attributes listed above.
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.
The div element may (re)specify values for the following SMIL styling attributes defined in this module:
Editor's note:
The textWrapOption may be added to
this list. Comments are welcome.
All other attributes are ignored.
This element accepts as content 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 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.
The p element may (re)specify values for the following SMIL styling attributes defined in this module:
Editor's note:
The textWrapOption may be added to
this list. Comments are welcome.
All other attributes are ignored.
This element accepts as content 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 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.
The span element may (re)specify values for the following SMIL styling attributes defined in this module:
All other attributes are ignored.
This element accepts as content 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 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 and span in-line content elements in a SMIL body section.
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 are used.
In addition, this attribute defines:
This element has no content.
The textStyling element delineates a set of textStyle elements in the document head section.
This attribute accepts no attributes.
This element contains one or more textStyle elements as children.
Values:
If no value is defined, the default value will be start.
Values:
If no color has been specified, the default is transparent.
Values:
If no color has been specified, the default is transparent.
Values:
If no direction was defined, the default is ltr.
Values:
If no value is defined, the default textFontFamily will be sansSerif.
Values:
If no value is defined, the default textFontSize will be medium.
Values:
If no value is defined, the default textFontStyle will be normal.
Values:
If no value is defined, the default textFontWeight will be normal.
Values:
If no value is defined, the default textMode will be 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.
Values:
If no value is defined, the default textPlace will be fromTop.
Values:
The textStyle attribute will be applied only to the content within the scope of the element to which it is applied.
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 id="HeadlineStyle" textFontFamily="serif" textFontSize="12px" textFontWeight="bold" textFontstyle="italic" textWrapOption="noWrap" textColor="blue" textBackgroundColor="white"> 04 </textStyling> 05 <layout> 06 <region id="Title" top="5px" left="10%" width="80%" height="25px" textStyle="HeadlineStyle" /> 07 <region id="Captions" top="215px" left="10%" width="80%" height="35px" textFontFamily="serif" textColor="orange" backgroundColor="blue"/> 08 <region 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 region="sound" src="yip.mp3" begin="woof.beginEvent"/> 20 <smilText region="Captions" textAlign="left" 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 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'w triggering of the sound on line 19. Finally, the text element on line 35 illustrates that it is possible to mix in-line and external text in a single document.
This section is normative.
None.
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.
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 defines one new attribute and extends the values available for one attribute in the TextStyling module:
This module extends the definition of one element from the BasicText module and one element TextStyling module:
This module extends the definition of two attributes from the TextStyling module and adds a new attribute to this module:
In addition:
Values:
In all cases, the rate of movement is determined by the textRate attribute.
The textMode will be applied to all text displayed in the region.
Values:
If the textMode is set to anything other than crawl, scroll or jump, this attribute is ignored.
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 id="Contents" top="5px" left="10%" width="80%" height="300px" textMode="crawl" textRate="20px" /> </layout> </head> <body> ... <smilText 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) textDirection 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.
This section is normative.
Any profile that integrates the textRate attribute must specify whether a scroll value of 100% causes all of the text to be scrolled out of the visible rendering area.
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.
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 |
textAlign textBackgroundColor textColor textDirection textFontFamily textFontSize textFontWeight textStyle textWrapOption |
smilText limits the range of values permitted for some of these attributes. The basic functionality is the same in all cases. |
The following elements and attributes are not included in smilText.
The following elements and attributes are included in smilText but are not directly available in DFXP [DFXP]: