edrlab / thorium-reader

A cross platform desktop reading app, based on the Readium Desktop toolkit
https://www.edrlab.org/software/thorium-reader/
BSD 3-Clause "New" or "Revised" License
1.85k stars 157 forks source link

rendition:flow='scrolled-doc' not supported #159

Open saprentice opened 6 years ago

saprentice commented 6 years ago

Tested on V1.0.0-alpha.2 It would be great to see the rendition:flow=scrolled-doc property supported. This (as well as 'scrolled-continuous') works fine on Readium in Chrome, so was assuming it would work here as well. This is very important for techcomm to make it easy to locate the extent of "topics" within a publication. The metadata in the OPF should override the setting (paginated or scrolling) specified by the user in the Options. This can be applied to the entire publication or just to specific spine items overriding the default state set in the metadata. http://www.idpf.org/epub/301/spec/epub-publications.html#layout-property-flow

danielweck commented 6 years ago

Implementing support for the scrolled-doc authored metadata should be relatively straight-forward, as the building blocks are already in place: as a user, I can already enforce the per-document scrollview mode (i.e. disabled paginated mode), using the preferences / options dialog.

scrolled-continuous is a totally different "beast", its implementation complexity is an order of magnitude greater than scrolled-doc. As it stands now, the Readium1 code cannot be trivially-ported into the Electron-specific Readium2 "navigator" layout logic. Basically, an adequately-sized pool of vertically-stacked iframes/webviews need to be managed so that performance and memory consumption remains reasonable, and changes in individual document dimensions need to be detected so that a render pass can be triggered in order for the stack to update its relative positioning (e.g. when font faces take a long time to load asynchronously, or when the user interacts with dynamic divs or HTML collapsible/expandable detail+summary elements). In a nutshell: don't expect scrolled-continuous to be implemented in the near term, but rest assured that this is a feature the Readium core contributors care about ;)

saprentice commented 6 years ago

Sounds good to me! I'm mostly interested in the scrolled-doc metadata functionality. This will allow me to demo the concept of "EPUB Help" (using EPUBs as an Online Help system). My proposal for a talk on this (featuring Readium Desktop) was approved for TCWorld (in November).

I'll put in a plug for my issue/request #25, since that is a key feature for EPUB Help to be a viable concept. This would provide the ability for a desktop application to launch a specific EPUB on a specific "topic" providing Help for the requested feature in that application.

Thanks for all of your hard work in putting together this fantastic reader! :-)

danielweck commented 6 years ago

Thanks for the additional info on the use-case! :)

panaC commented 5 years ago

@llemeurfr can you close this ?

llemeurfr commented 5 years ago

The support of the scrolled-doc property found in an EPUB is different of the support of user parameter "scroll vs paginated". Before we close this issue, we must correctly handle the EPUB property.

Question to EPUB experts: are we sure that "The metadata in the OPF should override the setting (paginated or scrolling) specified by the user in the Options."? In many other situations, user's decision overrides author's indications.

JayPanoz commented 5 years ago

Took a super quick look at the spec and it looks like it addresses this exact question. Emphasises mine.

When the rendition:flow property is specified on a meta element, it indicates the Author's global preference for overflow content handling (i.e., for all spine items). Authors MAY indicate a preference for dynamic pagination or scrolling. For scrolled content, it is also possible to specify whether consecutive EPUB Content Documents are to be rendered as a continuous scrolling view or whether each is to be rendered separately (i.e., with a dynamic page break between each).

If a Reading System supports the specified rendering, it SHOULD use that method to handle overflow content, but MAY provide the option for users to override the requested rendering.

So user’s override > author’s preference.

llemeurfr commented 5 years ago

Thanks @JayPanoz it is what I thought. "If a Reading System supports the specified rendering, it should use that method to handle overflow content, but may provide the option for Users to override the requested rendering". The default value of rendition:flow is auto, in which case "the Reading System may render overflow content using its default method or a User preference, whichever is applicable".

This opens an issue: how should we let the user indicate that he agrees to follow the indication given be rendition:flow (but use his preference if no indication is given) OR wants to override it?

saprentice commented 5 years ago

My thoughts on this. In options, provide the following ..

    Flow preference if not specified in EPUB metadata:     ( ) Paginated     ( ) Scrolled

    [ ] Override metadata setting with selected preference

It seems that if the EPUB author has explicitly set a rendering method, it's for a good reason, so likely would be good to honor that, unless the user really wants to override.

Thanks! ...scott

On 7/1/19 4:59 AM, L. Le Meur wrote:

Thanks @JayPanoz https://github.com/JayPanoz it is what I thought. "If a Reading System supports the specified rendering, it should use that method to handle overflow content, but may provide the option for Users to override the requested rendering". The default value of rendition:flow is |auto|, in which case "the Reading System may render overflow content using its default method or a User preference, whichever is applicable".

This opens an issue: how should we let the user indicate that he agrees to follow the indication given be rendition:flow (but use his preference if no indication is given) OR wants to override it?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/readium/readium-desktop/issues/159?email_source=notifications&email_token=AB7KXQF2FW2GXBSZUZDOU2DP5HWR7A5CNFSM4FC5SEYKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODY54U3I#issuecomment-507234925, or mute the thread https://github.com/notifications/unsubscribe-auth/AB7KXQCBBIBG2BYRDPQHPADP5HWR7ANCNFSM4FC5SEYA.

llemeurfr commented 2 years ago

Triage: while interesting, looking at the low number of EPUBs with rendition-flow=scrolled-doc, we keep this issue on the in the todo list. rendition-flow=scrolled-continuous will not be handled in Thorium: moving from one resource to the next is seamless with a mouse or key when we reach the bottom of the resource.

gautierchomel commented 2 years ago

A solution could be to implement a button "set display to publisher defaut".