W3C home > Mailing lists > Public > public-tt@w3.org > February 2016

Re: <initial> vs inherited

From: Glenn Adams <glenn@skynav.com>
Date: Tue, 2 Feb 2016 21:26:46 -0700
Message-ID: <CACQ=j+dOxVciWm9Dx2sY6CSzgtCR5=S2trZhgbmSgEk3reEwMQ@mail.gmail.com>
To: Pierre-Anthony Lemieux <pal@sandflow.com>
Cc: Dae Kim <dakim@netflix.com>, Nigel Megitt <nigel.megitt@bbc.co.uk>, TTWG <public-tt@w3.org>
On Tue, Feb 2, 2016 at 6:13 PM, Pierre-Anthony Lemieux <pal@sandflow.com>
wrote:

> Hi Glenn,
>
> Ok. What is the downside of using style inheritance to avoid having to
> set a property explicitly throughout the document, i.e. have all
> styles derive from a top-level style that overrides the initial
> values?
>

firstly, this question is well formed only with respect to inheritable
properties; it doesn't apply to non-inheritable properties;

so, for an inheritable property, in TTML1, the only option is to specify
the property on the top-most inheritable element, namely, on region; so,
e.g.,

<region tts:color='yellow'/>

however, if there are multiple regions, one would be forced to specify this
on each region in turn; alternatively, one might specify:

<body tts:color='yellow'>...</body>

which effectively applies to all content that may be rendered in any
region; however, this would not be a viable strategy for an inheritable
property that to both region and body, such as tts:visible: it is only
viable for an inheritable property that applies to body or a descendant of
body and does not apply to region, e.g., tts:color;

in contrast, in TTML2, again for inheritable properties only, we have the
option of either specifying the property on (1) the top-most inheritable
element, namely, on tt, or on (2) an initial element, which has the effect
of overriding the initial value applied to the top-most inheritable element;



>
> Best,
>
> -- Pierre
>
> On Tue, Feb 2, 2016 at 1:08 PM, Glenn Adams <glenn@skynav.com> wrote:
> >
> >
> > On Tue, Feb 2, 2016 at 1:27 PM, Pierre-Anthony Lemieux <pal@sandflow.com
> >
> > wrote:
> >>
> >> Hi Glenn,
> >>
> >> Ok. What approach does XSL-FO and/or CSS take to allowing authors to
> >> avoid having to explicitly set a property through the document?
> >
> >
> > For non-inheritable properties, there is no mechanism other than direct
> > specification (XSL-FO) or a style rule or style attribute (CSS). Also,
> > initial values (for inheritable and non-inheritable properties) cannot be
> > overridden in either XSL-FO or CSS, so defining an initial element for
> this
> > purpose in TTML2 is effectively a new mechanism not found in either
> XSL-FO
> > or CSS.
> >
> >>
> >>
> >> Thanks,
> >>
> >> -- Pierre
> >>
> >> On Tue, Feb 2, 2016 at 11:55 AM, Glenn Adams <glenn@skynav.com> wrote:
> >> > Because that is not how the semantics of styles in XSL-FO or CSS work,
> >> > and
> >> > thus not how the semantics work in TTML (of any flavor).
> >> >
> >> > Specifying a non-inheritable property on an element to which that
> >> > property
> >> > does not apply is a NO-OP.
> >> >
> >> > In TTML1 we have the following (Section 8.2):
> >> >
> >> > Note:
> >> >
> >> > Due to the general syntax of this specification (and the schemas it
> >> > references) with respect to how style attributes are specified,
> >> > particularly
> >> > for the purpose of supporting inheritance, it is possible for an
> author
> >> > to
> >> > inadvertently specify a non-inheritable style attribute on an element
> >> > that
> >> > applies neither to that element or any of its descendants while still
> >> > remaining conformant from a content validity perspective. Content
> >> > authors
> >> > may wish to make use of TTML content verification tools that detect
> and
> >> > warn
> >> > about such usage.
> >> >
> >> > In TTML2 we promoted this to normative language (Section 10.2):
> >> >
> >> > Unless explicitly permitted by an element type definition, an
> attribute
> >> > in
> >> > the TT Style Namespace should not be specified on an element unless it
> >> > either applies to that element or denotes an inheritable style
> property.
> >> > If
> >> > it does not apply to that element and does not denote an inheritable
> >> > style
> >> > property, then it must be ignored for the purpose of non-validation
> >> > processing. In the case of validation processing, such usage should be
> >> > reported as a warning, or, if strict validation is performed, as an
> >> > error.
> >> >
> >> >
> >> >
> >> >
> >> >
> >> > On Tue, Feb 2, 2016 at 12:48 PM, Pierre-Anthony Lemieux
> >> > <pal@sandflow.com>
> >> > wrote:
> >> >>
> >> >> Hi Glenn,
> >> >>
> >> >> > tts:backgroundColor
> >> >>
> >> >> Can you remind us why specifying tts:backgroundColor="X" on <tt>
> could
> >> >> not mean "set initial value of tts:backgroundColor to X"?
> >> >>
> >> >> Best,
> >> >>
> >> >> -- Pierre
> >> >>
> >> >> On Tue, Feb 2, 2016 at 11:42 AM, Glenn Adams <glenn@skynav.com>
> wrote:
> >> >> >
> >> >> >
> >> >> > On Tue, Feb 2, 2016 at 12:28 PM, Pierre-Anthony Lemieux
> >> >> > <pal@sandflow.com>
> >> >> > wrote:
> >> >> >>
> >> >> >> Hi Glenn et al.,
> >> >> >>
> >> >> >> >Perhaps we need to review
> >> >> >> > uninheritable properties in TTML2 to determine if we need to
> >> >> >> > upgrade
> >> >> >> > them to
> >> >> >> > inheritable,
> >> >> >>
> >> >> >> I like the idea of having a single mechanism for setting an
> initial
> >> >> >> value for properties, i.e. avoid having to set a property
> explicitly
> >> >> >> throughout the document.
> >> >> >>
> >> >> >> Expanding inheritance (instead of introducing a new <initial>
> >> >> >> element)
> >> >> >> seems promising, and intuitive.
> >> >> >
> >> >> >
> >> >> > That won't be sufficient, since we will not be able to make
> >> >> > everything
> >> >> > inherit. The reason for this is related to the semantics of
> specific
> >> >> > style
> >> >> > properties. For example, the following cannot inherit:
> >> >> >
> >> >> > tts:backgroundColor
> >> >> > tts:backgroundImage
> >> >> > tts:backgroundPosition
> >> >> > tts:backgroundRepeat
> >> >> > tts:border
> >> >> > tts:bpd
> >> >> > tts:display
> >> >> > tts:extent
> >> >> > tts:ipd
> >> >> > tts:opacity
> >> >> > tts:origin
> >> >> > tts:overflow
> >> >> > tts:padding
> >> >> > tts:position
> >> >> > tts:ruby
> >> >> > tts:unicodeBidi
> >> >> > tts:writingMode
> >> >> > tts:zIndex
> >> >> >
> >> >> > Possible candidates for upgrading to inheritable are:
> >> >> >
> >> >> > tts:displayAlign
> >> >> > tts:showBackground
> >> >> >
> >> >> > So really, only these two are potentially able to be recast as
> >> >> > inheritable
> >> >> > in TTML2. All the rest (above) rely on initial value, and, for that
> >> >> > matter,
> >> >> > initial value also applies to inheritable properties at the top of
> >> >> > the
> >> >> > inheritance tree (region in TTML1, tt in TTML2).
> >> >> >
> >> >> > The initial element is already written into the TTML2 spec,
> >> >> > implemented,
> >> >> > deployed, and previously discussed in the WG (though perhaps we
> >> >> > didn't
> >> >> > dive
> >> >> > in too deeply).
> >> >> >
> >> >> >>
> >> >> >>
> >> >> >> > though doing so will require careful consideration of
> >> >> >> > interoperability with TTML1 behavior.
> >> >> >>
> >> >> >> I see two scenarios:
> >> >> >>
> >> >> >> - an author wishes to create a document that conforms to both
> TTML1
> >> >> >> and TTML2, in which case the author should set the property
> >> >> >> explicitly
> >> >> >> throughout the document -- this is always safe.
> >> >> >>
> >> >> >> - an author wishes to target only TTML2 processors, in which the
> >> >> >> author can rely on the expanded inheritance rules
> >> >> >>
> >> >> >> Are there other scenarios?
> >> >> >>
> >> >> >> Best,
> >> >> >>
> >> >> >> -- Pierre
> >> >> >>
> >> >> >> On Fri, Jan 29, 2016 at 9:33 AM, Glenn Adams <glenn@skynav.com>
> >> >> >> wrote:
> >> >> >> >
> >> >> >> >
> >> >> >> > On Fri, Jan 29, 2016 at 10:26 AM, Pierre-Anthony Lemieux
> >> >> >> > <pal@sandflow.com>
> >> >> >> > wrote:
> >> >> >> >>
> >> >> >> >> Hi Glenn,
> >> >> >> >>
> >> >> >> >> > This could also be done in other ways, such as by specifying
> >> >> >> >> > these
> >> >> >> >> > properties on the tt element,
> >> >> >> >> > from which all inheritance would occur (in TTML2); however,
> >> >> >> >> > that
> >> >> >> >> > wouldn't work for properties
> >> >> >> >> > that don't inherit, like tts:showBackground, etc.
> >> >> >> >>
> >> >> >> >> Why doesn't tts:showBackground inherit?
> >> >> >> >
> >> >> >> >
> >> >> >> > It was originally defined on region in TTML1, which has no way
> for
> >> >> >> > a
> >> >> >> > region
> >> >> >> > to inherit. However, we are adding root element inheritance in
> >> >> >> > TTML2
> >> >> >> > (e.g.,
> >> >> >> > from tt to head to layout to region). Perhaps we need to review
> >> >> >> > uninheritable properties in TTML2 to determine if we need to
> >> >> >> > upgrade
> >> >> >> > them to
> >> >> >> > inheritable, though doing so will require careful consideration
> of
> >> >> >> > interoperability with TTML1 behavior.
> >> >> >> >
> >> >> >> >>
> >> >> >> >>
> >> >> >> >> Thanks,
> >> >> >> >>
> >> >> >> >> -- Pierre
> >> >> >> >>
> >> >> >> >> On Fri, Jan 29, 2016 at 9:11 AM, Glenn Adams <glenn@skynav.com
> >
> >> >> >> >> wrote:
> >> >> >> >> > I can provide some respond to this.
> >> >> >> >> >
> >> >> >> >> > On Fri, Jan 29, 2016 at 8:14 AM, Pierre-Anthony Lemieux
> >> >> >> >> > <pal@sandflow.com>
> >> >> >> >> > wrote:
> >> >> >> >> >>
> >> >> >> >> >> Hi Dae,
> >> >> >> >> >>
> >> >> >> >> >> > initial
> >> >> >> >> >>
> >> >> >> >> >> How does Netflix plan to use <initial>?
> >> >> >> >> >
> >> >> >> >> >
> >> >> >> >> > The TTT tools already support the initial element with the
> >> >> >> >> > ttml2
> >> >> >> >> > model,
> >> >> >> >> > and
> >> >> >> >> > has found it to be very useful in specifying a variety of
> >> >> >> >> > non-default,
> >> >> >> >> > global style settings, such as default color and font related
> >> >> >> >> > properties,
> >> >> >> >> > etc.
> >> >> >> >> >
> >> >> >> >> > For example, the CAP2TT tool in TTT specifies a test
> >> >> >> >> > configuration
> >> >> >> >> > file
> >> >> >> >> > that
> >> >> >> >> > specifies a template for generating TTML2 output files in
> which
> >> >> >> >> > is
> >> >> >> >> > specified
> >> >> >> >> > the following:
> >> >> >> >> >
> >> >> >> >> > <initial tts:fontSize="4vh"/>
> >> >> >> >> > <initial tts:lineHeight="5vh"/>
> >> >> >> >> > <initial tts:showBackground="whenActive"/>
> >> >> >> >> >
> >> >> >> >> > Here, initial is used to alter the default initial value.
> This
> >> >> >> >> > could
> >> >> >> >> > also be
> >> >> >> >> > done in other ways, such as by specifying these properties on
> >> >> >> >> > the
> >> >> >> >> > tt
> >> >> >> >> > element, from which all inheritance would occur (in TTML2);
> >> >> >> >> > however,
> >> >> >> >> > that
> >> >> >> >> > wouldn't work for properties that don't inherit, like
> >> >> >> >> > tts:showBackground,
> >> >> >> >> > etc.
> >> >> >> >> >
> >> >> >> >> > Note that be using initial to specify an explicit
> >> >> >> >> > tts:lineHeight,
> >> >> >> >> > then
> >> >> >> >> > there
> >> >> >> >> > is no possibility of using the default initial value of
> >> >> >> >> > 'normal'
> >> >> >> >> > (which
> >> >> >> >> > has
> >> >> >> >> > been a problem with IMSC content).
> >> >> >> >> >
> >> >> >> >> > It is also useful for redefining the default initial value of
> >> >> >> >> > tts:backgroundColor and resolving the platform dependent
> >> >> >> >> > default
> >> >> >> >> > initial
> >> >> >> >> > value of tts:color.
> >> >> >> >> >
> >> >> >> >> >
> >> >> >> >> >>
> >> >> >> >> >>
> >> >> >
> >> >> >
> >> >
> >> >
> >
> >
>
Received on Wednesday, 3 February 2016 04:27:34 UTC

This archive was generated by hypermail 2.3.1 : Thursday, 5 October 2017 18:24:27 UTC