[ttml2] add tts:textShadow style attribute (issues 234, 235)
authorGlenn Adams <glenn@skynav.com>
Thu, 08 Jan 2015 01:25:34 -0700
changeset 823 369e36a8cecd
parent 822 b9eb3a49f11b
child 824 192f2e268144
[ttml2] add tts:textShadow style attribute (issues 234, 235)
ttml2/spec/rnc/ttml2-datatypes.rnc
ttml2/spec/rnc/ttml2-styling-attribs.rnc
ttml2/spec/ttml2-changes.html
ttml2/spec/ttml2.xml
ttml2/spec/xsd/ttml2-datatypes.xsd
ttml2/spec/xsd/ttml2-styling-attribs.xsd
--- a/ttml2/spec/rnc/ttml2-datatypes.rnc	Thu Jan 08 00:10:38 2015 -0700
+++ b/ttml2/spec/rnc/ttml2-datatypes.rnc	Thu Jan 08 01:25:34 2015 -0700
@@ -406,6 +406,9 @@
 TTAF.TextOutline.datatype =
   string
 
+TTAF.TextShadow.datatype =
+  string
+
 TTAF.TickRate.datatype =
   xsd:positiveInteger
 
--- a/ttml2/spec/rnc/ttml2-styling-attribs.rnc	Thu Jan 08 00:10:38 2015 -0700
+++ b/ttml2/spec/rnc/ttml2-styling-attribs.rnc	Thu Jan 08 01:25:34 2015 -0700
@@ -80,6 +80,8 @@
   = attribute tts:textOrientation { TTAF.TextOrientation.datatype }?
 TTAF.textOutline.attrib
   = attribute tts:textOutline { TTAF.TextOutline.datatype }?
+TTAF.textShadow.attrib
+  = attribute tts:textShadow { TTAF.TextShadow.datatype }?
 TTAF.unicodeBidi.attrib
   = attribute tts:unicodeBidi { TTAF.UnicodeBidi.datatype }?
 TTAF.visibility.attrib
@@ -136,6 +138,7 @@
   TTAF.textEmphasis.attrib,
   TTAF.textOrientation.attrib,
   TTAF.textOutline.attrib,
+  TTAF.textShadow.attrib,
   TTAF.unicodeBidi.attrib,
   TTAF.visibility.attrib,
   TTAF.width.attrib,
--- a/ttml2/spec/ttml2-changes.html	Thu Jan 08 00:10:38 2015 -0700
+++ b/ttml2/spec/ttml2-changes.html	Thu Jan 08 01:25:34 2015 -0700
@@ -101,7 +101,8 @@
   'tts:rubyPosition',
   'tts:textCombine,
   'tts:textEmphasis,
-  'tts:textOrientation', and
+  'tts:textOrientation',
+  'tts:textShadow', and
   'tts:width'
   to Table 5-5.
 
@@ -264,6 +265,8 @@
 
 * In 10.2, add 'tts:textOrientation' styling attribute.
 
+* In 10.2, add 'tts:textShadow' styling attribute.
+
 * In 10.2, add 'tts:width styling attribute.
 
 * In 10.2 prologue, add proscription against specifying non-applicable,,
--- a/ttml2/spec/ttml2.xml	Thu Jan 08 00:10:38 2015 -0700
+++ b/ttml2/spec/ttml2.xml	Thu Jan 08 01:25:34 2015 -0700
@@ -3013,6 +3013,7 @@
 <loc href="#style-attribute-textEmphasis">tts:textEmphasis</loc>,
 <loc href="#style-attribute-textOrientation">tts:textOrientation</loc>,
 <loc href="#style-attribute-textOutline">tts:textOutline</loc>,
+<loc href="#style-attribute-textShadow">tts:textShadow</loc>,
 <loc href="#style-attribute-unicodeBidi">tts:unicodeBidi</loc>,
 <loc href="#style-attribute-visibility">tts:visibility</loc>,
 <loc href="#style-attribute-width">tts:width</loc>,
@@ -7215,6 +7216,7 @@
 <item><p><specref ref="style-attribute-textEmphasis"/></p></item>
 <item><p><specref ref="style-attribute-textOrientation"/></p></item>
 <item><p><specref ref="style-attribute-textOutline"/></p></item>
+<item><p><specref ref="style-attribute-textShadow"/></p></item>
 <item><p><specref ref="style-attribute-unicodeBidi"/></p></item>
 <item><p><specref ref="style-attribute-visibility"/></p></item>
 <item><p><specref ref="style-attribute-width"/></p></item>
@@ -11046,6 +11048,69 @@
 </tbody>
 </table>
 </div3>
+<div3 id="style-attribute-textShadow">
+<head>tts:textShadow</head>
+<p>The <att>tts:textShadow</att> attribute is used to specify a style property that
+defines one or more text shadow decorations to apply to glyphs that are selected for glyph areas generated
+by content flowed into a region.</p>
+<p>If both <loc href="#style-attribute-textOutline"><att>tts:textOutline</att></loc> and <att>tts:textShadow</att> attributes
+are specified on an element and <att>tts:textShadow</att> is a supported property,
+then the <loc href="#style-attribute-textOutline"><att>tts:textOutline</att></loc> attribute must be ignored for the purpose of presentation processing.</p>
+<p>If multiple text shadows apply, then they are drawn in the specified order immediately prior to drawing the glyph area to which they apply.</p>
+<p>This attribute may be specified by any
+element type
+that permits use of attributes in the TT Style Namespace; however, this attribute applies
+as a style property only to those element types indicated in the following table.</p>
+<table id="style-property-details-textShadow" role="common">
+<col width="25%"/>
+<col/>
+<tbody>
+<tr>
+<td><emph>Values:</emph></td>
+<td>
+<code>none</code> |
+[ <loc href="#style-value-shadow">&lt;shadow&gt;</loc> ]#
+</td>
+</tr>
+<tr>
+<td><emph>Initial:</emph></td>
+<td><code>none</code></td>
+</tr>
+<tr>
+<td><emph>Applies to:</emph></td>
+<td>
+<loc href="#content-vocabulary-span"><el>span</el></loc>
+</td>
+</tr>
+<tr>
+<td><emph>Inherited:</emph></td>
+<td>yes</td>
+</tr>
+<tr>
+<td><emph>Percentages:</emph></td>
+<td>relative to this element's font size</td>
+</tr>
+<tr>
+<td><emph>Animatable:</emph></td>
+<td>discrete, continuous</td>
+</tr>
+</tbody>
+</table>
+<p>For the purpose of determining applicability of this style property,
+each character child of a <el>p</el> element is considered to be enclosed in an anonymous
+span.</p>
+<p>If a computed value of the property associated with this attribute is not supported,
+then a <loc href="#terms-presentation-processor">presentation processor</loc> must use the value <code>none</code>.</p>
+<ednote>
+<name>Text Shadow Example</name>
+<date>2015-01-08</date>
+<edtext>Insert example fragment and image of tts:textShadow.</edtext>
+</ednote>
+<note role="derivation">
+<p>The semantics of the style property represented by this attribute are based upon 
+that defined by <bibref ref="css3-decoration"/>, &sect; 4.</p>
+</note>
+</div3>
 <div3 id="style-attribute-unicodeBidi">
 <head>tts:unicodeBidi</head>
 <p>The <att>tts:unicodeBidi</att> attribute is used to specify a style property that
@@ -11701,6 +11766,7 @@
 <item><p><specref ref="style-value-number"/></p></item>
 <item><p><specref ref="style-value-percentage"/></p></item>
 <item><p><specref ref="style-value-position"/></p></item>
+<item><p><specref ref="style-value-shadow"/></p></item>
 </ulist>
 <p>In the syntax representations defined in this section, no
 linear whitespace (LWSP) is implied or permitted between tokens
@@ -12816,6 +12882,51 @@
 is to be interpreted as the difference between 100% and the percentage equivalent of the <loc href="#style-value-length">&lt;length-v&gt;</loc> expression.
 In both cases, the resulting difference may be a negative percentage.</p>
 </div3>
+<div3 id="style-value-shadow">
+<head>&lt;shadow&gt;</head>
+<p>A &lt;shadow&gt; value expresses a shadow decoration to be applied to a generated area. If
+the generated area is a glyph area, then it applies to the outline of the glyph (not the glyph area bounding box). If the
+generated area is not a glyph area, then it applies to the border rectangle of the area.</p>
+<table id="shadow-style-expression-syntax" role="syntax">
+<caption>Syntax Representation &ndash; &lt;shadow&gt;</caption>
+<tbody>
+<tr>
+<td>
+<eg xml:space="preserve">
+&lt;shadow&gt;
+  : inset? &amp;&amp; <loc href="#style-value-length">&lt;length&gt;</loc>{2,4} &amp;&amp; <loc href="#style-value-color">&lt;color&gt;</loc>
+</eg>
+</td>
+</tr>
+</tbody>
+</table>
+<p>A shadow value expression consists of an optional <code>inset</code> token term,
+two to four <loc href="#style-value-length">&lt;length&gt;</loc> terms, and
+an optional <loc href="#style-value-color">&lt;color&gt;</loc> term.</p>
+<p>The first <loc href="#style-value-length">&lt;length&gt;</loc> term denotes the offset in the inline progression direction of the associated area,
+where positive denotes towards the end edge and negative towards the start edge,
+the second <loc href="#style-value-length">&lt;length&gt;</loc> term denotes the offset in the block progression direction of the associated area,
+where positive denotes towards the after edge and negative towards the before edge.
+The third <loc href="#style-value-length">&lt;length&gt;</loc> term, if present, denotes the blur radius, and must be non-negative.
+The fourth <loc href="#style-value-length">&lt;length&gt;</loc> term, if present, denotes the spread distance, where positive denotes expansion and negative denotes contraction.</p>
+<p>If no <loc href="#style-value-color">&lt;color&gt;</loc> term is
+present, then the computed value of the <att>tts:color</att> property applies.</p>
+<p>If applied to a glyph area, then an <code>inset</code> token and a spread distance, if either or both are present, are ignored for purpose of presentation processing.</p>
+<ednote>
+<name>Shadow Inset</name>
+<date>2015-01-08</date>
+<edtext>Define semantics of <code>inset</code> term.</edtext>
+</ednote>
+<note role="elaboration">
+<p>When a <loc href="#style-value-length">&lt;length&gt;</loc> expressed in
+cells is used in a <att>tts:textShadow</att> value,
+the cell's dimension in the block progression dimension applies.
+For example, if text shadow thickness is specified as 0.1c, the cell resolution
+is 20 by 10, and the extent of the <loc href="#terms-root-container-region">root container region</loc> is 640 by 480, then the
+shadow thickness will be a nominal 480 / 10 * 0.1 pixels, i.e., 4.8px,
+without taking into account rasterization effects.</p>
+</note>
+</div3>
 </div2> <!-- styling-style-value-expressions -->
 <div2 id="semantics-styling">
 <head>Styling Semantics</head>
--- a/ttml2/spec/xsd/ttml2-datatypes.xsd	Thu Jan 08 00:10:38 2015 -0700
+++ b/ttml2/spec/xsd/ttml2-datatypes.xsd	Thu Jan 08 01:25:34 2015 -0700
@@ -653,6 +653,12 @@
     </xs:annotation>
     <xs:restriction base="xs:string"/>
   </xs:simpleType>
+  <xs:simpleType name="textShadow">
+    <xs:annotation>
+      <xs:documentation>none | [ shadow ]#</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:string"/>
+  </xs:simpleType>
   <xs:simpleType name="tickRate">
     <xs:restriction base="xs:positiveInteger"/>
   </xs:simpleType>
--- a/ttml2/spec/xsd/ttml2-styling-attribs.xsd	Thu Jan 08 00:10:38 2015 -0700
+++ b/ttml2/spec/xsd/ttml2-styling-attribs.xsd	Thu Jan 08 01:25:34 2015 -0700
@@ -41,6 +41,7 @@
   <xs:attribute name="textEmphasis" type="ttd:textEmphasis"/>
   <xs:attribute name="textOrientation" type="ttd:textOrientation"/>
   <xs:attribute name="textOutline" type="ttd:textOutline"/>
+  <xs:attribute name="textShadow" type="ttd:textShadow"/>
   <xs:attribute name="unicodeBidi" type="ttd:unicodeBidi"/>
   <xs:attribute name="visibility" type="ttd:visibility"/>
   <xs:attribute name="width" type="ttd:measure"/>
@@ -84,6 +85,7 @@
     <xs:attribute ref="tts:textEmphasis"/>
     <xs:attribute ref="tts:textOrientation"/>
     <xs:attribute ref="tts:textOutline"/>
+    <xs:attribute ref="tts:textShadow"/>
     <xs:attribute ref="tts:unicodeBidi"/>
     <xs:attribute ref="tts:visibility"/>
     <xs:attribute ref="tts:width"/>