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.
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.
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.
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.
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 is 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.
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 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.
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.
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 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.
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.
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 and next attributes. Profiles including the clear element must define which other SMIL attributes will 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 beyond those specified by the profile.
This element has no content.
When used as an external container format, the attribute value is a
single clock valued, defined as follows:
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.
If both a begin and next attribute are defined on any tev/clear elements, only the begin attribute will be recognized.
Values:
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].
Values:
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"
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.
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:
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!" ... > . 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.
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.
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 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.
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.
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 twelve attributes:
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 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.
Unless otherwise defined by the profile integrating this module, the div element may (re)specify values for the following attributes:
Unless specified otherwise by the profile integrating this element, the profile's core attributes may also be used. All other attributes are ignored.
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 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.
Unless defined otherwise by the profile integrating this module, the p element may (re)specify values for the following attributes:
Unless specified otherwise by the profile integrating this element, the profile's core attributes may also be used. All other attributes are ignored.
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 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.
Unless specified otherwise in the profile integrating this module, the span element may (re)specify values for the following attributes:
Unless specified otherwise by the profile integrating this element, the profile's core attributes may also be used. All other attributes are ignored.
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 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.
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.
This element has no content.
The textStyling element delineates a set of textStyle elements in the document head section.
Unless specified otherwise by the profile integrating this element, the profile's core attributes may also be used. All other attributes are ignored.
This element contains one or more textStyle elements as children.
Values:
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.
Values:
If no color has been specified, the default is transparent.
Values:
If no color has been specified, the default is implementation dependent.
Values:
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.
Values:
The initial value for this attribute is sansSerif. If an unrecognized or unsupported textFontFamily is specified, monospace will be expected.
Values:
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.
Values:
The initial value for this attribute is normal. If a particular style cannot be support, implementations may provide an implementation-dependent alternative style.
Values:
The initial value for this attribute is normal. If a particular weight cannot be support, implementations may provide an implementation-dependent alternative weight.
Values:
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.
Values:
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.
Values:
The textStyle attribute will be applied only to the content within the scope of the element to which it is applied.
Values: lr-tb | rl-tb | tb-rl | tb-lr | lr | rl | inherit
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.
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.
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:
Values:
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.
Values:
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.
Values:
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.
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.
None.
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 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. |
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]:
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.
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.
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.
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.
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.
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.
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.
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.
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.