Open palemieux opened 6 years ago
There is no problem here. The reason for this is as follows: if E is animate
or set
, then CSS(E) := SSS(E)
. Furthermore, in this case, SSS(E)
is a subset of what would normally be the case for other elements, since neither inheritance nor initial value fallback applies. These semantics follow from the preamble of 10.4.4.2 step (6) and 10.4.4.3 step (3), the relevant parts of which I quote below:
10.4.4.2 step (6)
[implicit inheritance and initial value fallback] if the element type of
E
is not animation element typeanimate
orset
10.4.4.3 step (3)
if
E
is ananimate
,set
, orstyle
element, then returnCSS(E)
as the resulting computed style set without further resolution
My conclusion is that, since we already very carefully crafted language to handle the case of styles on animate
and set
, that no change is required.
There is no problem here. The reason for this is as follows: if E is animate or set, then CSS(E) := SSS(E).
This is not relevant since 10.4.4.2(5) merges the SSS of set
into the parent, and not the CSS of set
.
Are you arguing that the current CSS computation on set
is a no-op because it is never used to set or compute styles on the parent?
Are you arguing that the current CSS computation on set is a no-op because it is never used to set or compute styles on the parent?
Yes, that is basically correct. 10.4.4.2(5) is rather unusual because style resolution is occurring in pre-order traversal. That means that the parent of an inline animation is reaching down to its children animations and asking for each of their SSS(A)
, but, from the traversal order, their SSS(A)
has not yet been computed. However, the definition of SSS(A)
effectively requires performing all steps of 10.4.4.2, which is, itself, in the scope of 10.4.4.3(1), which is in the scope of 10.4.4.4(1).
So, you have the following happening (in order):
So, from this, we eventually get full computation of CSS(PARENT(A)), and we also get CSS(A), which is exactly SSS(A) as currently defined.
You might ask, why bother even creating CSS(A)? It is because when we write out an ISD we may choose to write out inline animations and have them reference their CSS(A) which had been serialized using an isd:css (or equivalent).
Finally, it would take some work to back out this logic and we may get it wrong. So I'm inclined to leave it as is since it is self-consistent and implemented.
The Working Group just discussed The set element is included in [resolve computed styles]. ttml2#950
, and agreed to the following:
SUMMARY: Issue review to continue; to defer if not resolved by the end of the CR3 CfC.
Per resolution, deferring by marking as ttml.next and closing. May be reopened for TTML2 2e processing.
Removing ttml.next, leaving here for ttml2 2e processing.
Adding to agenda for this week's call - not sure if we need to re-open this to address it.
Having just re-reviewed this issue, my opinion has not changed, which is, there is not a problem to solve here. I recommend we close this without further action, that is, unless someone can produce a test file that demonstrates how following the prescribed algorithm is broken in some deterministic fashion.
The Timed Text Working Group just discussed The set element is included in [resolve computed styles]. ttml2#950
, and agreed to the following:
SUMMARY: Pierre to consider if any editorial change would improve this, assigning to @palemieux
It is because when we write out an ISD we may choose to write out inline animations and have them reference their CSS(A) which had been serialized using an isd:css (or equivalent).
No set
element is present in ISDs per J.1.4
@palemieux thanks for bringing that to my attention, which would appear to invalidate my premise on insisting on keeping set
in the list under 10.4.4.4(2); let me verify this further over the next few days, and, if your point bears out and there is no other use for CSS(set
), then I will be open to removing it (as a substantive, but non-testable change), in which case I can proceed with creating a PR;
After further review, I have determined that we cannot remove set
from 10.4.4.4(1) [filter]. The reason we can't do this is that we must invoke 10.4.4.4(2) [resolved computed styles] on set
in order to obtain SSS(set
) via 10.4.4.3(1). While it is true that 10.4.4.3(2) does create CSS(set
) and initializes it to SSS(set
), 10.4.4.3(3) prevents further relative value resolution for CSS(set
). Since such CSS(set
), as well as CSS(animate
) and CSS(style
), are not used elsewhere, an implementation is free to discard or even not go to the trouble of creating such CSS instances. This is entirely consistent with the language in the preamble of §10.4, namely
Any implementation of this model is permitted provided that the externally observable results are consistent with the results produced by this model.
I recommend this issue be closed with no action.
The Timed Text Working Group just discussed TTML2 issue 950
.
this is that we must invoke 10.4.4.4(2) [resolved computed styles] on set in order to obtain SSS(set) via 10.4.4.3(1).
@skynavga, Step 10.4.4.2(5) is the step that handles computing set
style values, by including these style values in the specified style set of the parent.
[deleted]
If we should remove set
and animate
from the list in 10.4.4.4(1), then how do you propose we test this change? I can't see how it is testable. Furthermore, removing these items is really nothing more than an (optional) optimization, which an implementation can already make without being non-compliant. So, the bottom line is: do we really need to make this change? My answer is no, we do not.
Added to TPAC Agenda, https://www.w3.org/wiki/TimedText/tpac2019#Topics.
@skynavga In TTML1, the set
element was not listed in 10.4.4.4(1), and I ran into this issue while adding support for TTML2 to imscJS. If set
was added to 10.4.4.4(1) without any specific reason, then it should be removed so that (a) other implementers do not run into the same question and (b) to avoid other (at this point unknown) consequences.
The Timed Text Working Group just discussed The set element is included in [resolve computed styles]. ttml2#950
, and agreed to the following:
SUMMARY: defer this for the time being and don't make this a dependency for TTML2 2nd edition, removed from the milestone
The specified style set (SSS) of a
set
element is merged into the SSS of its parent (Steo 10.4.4.2(5)). As a result, the computed style set (CSS) of aset
element should not be generated, andset
elements should be excluded from step 10.4.4.4(2) as they were in TTML1, i.e.set
should be removed from the list at step 10.4.4.4(1).