-
Notifications
You must be signed in to change notification settings - Fork 63
Reorganized layout section and properties #2844
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
As I've already said in #2842, this is a good step forward to make the spec easier to read, nice work @mattgarrish ! Looking at this PR, section "6.3 Synthetic spreads" remains somehow problematic for me:
This second item was an action item for me but since we're re-working the whole section right now, I think we could tackle it in this PR as well. |
Is there a current use case for spreads in reflowable? If we limit spreads to FXL are we limiting future uses of something like Regions that allows for both fixed and reflowable elements? (and is that a problem we want to worry about right now?) |
|
Don't we have spread placement for reflowable to handle the case of mixing pre-paginated documents or having "reflowable" SVGs in the spine? (what is a reflowable svg?) The reading system won't know if you have a pre-paginated two-page layout in the middle of a chapter, so you need to hint whether to keep flowing the next document after the spread into the left-hand slot or add a blank page so that a new chapter, for example, starts in the right-hand slot. The same is likely true when reflowable documents are added to pre-paginated layouts, even though support for this is poor. |
If you mix pre-paginated and reflow together, they won't be displayed side by side in a spread since the concept of synthetic spread is completely foreign to reflowable documents. I think that there's confusion about two separate concepts:
This is poorly supported for several reasons:
|
|
To double down on why the concept of synthetic spread is foreign to reflowable documents:
Let's say that we have a reflowable publication with full bleed images in the middle of the spine (which seems to be the main use case): some of them are displayed on their own, some of them are displayed in a spread. The spine looks something like this:
The user doesn't like using columns when reading reflowable documents so they've disabled them:
Any spread placement for these reflowable resources (chapter 1 and chapter 2) would be ignored, since there's nothing that the RS can do with them. From a design/product perspective, I can also tell you that this is a bit of a nightmare. |
Ya, that's true. We do say the properties are only for synthetic spread placement, not simulated two-page reading. But we still have to allow for synthetic spread placement in reflowable layouts because of overrides to contain the documents in the spread. So, yes, spreads may only be created for pre-paginated documents, but they aren't exclusive to a global pre-paginated layout. We can, of course, define them under pre-paginated layouts and then have the reflowable refer back to the section for embedded spreads. It just seems like a missed opportunity that you couldn't have a fxl document in one slot and a reflowable in another, but perhaps there's no practical use for it, and it undoubtedly would complicate rendering. But think of an art book, for example, where you could have a painting continuously in view in one slot with a scrolling reflowable document describing it in the other. |
epub34/authoring/index.html
Outdated
| <p>All other properties in the Package rendering vocabulary are ignored for reflowable spine | ||
| items.</p> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| <p>All other properties in the Package rendering vocabulary are ignored for reflowable spine | |
| items.</p> | |
| <p>All other properties in the Package rendering vocabulary are ignored for reflowable spine | |
| items.</p> |
Shouldn't we use a more normative language for this type of statement (it is repeated in the other layout subsection). Something like "Other properties in the Package rendering vocabulary MUST NOT be used in spine items". If we are afraid of making some valid documents suddenly invalid, we could used SHOULD NOT.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Those lists are a placeholder for now until we figure out what properties are even surviving this revision. I had all the other properties listed but then took them out to match what looks like will be left after we cull the vocabulary.
But going back to when the list had global properties in it, not just the remaining spine overrides, the problem is that you can mix layouts using spine overrides. So say I want to globally set a value for all the pre-paginated overrides I've added to my globally reflowable layout. A restriction that you must not or should not set pre-paginated properties in reflowable layouts would make it invalid and you'd have to repeat spine overrides everywhere. They're fine to set but they're ignored for reflowable documents by reading systems... hence the statement.
There's also the problem that warnings are as bad as errors for vendor ingestion, so it's probably better to leave the requirement to ignore other properties on reading systems than restrict their presence.
This would create its own set of problems related to reading progression. What would happen if I swipe or tap to go forward/backward? Would it provide progression within the spread like you're suggesting, or would I move to the next synthetic spread? This would be even worse if chapter 1 is displayed in a synthetic spread on the left while chapter 2 is displayed on the right. I'm not sure how you would handle progression at all in this case, it would be extremely confusing.
For layout overrides, we define We don't refer to |
|
For someone not well versed in FXL (sorry, pre-paginated or roll), the section on spreads is really difficult to read. I wonder whether it is possible to reuse, or at least refer to, some of the diagrams we created in 3.3. I realize they are present in the vocabulary definition, but they should, somehow, be present in this section as well. Or, if necessary, create some versions of the diagrams. (Yes, this could be done in a later PR, once this one is finalized.) |
Right, I'm forgetting where I wrote things. I was thinking that I mentioned pre-paginated overrides under reflowable, but I mention the overrides within their respective layout sections. The tpac discussions were too late at night for me, but if you're both confident that the group meant to resolve to remove all these properties and limit spreads to fxl, I can go ahead and make more changes now. I have a commit history I can backtrack to now, at least. |
Readability is a worthwhile goal but maybe too many edits for this PR. Would it be worth making a new issue about this so we can bring it up after this PR is merged? |
This is based on a resolution from the TPAC meeting: https://w3c.github.io/pm-wg/minutes/2025-11-10-f2f.html#1a21:~:text=RESOLUTION%3A%20Remove%20text%20saying%20that%20presence%20of%20spread%20information%20implies%20that%20the%20pages%20SHOULD%20be%20laid%20out%20as%20a%20spread%2C%20clarify%20that%20either%20presentation%20equally%20acceptable.
Yes but, at this moment, that issue would not make sense, it is related to this PR. Once the PR is merged, I am happy to turn that into an issue. |
We didn't discuss this at TPAC, I'm bringing it up because the reorg moves "Synthetic spreads" to a higher level section of its own: "6.3 Synthetic spreads". In our current draft, it's under "8.2 Fixed layouts > 8.2.2 Fixed-layout package settings > 8.2.2.4 Spread placement". |
|
Wow, it is hard to keep up with this conversation! Just a few points:
|
The issue of @HadrienGardeur (#2841) does list those properties that we have talked about at TPAC. As we have discussed elsewhere, it would formally be cleaner if we had a formal resolution for the proposal in that issue (which replaces a number of other issues). @sueneu @shiestyle @reidmore-online let us put that on the agenda for this week. However, I do not see any resolution in the minutes of tpac on restricting the spread properties to pre-paginated layout. This should be discussed and decided upon, hopefully this week again. There is enough arguments around in this discussion, but to have a separate issue raised for that purpose may make it cleaner. Pinging again @sueneu @shiestyle @reidmore-online |
remove for now the sentence that says spread placement applies to reflowable; move the spread placement section under pre-paginated layouts and remove unneeded layout types section; various cleanup on remaining property tables and references to removed properties
…into fix/reorg-layouts # Conflicts: # epub34/authoring/index.html
|
@mattgarrish I tweaked some of the language related to spread placement in a previous commit but I can see that you're still adjusting that section so I'll comment instead.
This might be a good place to also indicate that without spread placement information, there's an expectation that the first resource should be displayed on its own. We have a resolution on day 1 of TPAC specifically about that:
This was also an action item for me to open a PR to cover this change, let me know if you'd prefer that.
Since we're making
We've agreed to drop that concept from the specification at TPAC, there was a resolution for this on day 1:
|
|
Sorry, ya, I had a few things from this afternoon that I wanted to finish up but I'm done now, at least until after we discuss this Thursday if you want to take over and make more edits. It looks like we both tried to write out that bit about spreads applying to reflowable docs, but I made a bit more extensive changes there to mention spreads in reflowable layouts. See if it still makes sense to you. I'm not wedded to anything I've written at this point. The other changes I made were pretty straightforward removals (which can be undone if necessary), but I also added a section to the reading system spec about handling obsolete but conforming features as we were only talking about deprecated ones. It's basically the same option to support these features but the difference for obsolete but conforming is that the legacy features must be ignored. |
|
@mattgarrish your changes look good and I'm happy that you updated these examples that relied on To comply with the resolutions that I referenced above, I would personally:
We might also need to add this behavior in the RS document, which would require a test as well. |
…ng adding a recommendation for rendition:page-spread-center handling
|
I've made some additional fixes now, including removing that paragraph. I did some rewriting to the first few paragraphs of the section, too. The reading system spec still had some mixing of requirements for reflowable documents in spreads, and I noticed we said nothing at all about how to handle rendition:page-spread-center, so I tried to clean it up as best I could, as well. Again, feel free to directly edit anything if you think it can stand for improvement. |
|
This was discussed during the pmwg meeting on 11 December 2025. View the transcriptReorganized Layout Section - w3c/epub-specs#2844wendyreid: In working on the reorg PR, some questions have come up about moving some things to the fxl section mgarrish: The biggest one is the one we just resolved ivan: The big question does spreads ever apply to flowing? mgarrish: I introduced images in spine simply to acknowledge that they are fxl SueNeu: I haven't seen a used case where it makes sense for spreads in reflow DaleRogers: I want to agree with SueNeu. In the epubs I create, I have mixed fxl/reflow Hadrien: I don't think there is any impact wendyreid: If we move spread placement to fxl, it will be clearer since in practice it only works for fxl <shiestyle> +1 to Wendy wendyreid: so we should say spread placement is only for fxl documents, whether they are complete epubs or hybrid SueNeu: Thanks, that is helpful. DaleRogers: For me it is more semantics. Does document mean an xhtml page or the epub? wendyreid: We mean content document rdeltour: Just checking that the PR stays open for a few days, I have some comments mgarrish: It will definitely be open for a while ivan: we should do a proper resolution before we move on <wendyreid> PROPOSED: Move the spread placement section into the pre-paginated section of the specification. <mgarrish> +1 <wendyreid> +1 <shiestyle> +1 <toshiakikoike> +1 <ivan> +1 <rdeltour> +1 <duga> +1 <SueNeu> +1 <DaleRogers> +1 <MasakazuKitahara> +1 <Hadrien> +1 <kersc> +1 <CharlesL1> +1 RESOLUTION: Move the spread placement section into the pre-paginated section of the specification. |
switches "obsolete but conforming" to "outdated"; fixes a couple of broken respec shorthand references
add "fixed layout" parent structure to rs spec; simplify rs support requirement for fxl docs
sueneu
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
“outdated” is much simpler and works well here. Is there a place where our use of it is defined for people who might want that?
Maybe in Authoring Shorthands?
obsolete: features or attributes that are no longer in common use but are still considered conforming for backwards compatibility
We should probably make it clear in the RS spec that obsolete features should still be supported.
|
I am late to the party, and maybe what I hit was a RS error. But I have just had a problem with an fxl file that did not display properly without the I have indeed prepared an EPUB with a bunch of images in the spine (all images are of the same dimension), each having a fallback to an html file, so the EPUB itself is 100% ok per epubcheck. If I display the book in Thorium, it only displays every second image, as if it tried to put each image on top of one another. If I set the meta above, it works just fine. Is it a Thorium bug, or are we maybe to hasty obsoleting that particular value for that property? (My experience of fxl is close to nil, so it may well be on me.) |
This is probably a Thorium Desktop bug for publications with images in spine. @iherman could you share this EPUB with me by email? I can open up an issue for Thorium Desktop and we'll test it out with Thorium Mobile as well. |
|
The book is at https://e.pcloud.link/publink/show?code=XZC0oAZ5CFtwfY4i9QFPeQTu0EL4Fq2zH87, if it helps (with the meta added). |
Yes, we have an appendix that explains the meanings and validation expectations for both outdated and deprecated. If you're reading the github diff and see the syntax
I'm updating the reading system appendix in this PR, as well. We used to only say that they may support deprecated features, but I've added separate subsections for each category. The outdated features still have that subset of EPUB 2 legacy features that reading systems must not support that needs to be called out. |
iherman
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Apart from #2844 (comment) (which may become irrelevant) I believe our best way forward is to merge this asap. There may be some details here and there, but we all seem to agree about the broad change, and it may become more efficient to discuss the details through dedicated issues.
Huge thanks to @mattgarrish
|
Re #2844 (comment) @HadrienGardeur, it works with setting the Where is it specified in the specification that, for images in the spine, the spread should be |
… and much more dangerous as well. I've seen many publications that set this property to
That's not the problem IMO. Thorium Desktop most likely defaults to "auto" but I suspect a bug when laying out spreads with images in spine. |
|
Here's a side-effect of removing the flow property that's not as easy as deleting the reading system requirement:
Replacing the flow values with their old rendering requirements, I'm going to change this to:
But let me know if anyone has a problem with this. I'd forgotten we enforced support for the flow types for scripting. (Edit: removing the parenthetical about overriding values, since that can't be done anymore.) |
I'm getting down to minor cleanup stuff, but I still want to make sure everything is reasonably consistent. I'm hopping between documents today but I'll definitely flip this out of draft status before the end of the weekend and see if there's any final feedback. |
|
Opening this for review now as there's not much left I can do. I do have one last question about rendition:align-x-center, though. From the reading system processing section, it sounds like applies to both reflowable and pre-paginated content, since it has separate requirements for positioning in the viewport or spread and positioning in virtual pages. Going back to 3.0.1 it was classified as a general property, meaning it was intended for both layouts, but somewhere along the line it got reclassified as a reflowable property. @toshiakikoike @shiestyle if you can confirm what it applies to, I'll do a last bit of editing to fix either the authoring or rs specs. |
|
(Editorial: I believe the comment at #2844 (comment) and the resulting thread, should be discussed as part of #2844, and not here. It was my mistake, apologies. See #2841 (comment) |
I have no problem with the technical change. However, I had some difficulties parsing the new text, so I tried to make it a bit more concise. Here is my take:
But I may have missed some nuances... |
This is wonderful. I spot two places where we might use a simpler word, and its missing the caveat about local overrides. In both versions, I am confused by the first sentence. Is spine-level scripting in the “EPUB content documents”? Wouldn’t spine-level scripting be in the spine but affect the content documents?
|
|
The edits look fine to me. It was getting late so I just spliced in the text that was in the processing instructions for scrolled-doc and scrolled-continuous. I've deleted the local overrides part, though. As I mentioned in my edit to the comment above, when I copied the text I noticed that the hyperlink went to the flow property spine overrides in the authoring spec which are now gone. Support for overrides is only a thing if the reading system developer chooses to support the flow property, but in that case they will already know they have to account for the local overrides. |
This pull request is a continuation of #2842 but rebased on the current draft to avoid merge conflicts.
A brief recap from #2842:
New to this pull request:
A bit more controversially, perhaps, I've noted that images in spine are a type of fixed-layout document even if they require fallbacks, and added additional caveats about vendor acceptance and accessibility in the existing note about fxl support. I also added a section to the authoring spec that the icb dimensions will be obtained from the image metadata and to refer to the image format definition for how that's done. I similarly stated for reading systems that if they opt to support image formats in the spine that's where the dimensions are obtained. That should be all we need to say so that we don't have to classify images in spine as separate from fxl documents for either pre-paginated or roll layouts.
Still to do before we look to merge is to resolve on the other properties and overrides we're deprecating so I can take them out without worrying that they'll have to be re-added. This will not only affect the vocabulary, but could mean making spread placement specific to pre-paginated layouts if we decide they aren't useful for reflowable documents.
Fixes #2841
Fixes #2754
Fixes #2753
Fixes #2751
Fixes #2750
Fixes #2749
See:
(Added preview links for RS, too, IH)
Preview | Diff