Guidelines for an implementation of the Readium Architecture for Web-based platforms.
Editors:
Participate:
Document status: DRAFT
Turns the manifest into a working in-memory model. Understands publication structure, resources, metadata.
API:
Require Publication’s Reading Order and Resource collections. Starts from a resource Link.
API:
Text Highlights
Given a location (as a range) it will render highlights over the target text nodes.
Anchored Elements
Given a location (as a point) it will anchor an element over that location.
An element could be an image or other types of HTML block elements.
Recognize interactions, gestures on tap surfaces, when a text selection is made, when focus changes, and more. Emits Pointer events, which includes Mouse/Pen/Touch events.
Element Interaction
Tap Regions
Gestures
Text Selection
Unpacked publications can be served from an HTTP web server, with resources as static assets.
Packaged publications can be streamed from a Publication Server.
To process a manifest you can start with JavaScript’s native JSON parsing to deserialize into a simple object.
With the module that implements a Publication Model you can read and manipulate a model that’s validated against the Readium Web Publication schema, with optional typing (via TypeScript) and with the addition of convenience methods.
Resources are fetched from a server given a web origin. Typically via HTTPS, initiated by the HTML processing model, and programmatically using the Fetch API.
Publication resources are streamed or downloaded over networking protocols.
Contrary to other implementations that run on devices with file-system access, publication resources on the web are not, as a whole, directly or immediately accessible.
Publication resources generally need to be loaded (embedded) into the render tree (DOM) of a web-based reading system.
List of content types with suggested embed elements, or other:
<iframe>
, or other means of document transclusion<audio>
, <video>
<img>
, <picture>
, <svg>
, <canvas>
, background-image
CSS propertySequencing and layout of content in reading order progression.
Match Presentation Hints.
Fragment, paginate and apply synthetic spreads.
Virtualized pagination and scrolling.
Recommended approach for implementing continuous overflow.
When loading or rendering additional resources for the purposes of prefetching and virtualization, consider frame times, DOM node count, CPU and memory heap.
Given the linear progression of a user’s reading activity it is advisable to limit the prefetching to the adjacent (previous and next) resources of a resource set in the reading progression. To effectively benefit from this approach, the adjacent resources can be fetched with high priority, as soon as or after the primary resource to render is ready.
The prefetch range could increase, with lower priority prefetching, given the known or inferred capabilities of the connected client.
Detailed guidelines are provided to developers of Web Readers who need to achieve some level of protection for copyright protected Web Publications consumed by Web applications.