Clarification on ISD, regions flowing and compliance with standard

Hi everyone,

According to the specifications, an Intermediate Synchronic Document (or ISD) is the described way that an TTML implementation should follow to parse  and later present correctly a timed text.

Specification also reports that content elements should flow inside the regions they are matched with according to the [associate region] procedure described under 11.3.1.3 Intermediate Synchronic Document Construction.

That section reports that for each time interval, for each out-of-line region R, the whole sub-tree should be replicated, by pruning that are not associated to the region R by these rules:

1) if the element specifies a region attribute [...] the element is associated with the region referenced by that attribute;
2) if some ancestor of that element specifies a region attribute [...] the element is associated with the region referenced by the most immediate ancestor that specifies this attribute;
3) if the element contains a descendant element that specifies a region attribute [...] then the element is associated with the region referenced by that attribute;
4) if a default region was implied (due to the absence of any region element), then the element is associated with the default region;
5) the element is not associated with any region.

While rules 1, 2, 4 and 5 makes complete sense to me, for what I understand, rule number 3 has the sole purpose of collecting the subtree until our deep element.

Take this example I took from specification, and changed by assuming all the regions are different each other, in consideration:

<tt tts:extent="640px 480px" xml:lang="en"
	xmlns="http://www.w3.org/ns/ttml"
	xmlns:tts="http://www.w3.org/ns/ttml#styling">

	<head>
		<layout>
			<region xml:id="r1"></region>
			<region xml:id="r2"></region>
		</layout>
	</head>
	<body xml:id="b1">
		<div xml:id="d1" begin="0s" dur="2s">
			<p xml:id="p1" region="r1">Text 1</p>
			<p xml:id="p2" region="r2">Text 2</p>
		</div>
		<div xml:id="d2" begin="1s" dur="2s">
			<p xml:id="p3" region="r2">Text 3</p>
			<p xml:id="p4" region="r1">Text 4</p>
		</div>
	</body>
</tt>

As explained in the specification, for the open interval [0s, 1s), we'll have a theoretical ISD that include "p#p1" and "p#p2", divided by region. For what I'm understanding, the rule number 3 serves only to this purpose: to create a full-subtree replica from body to an element with the same region id.

However, a content element associated with a region due to rule number 3 doesn't inherit anything from the region itself, because that would mean for the body, div and all the middle elements between body and the element that has the region attribute, to get eventual style or timing attributes (that will be later pruned) or other things, which are not supposed to get.

I'm I right on this reasoning? Because if I'm not, I do not explain myself how a processor could correctly merge shared elements in adjacent synchronic document instances, when a (for example) shared division element can contain different elements that flowed in different regions. This would mean that there should be explained a strategy for resolving conflicts or applying a priority factor on conflicting things, but I really really really hope this is not the case.

I'm now going to add a bit.

By recalling what specification says about the terms "may", "should" and "must" in the top of the document, nor the [construct intermediate document] procedure, nor it parents, seem to specify any of the quoted terms.

So, what I am asking is: how much a processor / presenter implementation should adhere to the ISD procedure? Is it normative or it isn't? Can steps be skipped if the implementation doesn't follow the ISD steps one-on-one and still be considered compliant?

Is compliance with the TTML standard based only on the profiles (e.g. DFXP Profile) or there's something else I'm missing?

Thank you,
Alexander.

Received on Monday, 19 August 2024 01:30:22 UTC