CARVIEW |
EPUB Reading Systems 3.3
W3C Candidate Recommendation Snapshot
More details about this document
- This version:
- https://www.w3.org/TR/2022/CR-epub-rs-33-20220512/
- Latest published version:
- https://www.w3.org/TR/epub-rs-33/
- Latest editor's draft:
- https://w3c.github.io/epub-specs/epub33/rs/
- History:
- https://www.w3.org/standards/history/epub-rs-33
- Commit history
- Test suite:
- https://w3c.github.io/epub-tests/index.html
- Implementation report:
- https://w3c.github.io/epub-specs/epub33/reports/
- Editors:
- Matt Garrish (DAISY Consortium)
- Ivan Herman (W3C)
- Dave Cramer (Invited Expert)
- Former editors:
- Garth Conboy (Google)
- Marisa DeMeglio (DAISY Consortium)
- Daniel Weck (DAISY Consortium)
- Feedback:
- GitHub w3c/epub-specs (pull requests, new issue, open issues)
- public-epub-wg@w3.org with subject line [epub-rs-33] … message topic … (archives)
Copyright © 1999-2022 W3C® (MIT, ERCIM, Keio, Beihang). W3C liability, trademark and permissive document license rules apply.
Abstract
EPUB® 3 defines a distribution and interchange format for digital publications and documents. The EPUB format provides a means of representing, packaging, and encoding structured and semantically enhanced web content — including HTML, CSS, SVG and other resources — for distribution in a single-file container.
This specification defines the conformance requirements for EPUB 3 reading systems — the user agents that render EPUB publications.
Status of This Document
This section describes the status of this document at the time of its publication. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at https://www.w3.org/TR/.
This document was published by the EPUB 3 Working Group as a Candidate Recommendation Snapshot using the Recommendation track.
Publication as a Candidate Recommendation does not imply endorsement by W3C and its Members. A Candidate Recommendation Snapshot has received wide review, is intended to gather implementation experience, and has commitments from Working Group members to royalty-free licensing for implementations.
This Candidate Recommendation is not expected to advance to Proposed Recommendation any earlier than 30 October 2022.
This document was produced by a group operating under the W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
This document is governed by the 2 November 2021 W3C Process Document.
This section is non-normative.
The EPUB 3 standard is separated into two distinct concerns: the authoring of EPUB publications is defined in the core specification [epub-33], while this specification details the rendering requirements for them in EPUB reading systems.
An EPUB reading system can take many forms. It might have a visual display area for rendering the content to users, for example, or it might only provide audio playback of the content. Therefore, there is no single set of rules that applies to all reading systems. Rather, this specification breaks down the rendering requirements based on a reading system's capabilities and the features it supports.
Moreover, this specification allows for a great deal of flexibility for developers to create unique user interfaces, and requirements for things like metadata processing are intentionally minimal to allow for such flexibility.
So, although this specification identifies the formal requirements for reading systems, it is not possible to understand this document in isolation. Developers should also familiarize themselves with the full content structure of an EPUB publication in order to understand the complete range of information that is available.
A conforming reading system is not necessarily a single dedicated program or device but might exist as a distributed system.
This specification uses terminology defined in EPUB 3.3 [epub-33].
It also defines the following term:
- content display area
-
The area within the viewport dedicated to the display of EPUB content documents. The content display area excludes any borders, margins, headers, footers, or other decoration a EPUB reading system might inject into the viewport.
In the case of synthetic spreads, the viewport contains two content display areas.
Only the first instance of a term in a section links to its definition.
As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.
The key words MAY, MUST, MUST NOT, OPTIONAL, RECOMMENDED, SHOULD, and SHOULD NOT in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.
This section is non-normative.
The [html] standard is continuously evolving — there are no longer versioned releases of it. That standard, in turn, references various technologies that continue to evolve, such as MathML, SVG, CSS, and JavaScript.
Reading system developers must keep track of the changes to HTML, and the technologies it references, to ensure they keep their systems up to date.
This specification does not require EPUB reading systems to support scripting, HTML forms or the HTML DOM. Reading systems conformant with this specification are only expected to be able to process a conforming EPUB content document. As support for scripting and HTML forms is not compulsory, a conformant reading system might not be a fully conformant HTML user agent.
This specification does not reference a specific version of [svg], but instead uses an undated reference. Whenever there is any ambiguity in this reference, the latest recommended specification is the authoritative reference.
This approach ensures that EPUB will always keep pace with changes to the SVG standard. Reading system developers must keep track of changes to the SVG standard to ensure that they keep their systems up to date.
Reading systems MUST process publication resources [epub-33].
If a reading system has a viewport, it MUST support the image core media type resources [epub-33].
If it has the capability to render prerecorded audio, it MUST support the audio core media type resources [epub-33].
It is recommended that reading systems support at least one of the H.264 [h264] and VP8 [rfc6386] video codecs, but this is not a conformance requirement — a reading system may support any video codec, or none at all. Reading system developers should take into consideration factors such as breadth of adoption, playback quality, and technology royalties when deciding which video formats to support.
Reading systems MAY support an arbitrary set of foreign resource types, and if a foreign resource is not supported, MUST process fallbacks as defined in foreign resources [epub-33].
Reading systems SHOULD support remote resources, as defined in Resource locations [epub-33].
Reading systems MUST prevent data URLs [rfc2397] from opening in top-level browsing contexts [html], except when initiated through a reading system affordance such as a context menu. If a reading system does not use a top-level browsing context for top-level content documents, for example if the top-level content document is an SVG, it MUST also prevent data URLs from opening as though they are top-level content documents.
A reading system MUST be both of the following:
-
a conformant processor as defined in [xml-names].
In addition, when processing XML documents, a reading system MUST NOT resolve external identifiers in DOCTYPE, ENTITY and NOTATION declarations [xml].
A reading system MUST process, for all publication resources, the attributes that set the language for the documents' contents, when applicable. This includes:
- the
xml:lang
attribute [xml] for all XML documents (e.g., the package document, XHTML content documents, SVG content documents, and media overlay documents). - the
lang
attribute for XHTML content documents and SVG content documents. (Refer to respective "The 'lang' and 'xml:lang' attributes" sections in [html] and [svg] for more information.)
Similarly, a reading system MUST process, for all publication resources, the attributes that set the base direction for the documents' contents, when applicable. This includes:
- the
dir
attribute [epub-33] for the package document. (See also 4.1 Base direction for further details.) - the [html]
dir
attribute for XHTML content documents. - the [svg]
direction
attribute for SVG content documents.
In the absence of this
information in a publication resource, reading
systems MUST NOT assume either the the language or the base direction of
that resource from information expressed in the package document (i.e., in xml:lang
and dir
attributes, in hreflang
attributes on
link
elements, or from
dc:language
elements [epub-33]). Refer to a resource's formal
specification for more information about to handle the absence of explicit language or direction
information.
Reading systems MAY support network access to retrieve remote resources and to allow scripted content documents to communicate with web-hosted APIs and retrieve resources.
Providing network access, however, increases both the security risks to the reading systems and the security and privacy risks to users. These risks are often unique to reading systems and the platforms they run on — the browser cores that most reading systems are built on do not offer the same security and privacy controls as web browsers themselves. Consequently, developers need to use extra caution when allowing network access, and more thoroughly test that their reading systems are not vulnerable to attacks. More information about these risks is provided in 14. Security and privacy.
If reading system developers allow network access, it is strongly RECOMMENDED both that they:
- notify users when network activity occurs; and
- let users block access to the network (e.g., disable network access for the reading system globally or for a particular EPUB publication).
Reading systems SHOULD open links that resolve outside the EPUB publication in a new browser instance to ensure that the browser's security and privacy controls are available to users.
Although links to external web sites and resources are commonly found in EPUB content documents, these are not the only sources. For example, if a reading system provides access to linked records [epub-33] in the package document metadata, it should similarly open the links in a new browser instance.
For more information about security and privacy issues with external links, see 14.2 Threat model.
Reading systems MUST process the EPUB container [epub-33].
An application that processes EPUB containers does not have to be a full-fledged reading system (e.g., an application might only extract the content of a container or check the validity of the packaged content). In these cases, developers of such applications can ignore the rendering requirements for reading systems defined in this section.
Reading systems MUST assign a URL [url] to the root directory of the OCF abstract container. This URL is called the container root URL. It is implementation specific, but the implementation MUST have the following properties:
- The result of parsing [url] "
/
" with the container root URL as base is the container root URL. - The result of parsing [url] "
..
" with the container root URL as base is the container root URL. - The origin of the container root URL is unique for each user-specific instance of an EPUB publication in a reading system.
The unicity of the origin per each user-specific instance of an EPUB publication in a reading system means that if two different users acquire a copy of the same EPUB publication, the origins will be different for the two users on those copies even if the same reading system is used.
The properties of the container root URL are such that a conforming reading system will parse any relative URL string to a content URL. In other words, relative links do not "leak" outside the container content, which is an important feature for security.
In practice, the container root URL behaves similarly to a URL defined as follows:
URL component | Values |
scheme | http or https |
host | localhost |
port | a dynamic port uniquely assigned to the EPUB instance |
for example:
Container File | File Path | URL |
Root directory | empty string |
https://localhost:49152/
|
Package document |
EPUB/package.opf
|
https://localhost:49152/EPUB/package.opf
|
EPUB content document |
HTML/file name.xhtml
|
https://localhost:49152/HTML/file%20name.xhtml
|
URL string (found for example in the package document) |
content URL |
../HTML/file%20name.xhtml
|
https://localhost:49152/HTML/file%20name.xhtml
|
/Media/img.png
|
https://localhost:49152/Media/img.png
|
../../../Media/img.png
|
https://localhost:49152/Media/img.png
|
Note that the last two links are disallowed in an EPUB publications to ensure better interoperability with non-conforming or legacy reading systems and toolchains.
Some language specifications reference Requests For Comments that preceded [url], in which case the earlier RFC applies for content in that particular language.
Unlike most language specifications, reading systems must use the container root URL as the base URL [url] for all files within the META-INF
directory. See
also the section on Parsing URLs in the META-INF
directory in [epub-33].
Although EPUB creators are required to follow various File name and file path restrictions [epub-33] for maximum interoperability, reading systems SHOULD attempt to process file names and paths that do not adhere to these requirements. Invalid file names and paths may only be problematic on some operating systems.
This specification does not specify how a reading system that is unable to represent OCF file names and paths would handle this incompatibility.
- Container file (
container.xml
) -
A reading system MUST, by default, use the package document referenced the from first
rootfile
element [epub-33] to render the EPUB publication. If the reading system recognizes a means of selecting from the other available options, it MAY choose a more appropriate package document. - Metadata file (
metadata.xml
) -
Reading systems SHOULD ignore
metadata.xml
files [epub-33] with unrecognized root elements. - Manifest file (
manifest.xml
) -
Reading systems MUST NOT use ancillary manifest information contained in the ZIP archive or in the
manifest.xml
file [epub-33] for processing an EPUB publication. - Digital signatures file
(
signatures.xml
) -
Before computing the digest used to validate the signature in the
signatures.xml
file [epub-33], reading systems MUST decrypt any data encrypted after signing — data encrypted before signing MUST NOT be decrypted.Refer to Decryption Transform for XML Signature [xmlenc-decrypt] for more information about identifying data encrypted after signing.
- Other files
-
Reading systems MUST NOT fail when encountering configuration files in the
META-INF
directory not listed in Reserved files [epub-33].
A reading system:
-
MUST treat any OCF containers that specify the [zip] file is split across multiple storage media as in error.
-
MUST treat any OCF containers that use compression techniques other than Deflate [rfc1951] as in error.
-
MUST support the ZIP64 extensions defined as "Version 1" [zip].
-
MUST treat OCF ZIP containers that use [zip] encryption features as in error.
-
MAY generate a physical directory for the root directory of the OCF abstract container if it unzips the contents.
-
does not have to preserve information from an OCF ZIP container through load and save operations outside the context of the OCF abstract container. In particular, a reading system does not have to preserve CRC values, comment fields or fields that hold file system information corresponding to a particular operating system (e.g., External file attributes and Extra field).
With respect to specific fields in the OCF ZIP container archive, the reading system:
-
MUST treat
version needed to extract
field values other than10
,20
or45
in the local file header table [zip] as being in error. -
MUST treat
compression
method field values other than0
or8
in the local file header table [zip] as being in error. -
MUST treat OCF ZIP containers with an
Archive decryption header
or anArchive extra data record
[zip] as being in error.
Reading systems SHOULD support deobfuscation of fonts as defined in Font obfuscation [epub-33].
To restore the original data, reading systems should simply reverse the process: the source file becomes the obfuscated data, and the destination file contains the raw data.
EPUB 3 allowed font obfuscation prior to EPUB 3.0.1, but did not specify the order of obfuscation and compression. As a result, reading systems might encounter invalid fonts after decompression and deobfuscation. In such instances, deobfuscating the data before inflating it may return a valid font. Reading systems do not have to support this method of retrieval, but developers should consider it when supporting EPUB 3 content generally.
Reading systems MUST process the package document [epub-33].
If the dir
attribute
[epub-33] is set and indicates a base direction of ltr
or
rtl
, reading systems MUST override the bidi algorithm per
the
higher-level protocols defined in [bidi], setting the
paragraph embedding level to 0 if the base direction is ltr
, or 1 if the base direction
is rtl
.
Otherwise
the base direction is auto
, in which case reading systems MUST
determine the text's direction by applying the Unicode Bidi Algorithm, beginning with Rule P2 of [bidi].
Reading systems SHOULD NOT depend on the unique identifier being unique to one and only one EPUB publication. Determining whether two EPUB publications with the same Unique Identifier represent different versions of the same publication, or different publications, may require inspecting other metadata, such as their last modification dates, titles, and authors.
- White Space
-
Reading systems MUST strip and collapse ASCII whitespace [infra] from Dublin Core [dcterms] and
meta
element values [epub-33] before processing. - The
dc:identifier
element -
To determine whether the value of a
dc:identifier
element [epub-33] conforms to an established system or has been granted by an issuing authority, reading systems SHOULD check for anidentifier-type
property [epub-33]. - The
dc:title
element -
Reading systems MUST recognize the first
dc:title
element [epub-33] in document order as the main title of the EPUB publication and present it to users before other title elements.This specification does not define how to process additional
dc:title
elements. - The
dc:language
element -
The language(s) of the EPUB publication specified in
dc:language
elements are informational. Some uses of this information include:- exposing it to the user through the reading system user interface
- using it to enhance functionality in a bookshelf (e.g., sorting by language)
- using it to optimize the reading interface (e.g., to preload text-to-speech languages)
See 2.6 Internationalization for more details on how to determine the language of a publication resource.
- The
dc:creator
element -
When determining display priority, reading systems MUST use the document order of
dc:creator
elements [epub-33] in themetadata
section, where the firstcreator
element encountered is the primary creator. If a reading system exposes creator metadata to the user, it SHOULD include all the creators listed in themetadata
section whenever possible (e.g., when not constrained by display considerations). - The
meta
element -
Reading systems SHOULD ignore all
meta
elements whoseproperty
attributes [epub-33] define expressions they do not recognize. A reading system MUST NOT fail when encountering unknown expressions.If the
property
attribute's value does not include a prefix [epub-33], reading systems MUST use the prefix URL "https://idpf.org/epub/vocab/package/meta/#
" to expand the value.If a reading system does not recognize the
scheme
attribute [epub-33] value, it SHOULD treat the value of the element as a string. - The
link
element -
Retrieval and support of linked resources is OPTIONAL.
The language identified in an
hreflang
attribute is purely advisory. Upon fetching the resource, a reading system MUST use the language information associated with the resource to determine its language, not the metadata included in the link to the resource.In the case of a linked metadata record [epub-33], reading systems MUST NOT skip processing the metadata expressed in the package document (i.e., use only the information expressed in the record). Reading systems MAY compile metadata from multiple linked records.
When resolving discrepancies and conflicts between metadata expressed in the package document and in linked metadata records, reading systems MUST use the document order of
link
elements [epub-33] in the package document to establish precedence (i.e., metadata in the first linked record has the highest precedence and metadata in the package document the lowest, regardless of whether thelink
elements occur before, within, or after the package metadata elements).Reading systems MUST ignore any instructions contained in linked resources related to the layout and rendering of the EPUB publication.
If any of the
rel
orproperties
[epub-33] attributes' values do not include a prefix, reading systems MUST use the prefix URL "https://idpf.org/epub/vocab/package/link/#
" to expand the values.
Reading systems MUST ignore values of the properties
attribute [epub-33] they do not recognize.
Reading systems SHOULD NOT use linked resources in the rendering of an EPUB publication due to the inherent limitations and risks involved (e.g., lack of information about the resource and how to process it, security risks from remotely-hosted sources, lack of fallbacks, etc.).
A reading system that does not support the MIME media type [rfc2046] of a given publication resource MUST traverse the
manifest fallback chain
[epub-33] until it identifies a supported publication resource to use in place of
the unsupported resource. If the reading system supports multiple publication resources in the
fallback chain, it MAY select the resource to use based on the resource's
properties
attribute [epub-33] values, otherwise it SHOULD
honor the EPUB creator's preferred fallback order. If a reading system does not support any resource
in the fallback chain, it MUST alert the reader that it could not display
the content.
When manifest fallbacks [epub-33] are provided for top-level content documents, reading systems MAY choose from the available options to find the optimal version to render in a given context (e.g., by inspecting the properties attribute for each).
A reading system MUST terminate the fallback chain at the first reference to a manifest item it has already encountered.
If any of the properties
attribute's values do not include a prefix [epub-33], reading
systems MUST use the prefix URL
"https://idpf.org/epub/vocab/package/item/#
" to expand the values.
Reading systems MUST provide a means of rendering the EPUB publication in the order defined in the
spine
element [epub-33], which includes:
- recognizing the first primary
(linear)
itemref
[epub-33] as the beginning of the default reading order; and, - rendering successive primary items in the order given in the
spine
.
When a user traverses the default reading order defined in
the spine
element, a reading system MAY automatically skip non-linear itemref
elements [epub-33]. When a user activates a hyperlink to a non-linear
resource, however, reading systems MUST render the referenced resource
or a designated fallback. Reading systems MAY also provide the
option for users to skip non-linear content by default or not.
If the EPUB
creator has not specified the page-progression-direction
attribute [epub-33], the
reading system MUST assume the value of default
. When
page-progression-direction
value is default
, the reading system can
choose the rendering direction.
If
the page-progression-direction
attribute has a value other than default
,
the reading system MUST ignore any directionality computed from pre-paginated
XHTML content
documents.
If any values of the properties
attribute do not include a prefix [epub-33], reading
systems MUST use the prefix URL
"https://idpf.org/epub/vocab/package/itemref/#
" to expand the values.
Reading systems MUST ignore all values expressed in spine itemref
properties
attributes that they do not recognize.
Reading systems MUST NOT skip spine references to duplicate manifest items when rendering the linear reading order. The reading system MUST treat these as distinct items for user interface (UI) purposes (for example, each occurrence could be independently bookmarked or annotated). When a reading system follows a hyperlink to a resource referenced multiple times in the spine, the reading system MUST navigate to the first occurrence of the document in the linear reading order.
When a spine itemref
element's properties
attribute overrides a global rendering property [epub-33], reading systems MUST follow the requirements for the override's global value to display
that spine item.
For example, a spine item that contains the layout-pre-paginated
override [epub-33] is rendered following the requirements of the
global pre-paginated
value.
If more than one override for the same property is specified in a properties
attribute, reading systems MUST use only the first value.
In the context of this specification, support for collections [epub-33] in reading systems is OPTIONAL. Reading systems
MUST ignore collection
elements that define
unrecognized roles.
The definition of EPUB content documents [epub-33] includes various authoring restrictions to optimize the cross-compatibility of content (e.g., prohibiting CSS for setting language and direction [epub-33]). Unless stated otherwise in this specification, reading systems MAY support these restricted features.
Reading systems MUST process XHTML content documents [epub-33].
Unless explicitly defined in this section as overridden, reading systems MUST process XHTML content documents using semantics defined by the [html] specification and honor any applicable user agent conformance constraints expressed therein.
Reading systems SHOULD recognize embedded ARIA markup and support exposure of any given ARIA roles, states and properties to platform accessibility APIs [wai-aria].
In addition to the requirements in 9. Processing
structural semantics, a reading system MUST ignore
semantics expressed on the [html] head
element or its descendants.
Reading system support for the attribute processing model [rdfa-core] is OPTIONAL.
Reading system support for the attribute processing model is OPTIONAL, as is the conversion to JSON [html].
Use of the switch
element is deprecated [epub-33]. Refer to its definition in [epubcontentdocs-301] for
implementation information.
Use of the trigger
element is deprecated [epub-33].
Refer to its definition in [epubcontentdocs-301] for implementation information.
Reading systems MAY support custom attributes provided the attributes do not modify the requirements of this specification.
To support MathML [mathml3] embedded in XHTML content documents, a reading system:
-
MUST be an input-compliant processor for Presentation MathML, as defined in the [mathml3] specification.
-
MUST, if it has a viewport, support visual rendering of Presentation MathML.
-
MAY support rendering of Content MathML found in
annotation-xml
elements [mathml3].
Reading systems may choose to use third-party libraries such as MathJax to provide MathML rendering.
Reading systems MUST process SVG embedded in XHTML content documents as defined in 5.2 SVG content documents.
For the purposes of styling SVG embedded in XHTML content documents by reference, reading systems MUST NOT apply CSS style rules of the containing document to the referenced SVG document.
For the purposes of styling SVG embedded in XHTML content documents by inclusion, reading systems MUST apply applicable CSS rules of the containing document to the included SVG elements.
SVG included by reference is processed as a separate document, and can
include its own CSS style rules just like an SVG content
document would. Note that this is consistent with situations where an
[html] object
element references an external [html] element.
Reading system support for the submission of [html] forms is OPTIONAL. A reading system might, for example, prevent form submissions by limiting access to networking.
Reading systems MUST process SVG content documents [epub-33].
To process SVG content documents and SVG embedded in XHTML content documents, a reading system:
-
MUST process SVG content documents using semantics defined by the [svg] specification, and honor any applicable user agent conformance constraints expressed therein, unless explicitly defined by this specification as overridden.
-
MUST meet the conformance criteria defined in 5.4 Scripting.
-
MUST, if it has a viewport, support the visual rendering of SVG using CSS as defined in Styling [svg] and it SHOULD support all properties defined in the Property Index [svg]. In the case of embedded SVG, a reading system MUST also conform to the constraints defined in 5.1.2.2.1 Embedded SVG and CSS.
If a reading system has a viewport, it MUST support the visual rendering of XHTML content documents via CSS [epub-33].
To support CSS, a reading system:
-
MUST support the official definition of CSS as described in the [csssnapshot].
-
SHOULD support all applicable modules in [csssnapshot] that have reached at least Candidate Recommendation status [w3cprocess] (and are widely implemented).
-
MUST support [truetype], [opentype], [woff] and [woff2] font resources referenced from
@font-face
rules [css-fonts-4]. -
MUST support all prefixed properties defined in CSS Style Sheets — Prefixed properties [epub-33].
-
SHOULD apply EPUB creator style sheets as written to EPUB content documents.
-
SHOULD NOT override the EPUB creator's style sheets, but SHOULD do so in a way that preserves the Cascade when necessary: through a user agent style sheet, the
getOverrideStyle
method [dom-level-2-style], or [html]style
attributes. -
It MAY override parts of the EPUB creator's style sheet because of user interaction.
In addition to supporting CSS properties as defined above, a reading system's user agent style sheet SHOULD support the [html] suggested default rendering.
Reading system developers should implement CSS support at the level of major browsers and publicly document their user agent style sheets and how they interact with EPUB creator's style sheets.
Reading systems SHOULD support scripting [epub-33].
Reading system support for scripting depends on its usage context:
-
Reading systems SHOULD support container-constrained scripting [epub-33] in reflowable EPUB content documents.
-
Reading systems SHOULD support spine-level scripting [epub-33] in fixed-layout documents [epub-33].
-
Reading systems SHOULD support spine-level scripting in reflowable EPUB content documents that use the "
scrolled-doc
" or "scrolled-continuous
" [epub-33] presentation modes defined by therendition:flow
property. Similarly, if it supports spine-level scripting in reflowable EPUB content documents, it MUST implement the "scrolled-doc
" presentation mode and SHOULD implement the "scrolled-continuous
" presentation mode. -
Reading systems MAY support scripting in other contexts, but this specification does not address such scripting. As a result, the use of scripting in these contexts may not be consistent across reading systems.
If a reading system supports scripting:
-
It MAY render scripted content documents as an interactive, scripted user agent according to [html].
-
It MUST assign a unique origin [url], shared by all spine-level scripts of the EPUB publication. That origin [url] MUST be unique for each user-specific instance of an EPUB publication in a reading system.
-
It MUST NOT allow a container-constrained script to modify the [dom] of the host EPUB content document or other contents in the EPUB publication and MUST NOT allow it to manipulate the size of its containing rectangle. (Note: Even if a script is not container-constrained, the reading system MAY impose restrictions on modifications (see also the dom-manipulation feature).)
-
It MAY place additional limitations on the capabilities provided to scripts during execution (e.g., limiting networking).
-
It MUST extend the navigator object [html] with the
epubReadingSystem
interface defined in 15. epubReadingSystem object. It also MUST support thedom-manipulation
andlayout-change
features defined in 15.4.1.2 Features in container-constrained scripting contexts.
Note that the definition of epubReadingSystem
is currently marked as "at
risk". If, in the final version of this document, the object becomes non-normative, then each
"MUST" statement in the last bullet item would become a "MAY".
If a reading system does not support scripting, it MUST process fallbacks for scripted content as defined in Fallbacks for scripted content documents [epub-33].
Scripts may save persistent data through cookies and web storage [html], but reading systems MAY block such attempts. Reading systems that allow users to store data MUST ensure they do not make that data available to other unrelated documents (e.g., ones that could be spoofed). In particular, checking for a matching document identifier (or similar metadata) is not a valid method to control access to persistent data.
Reading systems that allow local storage [html] SHOULD provide methods for users to inspect or delete that data.
Reading systems SHOULD follow the DOM Event model as per [html] and pass UI events to the scripting environment before performing any default action associated with these events.
Reading system developers must ensure that scripts cannot disable critical functionality (such as navigation) to constrain the extent to which a potentially malicious script could impact their reading systems. As a result, although the scripting environment should be able to cancel the default action of any event, some events either might not be passed through or might not be cancelable.
This section is non-normative.
Reading system developers who also support scripting must be aware of the security issues that arise when reading systems execute scripted content. As the underlying scripting model employed by reading systems and browsers is the same, developers must take into consideration the same kinds of issues encountered in web contexts.
Each reading system must establish if it can trust the scripts in a particular document. Reading systems should treat all scripts as untrusted (and potentially malicious), and developers should examine all vectors of attack and protect against them. In particular, developers should consider the following:
-
an attack against the runtime environment (e.g., stealing files from a user's hard drive);
-
an attack against the reading system itself (e.g., stealing a list of a user's books or causing unexpected behavior);
-
an attack of one EPUB content document against another (e.g., stealing data that originated in a different document);
-
an attack of an unencrypted script against an encrypted portion of a document (e.g., an injected malicious script extracting protected content);
-
an attack against the local network (e.g., stealing data from a server behind a firewall).
To limit the possible damage of untrusted scripts, this specification recommends that reading systems establish a unique origin [url] allocated to each EPUB publication (see 3.1.1 URL of the root directory). Assigning a unique origin ensures that spine-level scripts [epub-33] are isolated from other EPUB publications, and limits access to cookies [html], web storage [html], etc.
Examples of web APIs that are tied to the concept of "origin" include web storage [html] and IndexedDB [indexeddb], which EPUB content documents can interact with via scripting. Reading systems that allow users to add/remove publications from a managed library (their "bookshelf") may maintain the publication's unique origin when the publication is removed and subsequently re-imported into the content library. Conversely, reading systems may create a new unique origin for every newly added publication.
This specification also recommends that container-constrained scripts [epub-33] not be allowed to modify the DOM of the host EPUB content document and/or manipulate the containing rectangle (see 5.4 Scripting).
Note that compliance with these recommendations does not guarantee protection from the possible attacks listed above; developers must examine each potential vulnerability within the context of their reading system.
Reading systems MUST process EPUB navigation documents [epub-33].
To process the EPUB navigation document, a reading system:
-
MUST provide users access to the links and headings in the
toc nav
element [epub-33]. -
SHOULD provide a method to navigate to the listed page breaks when a
page-list nav
element [epub-33] is present. -
MAY provide users access to the links in the
landmarks nav
element [epub-33] and MAY use the links to enable functionality in the application. -
MAY provide access to
nav
elements that do not specify anepub:type
attribute or that declare an unknown value [epub-33]. -
MUST relocate the current reading position to the destination identified by an activated link when the link is to a publication resource.
-
MUST NOT show list item numbering on
nav
elements when presenting them outside of the spine, regardless of support for CSS, as the default display style of list items is equivalent to thelist-style: none
property [csssnapshot].).
Reading systems MUST honor the above requirements irrespective of whether the EPUB navigation document is part of the spine.
Reading systems MUST support the rendering of fixed-layout documents [epub-33].
The default value reflowable
MUST be assumed by EPUB reading systems as the global value if no
meta
element carrying the rendition:layout
property occurs in the package document metadata
[epub-33].
When the
rendition:layout
property is set to pre-paginated
, reading
systems MUST NOT include space between the adjacent content slots
when rendering synthetic spreads.
The rendition:layout
property values have the following processing
requirements:
- reflowable
-
Reading systems MAY apply dynamic pagination when rendering.
- pre-paginated
-
Reading systems MUST produce exactly one page per spine
itemref
[epub-33] when rendering.
When a spine itemref
element's properties
attribute contains an override of the global rendition:layout property [epub-33],
reading systems MUST follow the requirements for the override's
global value when displaying that spine item (e.g., a spine item that specifies
layout-prepaginated
is rendered following the requirements of the global
pre-paginated
value).
The
default value auto
MUST be assumed by EPUB reading systems as the global value if no
meta
element carrying the rendition:orientation
property occurs in the package document metadata [epub-33].
The rendition:orientation
property values have the following processing
requirements:
- auto
-
The reading system determines the orientation in which to render the content.
- landscape
-
Reading systems that support multiple orientations SHOULD render the content in landscape orientation.
- portrait
-
Reading systems that support multiple orientations SHOULD render the content in portrait orientation.
The means by which they convey the intent is implementation specific.
The default
value auto
MUST be assumed by EPUB reading systems as the global value if no
meta
element carrying the rendition:spread
property occurs in the package document metadata
[epub-33].
The rendition:spread
property values have the following processing
requirements:
- none
-
Reading systems MUST NOT incorporate spine items in a synthetic spread. Reading systems SHOULD create a single viewport positioned at the center of the screen.
- landscape
-
Reading systems SHOULD render a synthetic spread for spine items only when the device is in landscape orientation.
- portrait (deprecated)
-
Reading systems SHOULD treat the value "
portrait
" as a synonym of "both
" and create spreads regardless of orientation. - both
-
Reading systems SHOULD render a synthetic spread regardless of device orientation.
- auto
-
Reading systems MAY use synthetic spreads in specific or all device orientations as part of a content display area utilization optimization process.
The rendition:page-spread-left
property [epub-33] indicates that the given spine item SHOULD be rendered in the left-hand slot in the spread, and rendition:page-spread-right
property [epub-33] that it SHOULD be rendered in the
right-hand slot.
Reading systems that support the spread-none
property
MUST recognize the rendition:page-spread-center
property as an alias for
it, otherwise they MUST ignore the
rendition:page-spread-center
property.
The rendition:page-spread-left
and rendition:page-spread-right
properties apply to both pre-paginated and reflowable content, and they only apply when the
reading system is creating synthetic spreads.
The rendition:page-spread-*
properties MUST take precedence over whatever value of the page-break-before
property [csssnapshot] has been set for an XHTML content
document.
When a reflowable spine item follows a pre-paginated one, the reflowable one SHOULD start on the
next page — as defined by the page-progression-direction
attribute [epub-33] —
when it lacks a rendition:page-spread-*
property value.
If the reflowable spine item has a
rendition:page-spread-*
specification, it MUST be
honored (e.g., by inserting a blank page).
Similarly, when a pre-paginated spine item follows a reflowable one, the pre-paginated one
SHOULD start on the next page (as defined by the
page-progression-direction
attribute) when it lacks a
rendition:page-spread-*
property value. If the pre-paginated spine item has
a rendition:page-spread-*
specification, it MUST be
honored (e.g., by inserting a blank page).
When a reading system
encounters two spine items that represent a true spread (i.e., two adjacent spine items with
the rendition:page-spread-left
and rendition:page-spread-right
properties), it SHOULD create the spread with no space between the
adjacent pages.
- XHTML
-
Reading systems MUST use the width and height expressions as defined in Expressing in HTML [epub-33] to render XHTML content documents.
Reading systems MUST clip XHTML content to the initial containing block (ICB) dimensions declared in the
viewport
meta
tag — content positioned outside of the initial containing block will not be visible. When the ICB aspect ratio does not match the aspect ratio of the reading system content display area, reading systems MAY position the ICB inside the area to accommodate the user interface; in other words, added letter-boxing space MAY appear on either side (or both) of the content. - SVG
-
Reading systems MUST use the dimensions as defined in Expressing the ICB in SVG [epub-33] to render SVG content documents.
When rendering fixed-layout documents, the default intent is that the content display area SHOULD occupy as much of the available viewport area as possible. Reading systems SHOULD NOT inject additional content such as border, margins, headers, or footers into the viewport.
This specification does not define how the initial containing block [css2] is placed within the reading system content display area.
The exposure of reading system control widgets to the user is implementation-specific and not included in the above behavioral expectations.
Reading systems SHOULD process the reflowable layout properties [epub-33].
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 global value is auto
if no meta
element carrying this
property occurs in the metadata
section [epub-33]. Reading systems MAY support only this default value.
The rendition:flow
property values have the following processing requirements:
- paginated
-
The reading system SHOULD dynamically paginate all overflow content.
- scrolled-continuous
-
The reading system SHOULD render all EPUB content documents such that overflow content is scrollable, and SHOULD present the EPUB publication as one continuous scroll from spine item to spine item (except where locally overridden [epub-33]).
- scrolled-doc
-
The reading system SHOULD render all EPUB content documents such that users can scroll overflow content, and SHOULD present each spine item as a separate scrollable document.
- auto
-
The reading system MAY render overflow content using its default method or a user preference, whichever is applicable.
For the rendition:flow-scrolled-continuous
property, the scroll direction MUST be defined relative to the block flow direction of the root
element of the XHTML content document referenced by the itemref
element [epub-33]. The scroll direction MUST be vertical if the
block flow direction is downward (top-to-bottom). It MUST be horizontal
if the block flow direction of the root element is rightward (left-to-right) or leftward
(right-to-left).
Reading systems MUST ignore the rendition:flow
property and
its overrides when processing pre-paginated spine items [epub-33].
When the rendition:align-x-center
property is set on a
spine item, reading systems SHOULD render the content centered
horizontally within the viewport or spread, as applicable.
This property does not affect the rendering of the spine item, only the placement of the
resulting content box.
For reflowable content, reading systems that support this property MUST center each virtual page.
This specification does not define a default rendering behavior when reading systems do not support this property or EPUB creators do not specify it. Reading systems MAY render spine items by their own design.
Reading systems MAY support custom properties provided they do not introduce expressions that conflict behaviorally with the properties defined in the Package rendering vocabulary [epub-33].
Reading systems with the capability to render prerecorded audio SHOULD support media overlays [epub-33].
If a reading system does not support media overlays, it MUST ignore both:
- the
media-overlay
attribute on manifestitem
elements [epub-33]; and item
elements where themedia-type
attribute value equalsapplication/smil+xml
.
When a reading system loads a package document, it MUST refer to the manifest
item
elements' [epub-33] media-overlay
attributes to discover the corresponding
media overlays for EPUB content documents.
Reading systems MUST support playback for XHTML content documents, and MAY support SVG content documents.
Playback MUST start at the media overlay element which corresponds to the desired EPUB content document starting point. Note that the start of an EPUB content document MAY correspond to an element at the start or in the middle of a media overlay. When the media overlay document finishes playing, the reading system SHOULD load the next EPUB content document (as specified in the package document spine) and also load its corresponding media overlay document, provided that one is given.
Reading systems MUST render immediate children of the body
element
[epub-33] in a sequence. A seq
element's
[epub-33] children MUST be rendered in sequence, and
playback completes when the last child finishes playing. Reading system MUST render a par
element's [epub-33] children in parallel (with each
starting at the same time), and playback completes when all the children finish playing. Reading
system playback of the media overlay document completes when the body
element's
last child finishes playing.
When presented with a media overlay audio
element, reading systems MUST play the
audio resource referenced by the src
attribute, starting at the clip offset time
given by the clipBegin
attribute and ending at the clip offset time given by the clipEnd
attribute [epub-33].
In addition:
-
If the EPUB creator has not specified a
clipBegin
attribute, reading systems MUST assume the value "0
". -
If the EPUB creator has not specified a
clipEnd
attribute, reading systems MUST assume the value to be the full duration of the physical media. -
If the value of
clipEnd
exceeds the full duration of the physical media, reading systems MUST assume its value to be the full duration of the physical media.
User-controllable audio playback options SHOULD include timescale modification, in which the user can alter the playback rate without distorting the pitch. The suggested range is half-speed to double-speed.
When presented with a media overlay text
element [epub-33] whose src
attribute contains a URL-fragment string referencing a specific part of an EPUB content document, reading
systems SHOULD ensure the referenced portion is visible in the viewport. In addition to [html] element ID references and SVG Fragment
Identifiers [svg], reading systems MAY support other fragment
identifier schemes.
During
media overlays playback, reading systems with a viewport SHOULD add the
class names given by the metadata properties active-class
and playback-active-class
[epub-33] to the appropriate elements,
when specified, in the EPUB content document. Conversely, the class names SHOULD be removed when the playback state changes, as described in Associating style information
[epub-33].
The active-class
and playback-active-class
metadata properties are OPTIONAL, and if omitted, reading system behavior is
implementation-specific.
Reading system behavior when a fragment identifier [epub-33] does not reference an element is also implementation-specific.
Because the media overlay is closely linked to the EPUB content document, it is very easy for reading systems to locate a position in the EPUB content document based on the current position in the media overlay playback. If the user pauses synchronized playback and navigates to a different part of the EPUB publication, synchronized playback MUST resume at that point. For example, if a specific page number in the EPUB content document is the desired location, then this same point is located in the media overlay and playback started there.
This same approach allows for synchronizing the media overlay playback with user selection of a navigation point in the EPUB navigation document. The reading system loads the media overlay for that file and finds the correct point for starting playback based on the ID of the navigation point target.
EPUB creators may associate a media overlay document directly with an EPUB navigation documentt in order to provide synchronized playback of its contents, regardless of whether the XHTML content document in which it resides is included in the spine. See EPUB navigation document [epub-33] for more information.
EPUB creators may associate media overlay document elements with EPUB content document structures such as tables. Reading systems should ensure that media overlay playback remains synchronized with user navigation of table rows and cells. The reading system might also play the corresponding table header preceding the contents of the cell.
An EPUB content document with which a media overlay is associated MAY itself contain embedded video and audio media. The media overlay elements MAY point to these elements. Unlike text and images, video and audio media have an intrinsic duration. Consequently, when a reading system renders the synchronization described by a media overlay, it MUST override the default playback behavior of audio and video media embedded within the associated EPUB content document.
Note that the rules below apply only to referenced [html] video
or
audio
elements within the associated EPUB content document. That is to
say, the rules apply to only those elements pointed to by text
elements [epub-33] within the media overlay (i.e., via the src
attribute).
These rules do not apply to embedded media not referenced by media overlay elements.
-
Reading systems MUST deactivate the public playback interface for all referenced audio and video media embedded within an EPUB content document (typically: play/pause control, time slider, volume level, etc.). This behavior avoids interference between the scheduled playback sequence defined by the media overlay, and the arbitrary playback behavior due to user interaction or script execution. As a result, when the reading system is in playback mode, it SHOULD:
-
Reading systems MUST initialize all referenced audio and video media embedded within an EPUB content document to their "stopped" state, and ready them to play from the zero-position within their content stream (possibly displaying the image specified using the [html]
poster
attribute. This requirement overrides the default behavior defined by the [html]autoplay
attribute. -
When an EPUB content document element becomes active, the CSS Style Sheet visual highlighting rules apply regardless of the content type referred to by that element's
src
attribute (e.g., the CSS class name defined by theactive-class
metadata property [epub-33] SHOULD be applied to visible video and audio player controls within the host EPUB content document). -
In addition to the default behavior of media overlay activation for textual fragments and images, audio and video playback MUST be started and stopped according to the duration implied by the authored media overlay synchronization (as per the standard [smil3] timing model). There are two possible scenarios:
-
When a media overlay
text
element has noaudio
[epub-33] sibling within itspar
[epub-33] parent container, the referenced EPUB content document audio or video media MUST play until it ends, at which point thetext
element's lifespan terminates. In this case, the implicit duration of thetext
element (and by inference, of the parentpar
container) is that of the referenced audio or video clip. -
When a media overlay
text
element has anaudio
sibling within itspar
parent container, reading systems MUST constrain the playback duration of the referenced EPUB content document audio or video media by the duration of theaudio
sibling. In this case, the actual duration of the parentpar
container is that of the child audio clip, regardless of the duration of the video or audio media pointed to by thetext
element. This behavior can result in embedded video or audio media ending playback prematurely (before reaching its full duration), or ending before the playback of the parallel media overlayaudio
is finished (in which case the last-played video frame SHOULD remain visible until the parentpar
container finally ends). This behavior is equivalent of the media overlayaudio
element implicitly carrying the behavior of the [smil3]endsync
attribute.Furthermore, reading systems SHOULD expose user controls for the volume levels of each independent audio track (i.e., from the
audio
element of the media overlay, and from the embedded audio or video media within the EPUB content document), so that users can adjust the audio output to match their requirements. Note that having overlapping audio tracks is typically an authoring-time concern: content producers usually add a layer of audio information over a video track for description purposes. Reading systems handling of simultaneous volume levels in any specific way is OPTIONAL.
-
-
When a
text
element becomes inactive in the media overlay, and when it points to embedded video or audio media, that referenced media MUST be reset to its initial "stopped" state, ready to be played from the zero-position within their content stream (possibly displaying the poster image specified using the [html] markup).
When a media overlay text
element
[epub-33] with no audio
[epub-33] sibling element references text
within the target EPUB content document,
reading systems capable of text-to-speech (TTS) playback SHOULD render
the referenced text using TTS.
Reading systems SHOULD use the speech-related information provided in the target EPUB content document to play the audio stream as part of the media overlay rendering.
See EPUB 3 Text-to-Speech Support [epub-tts-10] for more information about supporting TTS technologies in EPUB publications.
The media overlay text
element's lifespan corresponds to the rendering time of the
associated speech synthesis. The implicit duration of the text
element (and by
inference, of the parent par
element) is therefore determined by the execution of
the Text-to-Speech engine, and cannot be known at authoring time (factors like speech rate,
pauses and other prosody parameters influence the audio output). This also means that reading
systems should treat the duration
property values set in the package document as approximative when
making use of them.
Reading systems SHOULD use the semantic information provided by media
overlay elements' epub:type
attribute to
offer users the option of skipping content.
When skipping of content is enabled, reading systems MUST suppress
playback of any par
and seq
elements whose epub:type
attribute contains a semantic that matches a skippable structure.
Reading systems SHOULD allow escaping of nested structures. Reading
systems MUST determine the start of nested structures by the value of
the epub:type
attribute and SHOULD offer users the
option to skip playback of that structure and resume with whatever content comes after it.
Reading systems MAY support structural semantics [epub-33] in EPUB content documents.
When processing the epub:type
attribute, a reading system:
-
MAY associate behaviors with none, some or all of the terms defined in the default vocabulary [epub-33].
-
MAY associate behaviors with terms from other vocabularies.
-
MUST ignore terms that it does not recognize.
-
MUST ignore structural semantics that conflict with the carrying element.
When the Reading system behavior associated with a given
epub:type
value conflicts with an element's native behavior, the behavior associated
with the element MUST be given precedence.
Reading systems MUST support vocabulary association mechanisms [epub-33].
- Reserved Prefixes
-
Reading systems MUST resolve all reserved prefixes [epub-33] used in package documents using their predefined URLs unless the EPUB creator declares a local prefix. Reading systems MUST use the URLs defined for locally overridden prefixes (using the
prefix
attribute) when encountered.As changes to the reserved prefixes and updates to reading systems are not always going happen in synchrony, reading systems MUST NOT fail when encountering unrecognized prefixes (i.e., not reserved and not declared using the
prefix
attribute). - The
prefix
attribute -
If the
prefix
attribute includes a declaration for a predefined prefix, reading systems MUST use the URL mapping defined in theprefix
attribute, regardless of whether of it maps to the same URL as the predefined prefix. - Expanding
property
Data Types -
Reading systems MUST expand
property
values [epub-33] as follows:-
If the property consists only of a reference, concatenate the prefix URL associated with the default vocabulary [epub-33] to the reference.
-
If the property consists of a prefix and reference, concatenate the URL defined for the prefix to the reference. If the EPUB creator has not defined a matching prefix, and it is not a reserved prefix [epub-33], the property is invalid and reading systems MUST ignore it.
-
If the property consists only of a prefix (i.e., there is no reference after the colon), the property is invalid and reading systems MUST ignore it.
The result MUST be a valid URL string [url]. If the process results in an invalid URL, reading systems MUST ignore the property.
Reading systems do not have to parse the resulting URL [url] or attempt to dereference the resource.
-
Reading systems MUST attempt to process an EPUB publication whose package document
version
attribute
[epub-33] is less than "3.0
".
EPUB publications with older version numbers will not always render exactly as intended unless processed according to their respective specifications. Reading systems SHOULD support such EPUB publications as defined by those specifications.
Reading systems SHOULD attempt to process an EPUB
publication whose package document
version
attribute
[epub-33] is greater than "3.0
".
This section is non-normative.
Although the primary focus of this specification is on how to process and render EPUB publications it does not mandate specific user interfaces that all reading systems must offer. This does not mean that there are not common accessibility issues that all reading systems developers should be aware of, or seek to avoid in their applications.
The W3C's User Agent Accessibility Guidelines [uaag20] provides many useful practices developers should apply to improve their reading systems as many browser accessibility issues have parallels in EPUB-specific user agents.
The following list outlines some additional EPUB-specific areas where a lack of accessibility impacts the reading experience for users:
- Bookshelf — Ensure that the process for accessing and opening the user's content is accessible. For example, do not rely on a visual-only display like cover images. Exposing text representations of the title(s) and author(s), including the language they are expressed in, allows assistive technologies to properly announce the content.
- User Interface Controls — Ensure that all controls (e.g., search boxes, annotation controls, and buttons to load features such as the table of contents) are exposed to assistive technologies and that their actions do not rely on specific modalities (e.g., they only operate through touch or a mouse).
- Search — Search access to the full text content of all EPUB content documents is necessary to ensure users can locate information easily.
- Display Control — Provide methods for users to tailor the styling of the content to their preferences (e.g., to change and increase fonts, increase line and word spacing, and apply alternate contrasts).
- Zoom — Allow users to zoom the content to better size it to their needs, especially for fixed-layout documents.
- Reading Control — Ensure that the ability to read from page-to-page and document-to-document does not depend on physical interaction (i.e., users of assistive technologies can read the content without getting trapped at the end of pages or documents).
- API Integration — Ensure that the accessibility tree, including support for roles, states and properties [wai-aria-11], is exposed to the underlying operating system's accessibility API so that users can fully interact with the content when using assistive technologies.
- Document Object Model (DOM) — Provide access to the [dom] of EPUB content documents so that users can investigate the semantics and structure expressed in the source.
- Table of Contents — Ensure that users can access the link text, including text alternatives for visual content. Activating the table of contents links should be possible using different inputs.
The DAISY Consortium maintains an accessibility test suite to aid in evaluating these issues and more.
This section is non-normative.
The particularity of an EPUB publication is its structure. The EPUB format provides a means of representing, packaging, and encoding structured and semantically enhanced web content — including HTML, CSS, SVG, and other resources — for distribution in a single-file container.
For reading systems, this means that the security and privacy issues are primarily based on the features of those formats, and closely mirror the threats presented by web content generally.
Reading system developers also have a dual responsibility of both ensuring the security and privacy of their applications and helping limit the threats to users from the content that renders within them. The rest of this section explores the risk model of EPUB 3 with the aim of helping developers recognize and mitigate these risks.
For the risks associated with the authoring of EPUB publications, refer to the security and privacy section of [epub-33].
The greatest threats to users come from the content they read [epub-33], and the first line of defense against these attacks is the reading systems they use. Users expect that reading systems act as safeguards against malicious content and are often unaware that EPUB publications are susceptible to the same security risks as web sites.
But although reading systems are relied on to provide security and privacy, they can also pose unintended threats to users depending on how information is handled. Tracking user information to optimize experiences is a common need, for example, but done without user permission and reading systems can run afoul of legal privacy requirements.
This section outlines some of the key threats that reading system developers must take into consideration, with further details and recommendations in the following sections.
- Scripting
-
Malicious scripts present several attack vectors against reading systems. If local storage is not secure, for example, they can attempt to compromise the user's data. Provided with network access, they may attempt unauthorized collection of user data.
More detailed discussion of these issues and how to mitigate them is provided in 5.4.3 Security considerations.
- Malicious content
-
EPUB publications may contain resources designed to exploit security flaws in reading systems or the operating systems they run on.
- Remote resources
-
Remote resources present the same risks as any EPUB publication loaded from an untrusted source. Even if the publisher of the EPUB publication is trusted, remote resources may be compromised.
Calls to remote resources can also be used to track information about users (e.g., through server logs). Reading systems should limit the information they expose through HTTP requests to only what is essential to obtain the resource.
The origin of an EPUB is both unknown to the EPUB creator and specific to each reading system implementation. Consequently, if the EPUB creator hosts remote resources on a web server they control, the server effectively cannot use security features that require specifying allowable origins, such as headers for CORS,
Content-Security-Policy
, orX-Frame-Options
. - External links
-
Like remote resources, external links may be used to trick unwitting users into opening malicious resources on the web designed to exploit the reading system or operating system.
Likewise, reading systems should also avoid exposing potentially identifying information about users through the traversal of links (e.g., not using tracking identifiers or exposing unnecessary information about the user's environment).
- User-generated content
-
User-generated content within a reading experience, for example through text areas or other interactive components, could pose a threat to reading system security or user privacy if the content is not properly secured. More details on scripting security are provided in 5.4.3 Security considerations.
- Collection of user data
-
Collecting information about the user and their reading habits without obtaining their permission can violate privacy laws, even if the information is only intended for internal use.
Attempting to profile users based on their reading habits or through metadata in their publication (e.g., accessibility preferences) can expose users to unintended harms.
Additionally, the security considerations that apply to [xml] and [zip] files also apply to the package document and the Open Container Format, respectively. See the
"Security Consideration" sections of the Media Type registrations for the application/oebps-package+xml
and the application/epub+zip
formats for further details.
The strongest measure that reading system developers can take for privacy is to specify the data they intend to collect and use about the user and/or their reading behavior and seek the consent of users to obtain it. They should also allow personalization and control over this information.
If a reading system allows users to store persistent data, especially personally identifiable information, it must treat that data as sensitive.
It is understood that the collection of some user data may be required for the sale, delivery, and operation of an EPUB publication, particularly on platforms where the sale of an EPUB publication and the method of reading it are connected. In these cases, it is recommended that the reading system or retailer be clear about the data being collected, how it is used, and allow for user opt-outs where possible. Anonymization of data is strongly recommended for the privacy and the security of the user and reading system.
It is also understood that user data may be required or helpful for some reading system affordances. In these cases, anonymization is strongly recommended. It is also recommended that reading systems inform users of what data is needed, what it is to be used for, and to provide methods to opt-out.
Content processors — defined as entities that handle the ingestion of EPUB content for distribution, display, or sale — should also be aware of the potential risks in ingestion. It is advised that content processors check content for malicious content on ingestion, in addition to the validation steps that usually occur. This could include running virus scans, validating external links and remote resources, and other precautions.
Reading systems act as the core rendering engines of EPUB publications and provide a scripting environment based on the [dom] specification. So, although this interface definition uses the [webidl] notation for implementation by reading systems, web browsers generally do not have to implement these objects.
This specification extends the Navigator
object [html] as follows.
WebIDL[Exposed=(Window)]
interface EpubReadingSystem
{
[LegacyUnforgeable] readonly attribute DOMString name
;
[LegacyUnforgeable] readonly attribute DOMString version
;
boolean hasFeature
(DOMString feature, optional DOMString version);
};
partial interface Navigator {
[LegacyUnforgeable, SameObject] readonly attribute EpubReadingSystem epubReadingSystem
;
};
This specification does not define an epubReadingSystem
property extension for
the WorkerNavigator
object [html].
Reading systems therefore do not have to expose the epubReadingSystem
object in
the scripting context of Workers, and EPUB creators cannot rely on its presence.
The Navigator.epubReadingSystem
object provides an interface through which a scripted content
document can query information about a user's reading system.
The object exposes properties of the reading system (its name and
version), and provides the hasFeature
method which
can be invoked to determine the features it supports.
Reading systems MUST expose the epubReadingSystem
object on
the navigator
object of all loaded scripted content documents, including any nested container-constrained
scripting contexts [epub-33]. Reading systems MUST ensure
that the epubReadingSystem
object is available no later than when the DOMContentLoaded
event is
triggered [html].
Reading systems implementations may create cloned instances of the
epubReadingSystem
object in scripted content documents for technical
feasibility reasons. In such cases, the reading system must ensure they consistently
maintain the object's state — as reflected by the values of its properties and methods —
across all copied instances.
The reading system MUST make the following properties available for retrieving information about it.
Name | Description |
---|---|
name
|
Returns a String value representing the name of the reading system (e.g.,
"iBooks ", "Kindle "). |
version
|
Returns a String value representing the version of the reading system
(e.g., "1.0 ", "2.1.1 "). |
This specification used to define a layoutStyle
property, but it is now deprecated [epub-33]. Refer to
its definition in [epubcontentdocs-301] for more
information.
The hasFeature
method returns a boolean
value indicating whether the reading system supports any version of the specified feature,
or undefined
if the reading system does not recognize the specified
feature.
The optional version
parameter allows EPUB creators to query custom features
that could change in incompatible ways over time. The return value indicates support only
for the specified version of the feature.
Features defined in this specification are
versionless. If a reading system supports a feature defined in this specification, it MUST ignore any supplied version
parameter and return
a true
value.
The
following table lists the set of features that reading systems that support the
epubReadingSystem
object MUST recognize. When the
features are queried from the hasFeature
method, reading systems MUST return a boolean value indicating their support.
Name | Description |
---|---|
dom-manipulation
|
Scripts may make structural changes to the document’s DOM (applies to spine-level scripting [epub-33] only). |
layout-changes
|
Scripts may modify attributes and CSS styles that affect content layout (applies to spine-level scripting [epub-33] only). |
touch-events
|
The device supports touch events, and the reading system passes touch events to the content. |
mouse-events
|
The device supports mouse events, and the reading system passes mouse events to the content. |
keyboard-events
|
The device supports keyboard events, and the reading system passes keyboard events to the content. |
spine-scripting
|
Indicates whether the reading system supports spine-level scripting [epub-33] (e.g., so a container-constrained script [epub-33] can determine whether any actions that depend on scripting support in a top-level content document have any chance of success before attempting them). |
Reading system developers MAY add additional features, but future versions of this specification could append to this list in ways that might conflict or be incompatible with any such custom additions.
This section is non-normative.
Note that this change log only identifies substantive Changes since EPUB 3.2 — those that affect the conformance of reading systems or are similarly noteworthy.
For a list of all issues addressed during the revision, refer to the Working Group's issue tracker.
- 31-Mar-2022: Moved custom attribute authoring requirements to the authoring specification. Added reading system handling of custom properties. See issue 2134.
- 17-Mar-2022: Added requirement to suppress playback of skippable elements in media overlays Documents. See issue 2066.
- 11-Feb-2022: Fix the contradictory support statements for media overlays. Support is recommended when rendering of prerecorded audio is supported, as in previous versions of EPUB 3. See issue 1991.
- 04-Feb-2022: Changed the non-normative security considerations for controlling network access, opening external links, and managing local storage to normative recommendations. See issue 1957.
- 04-Feb-2022: Expanded the section on security and privacy to include new sections on the threat model for reading systems and additional recommendations for ensuring security and privacy. See issue 1871, issue 1872, issue 1875 and issue 1876.
- 03-Feb-2022: Reduced the requirement to support deobfuscation to a recommendation. See issue 1873.
- 19-Jan-2022: Elevated default statements for the
rendition:spread
andrendition:orientation
properties to requirements, to align withrendition:layout
. See issue 1936. - 08-Dec-2021:
page-spread-center
is now an alias forspread-none
. See issue 1929. - 10-Nov-2021: Proper definition of the content URL and handling of relative URLs. See issue 1374 and issue 1888.
- 01-Nov-2021: Added a statement on the reading system behavior when item references are repeated in the spine. See issue 1686.
- 25-Oct-2021: Clarify that reading systems must render non-linear resources when they are hyperlinked to by a user. See issue 1864.
- 27-Aug-2021: Added accessibility bullet to cover the need for zooming, particularly for fixed-layout documents. See issue 1776.
- 27-Aug-2021: Remove the recommendation to support text search and selection in SVGs. Replacing with a more general bullet on search accessibility to avoid defining requirements on reading system UI. See issue 1774.
- 09-July-2021: Restored the custom attributes section due to known usage but without reference to the attribute registry. See issue 1602.
- 09-July-2021: Removed recommendation to use the first language tag to determine an unspecified page progression direction. See issue 1482.
- 18-June-2021: Moved requirements for supporting SSML, PLS lexicons and CSS 3 Speech to the EPUB 3 Text-to-Speech Support note. See issue 1690.
- 20-May-2021: Providing a shared and unique origin for scripts is a requirements for reading systems that support scripting. See issue 1659.
- 20-May-2021: Removed requirement for reading systems to be conformant xml:base processors. See pull request 1678.
- 12-May-2021: Added additional requirement that reading systems ignore property values that expand to invalid URL strings and property values with empty references. See issue 1673.
- 12-May-2021: Changed all references to URIs/IRIs to URLs and references to RFCs 3986 and 3987 to the URL standard. See issue 808.
- 06-May-2021: Recommend that reading systems support references to HTML target elements and SVG
fragment identifiers in
textref
attributes and thetext
element'ssrc
attribute. Support for other fragment identifier schemes is optional. See issue 1586. - 23-Apr-2021: Clarified that reading systems should attempt to process invalid file and path names. See issue 1629
- 16-Apr-2021: Removed the section on custom attributes. See Working Group Resolution.
- 15-Apr-2021: Remove the reference to "presentation logic". See issue 1516 and Working Group Resolution.
- 12-Apr-2021: The section 15. epubReadingSystem object has been marked as "at-risk". See Working Group resolution.
- 09-Apr-2021: Added a new section dedicated to accessibility and removed the outdated reference to the defunct appendix in the Accessibility specification. See issue 1608.
- 09-Apr-2021: Added section clarifying all the conformance requirements on establishing the primary language and base direction of publication resources. See pull request 1613.
- 01-Apr-2021: Added section clarifying how absolute URLs are created from relative in the package document. See pull request 1468.
- 30-Mar-2021: Restructured the document to remove the rendundant conformance sections and requirements that were only used as locators when this specification was combined with the authoring requirements. See pull request 1597 and pull request 1609.
- 23-Mar-2021: Added requirement to prevent top-level navigation to data URLs. See issue 1564.
- 23-Mar-2021: Changed "suppressing" of non-linear content to "skipping" when traversing the spine to clarify that the intention is not to remove all access to such content. See issue 1480.
- 10-Mar-2021: Changed restriction against using resources not listed in the package document to a recommendation not to use. See issue 810.
- 09-March-2021: the statement on unique identifiers has been set to non-normative, following the discussion and Working Group resolution. See issue 1310.
- 08-Mar-2021: Remove unnecessary requirement to assume default value for rendering metadata. See issue 1313.
- 05-Mar-2021: Added requirement for reading systems to collapse whitespace in DCMES and meta elements per the [infra] specification definition. See issue 1295.
- 26-Feb-2021: Clarified the trimming of leading and trailing whitespace is to be done in accordance
with the [infra] specification definition, and removed the exception that
meta
element properties may define their own whitespace handling rules. See issue 1295. - 19-Feb-2021: Updated the scripting security considerations so that the text recommends assigning a unique origin to each EPUB publication for security rather than domain isolation at the EPUB content document level. See issue 1156.
- 15-Feb-2021: Clarified the requirements for presenting nav elements in the navigation document. The toc nav is now the only required element, the page-list nav is recommended when present, and all others are optional. See issue 975.
- 10-Feb-2021: A very first draft for 14. Security and privacy has been added.
- 04-Feb-2021: Added explicit requirement that reading systems not use the language in
dc:language
elements as the language of resources. - 02-Feb-2021: Added base direction determination rules for the
dir
attribute accounting for the addition of the newauto
value. See issue 1491. - 02-Feb-2021: Noted that language information in the new
hreflang
attribute onlink
elements is not authoritative. See issue 1488. - 24-Dec-2020: The creation of a release identifier [epubpackages-32] is no longer defined. See issue 1440.
- 06-Nov-2020: Reading systems are now required to not resolve external identifiers in doctype declarations. See issue 1338.
- 05-Nov-2020: Generalized the restriction on custom attribute namespace URIs to exclude all of idpf.org and w3.org. See issue 1388.
- 30-Sept-2020: The structure of the EPUB core specifications has been simplified to ease understanding and access to information. This specification now consolidates the reading system requirements from the EPUB 3.2 specification together with the Packages, Content Documents, OCF and media overlays specifications. The EPUB 3.3 core specification now focuses only on authoring requirements.
This section is non-normative.
Specifications, like art, are human creations. No human has done more for EPUB than Garth Conboy, who has been there every step of the way, from the very first OEB 1.0 in 1999 to today's EPUB 3.3. None of this would have happened without Garth's vision, knowledge, and preternatural good nature. We dedicate EPUB 3.3 to his memory. We are forever in your debt, Garth.
The following members of the EPUB 3 Working Group contributed to the development of this specification:
- Will AWAD (Newgen Knowledgeworks)
- Sofia Bautista (Legible Media Inc.)
- Laura Brady (Legible Media Inc.)
- Leah Brochu (National Network for Equitable Library Service)
- Matthew C. Chan (House of Anansi Press)
- Yu-Wei Chang (Taiwan Digital Publishing Forum)
- Fred Chasen (Scribd)
- Juan Corona (Legible Media Inc.)
- Dave Cramer (W3C Invited Expert, chair)
- Romain Deltour (DAISY Consortium)
- Marisa DeMeglio (DAISY Consortium)
- Brady Duga (Google LLC)
- Reinaldo Ferraz (NIC.br - Brazilian Network Information Center)
- John Foliot (W3C Invited Expert)
- Teenya Franklin (Pearson plc)
- Hadrien Gardeur (EDRLab)
- Matt Garrish (DAISY Consortium)
- Jen Goulden (Crawford Technologies)
- Ivan Herman (W3C, staff contact)
- Tetsu Hoshino (Kodansha, Publishers, Ltd.)
- Norikazu Ishizu (Kadokawa Corporation)
- Norihito IYENAGA (Kodansha, Publishers, Ltd.)
- Rick Johnson (VitalSource Technologies)
- Ken Jones (Circular Software)
- Antonio Kamiya (Dentsu Group Inc.)
- Deborah Kaplan (W3C Invited Expert)
- Bill Kasdorf (Book Industry Study Group)
- George Kerscher (DAISY Consortium)
- Kazuhito Kidachi (Mitsue-Links Co., Ltd.)
- Masakazu Kitahara (Voyager Japan, Inc.)
- Toshiaki Koike (Voyager Japan, Inc.)
- Ryo Kuroda (ACCESS CO., LTD.)
- Charles LaPierre (Benetech)
- Dan Lazin (Google LLC)
- Laurent Le Meur (EDRLab)
- Victoria Lee (Apple, Inc.)
- Farrah Little (National Network for Equitable Library Service)
- Victor Lopes (Apple, Inc.)
- Karan Malhotra (Newgen Knowledgeworks)
- Makoto Murata (DAISY Consortium)
- Cristina Mussinelli (Fondazione LIA)
- Yoichiro Nagao (Kodansha, Publishers, Ltd.)
- Theresa O'Connor (Apple, Inc.)
- Yoshinori Ohmura (SHUEISHA Inc.)
- Rachel Osolen (National Network for Equitable Library Service)
- Gregorio Pellegrino (Fondazione LIA)
- Vijaya Gowri Perumal (Newgen Knowledgeworks)
- Wendy Reid (Rakuten Group, Inc., chair)
- John Roque (Apple, Inc.)
- Leonard Rosenthol (Adobe)
- Shinobu Sato (Kadokawa Corporation)
- Ben Schroeter (Pearson plc)
- Daihei Shiohama (MEDIA DO Co., Ltd.)
- Tzviya Siegman (Wiley)
- Avneesh Singh (DAISY Consortium)
- MOTOI SUZUKI (SHUEISHA Inc.)
- Yutaka Suzuki (Kadokawa Corporation)
- Kyrce Swenson (Pearson plc)
- Shinya Takami (Kadokawa Corporation, chair)
- Mateus Teixeira (W. W. Norton & Company)
- Yukio Tomikura (Kodansha, Publishers, Ltd.)
- Aimee Ubbink (Crawford Technologies)
- Daniel Weck (DAISY Consortium)
- Zheng Xu (Gardenia Corp)
- Fuqiao Xue (W3C)
- Evan Yamanishi (W. W. Norton & Company)
- Osamu Yoshiba (Kodansha, Publishers, Ltd.)
- Junichi Yoshii (Kodansha, Publishers, Ltd.)
- Naomi Yoshizawa (W3C)
- Laurence Zaysser (EDRLab)
- [bidi]
- Unicode Bidirectional Algorithm. Mark Davis; Aharon Lanin; Andrew Glass. Unicode Consortium. 27 August 2021. Unicode Standard Annex #9. URL: https://www.unicode.org/reports/tr9/tr9-44.html
- [css-fonts-4]
- CSS Fonts Module Level 4. John Daggett; Myles Maxfield; Chris Lilley. W3C. 21 December 2021. W3C Working Draft. URL: https://www.w3.org/TR/css-fonts-4/
- [csssnapshot]
- CSS Snapshot. URL: https://www.w3.org/TR/CSS/
- [dcterms]
- DCMI Metadata Terms. DCMI Usage Board. DCMI. 20 January 2020. DCMI Recommendation. URL: https://www.dublincore.org/specifications/dublin-core/dcmi-terms/
- [dom]
- DOM Standard. Anne van Kesteren. WHATWG. Living Standard. URL: https://dom.spec.whatwg.org/
- [dom-level-2-style]
- Document Object Model (DOM) Level 2 Style Specification. Chris Wilson; Philippe Le Hegaret. W3C. 3 November 2020. W3C Recommendation. URL: https://www.w3.org/TR/DOM-Level-2-Style/
- [epub-33]
- EPUB 3.3. Matt Garrish; Ivan Herman; Dave Cramer. W3C. 5 May 2022. W3C Candidate Recommendation. URL: https://www.w3.org/TR/epub-33/
- [epubcontentdocs-301]
- EPUB Content Documents 3.0.1. Markus Gylling; William McCoy; Elika J. Etimad; Matt Garrish. IDPF. 26 June 2014. URL: https://idpf.org/epub/301/spec/epub-contentdocs-20140626.html
- [html]
- HTML Standard. Anne van Kesteren; Domenic Denicola; Ian Hickson; Philip Jägenstedt; Simon Pieters. WHATWG. Living Standard. URL: https://html.spec.whatwg.org/multipage/
- [infra]
- Infra Standard. Anne van Kesteren; Domenic Denicola. WHATWG. Living Standard. URL: https://infra.spec.whatwg.org/
- [mathml3]
- Mathematical Markup Language (MathML) Version 3.0 2nd Edition. David Carlisle; Patrick D F Ion; Robert R Miner. W3C. 10 April 2014. W3C Recommendation. URL: https://www.w3.org/TR/MathML3/
- [opentype]
- OpenType specification. Microsoft. URL: https://www.microsoft.com/typography/otspec/default.htm
- [rdfa-core]
- RDFa Core 1.1 - Third Edition. Ben Adida; Mark Birbeck; Shane McCarron; Ivan Herman et al. W3C. 17 March 2015. W3C Recommendation. URL: https://www.w3.org/TR/rdfa-core/
- [rfc1951]
- DEFLATE Compressed Data Format Specification version 1.3. P. Deutsch. IETF. May 1996. Informational. URL: https://www.rfc-editor.org/rfc/rfc1951
- [rfc2046]
- Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types. N. Freed; N. Borenstein. IETF. November 1996. Draft Standard. URL: https://www.rfc-editor.org/rfc/rfc2046
- [RFC2119]
- Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. March 1997. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc2119
- [rfc2397]
- The "data" URL scheme. L. Masinter. IETF. August 1998. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc2397
- [RFC8174]
- Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words. B. Leiba. IETF. May 2017. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc8174
- [smil3]
- Synchronized Multimedia Integration Language (SMIL 3.0). Dick Bulterman. W3C. 1 December 2008. W3C Recommendation. URL: https://www.w3.org/TR/SMIL3/
- [svg]
- SVG. W3C. URL: https://www.w3.org/TR/SVG/
- [truetype]
- TrueType™ Reference Manual. Apple, Inc. URL: https://developer.apple.com/fonts/TrueType-Reference-Manual/
- [url]
- URL Standard. Anne van Kesteren. WHATWG. Living Standard. URL: https://url.spec.whatwg.org/
- [w3cprocess]
- W3C Process Document. URL: https://www.w3.org/Consortium/Process/
- [wai-aria]
- Accessible Rich Internet Applications (WAI-ARIA) 1.0. James Craig; Michael Cooper et al. W3C. 20 March 2014. W3C Recommendation. URL: https://www.w3.org/TR/wai-aria/
- [webidl]
- Web IDL Standard. Edgar Chen; Timothy Gu. WHATWG. Living Standard. URL: https://webidl.spec.whatwg.org/
- [woff]
- WOFF File Format 1.0. Jonathan Kew; Tal Leming; Erik van Blokland. W3C. 13 December 2012. W3C Recommendation. URL: https://www.w3.org/TR/WOFF/
- [woff2]
- WOFF File Format 2.0. Vladimir Levantovsky; Raph Levien. W3C. 10 March 2022. W3C Recommendation. URL: https://www.w3.org/TR/WOFF2/
- [xml]
- Extensible Markup Language (XML) 1.0 (Fifth Edition). Tim Bray; Jean Paoli; Michael Sperberg-McQueen; Eve Maler; François Yergeau et al. W3C. 26 November 2008. W3C Recommendation. URL: https://www.w3.org/TR/xml/
- [xml-names]
- Namespaces in XML 1.0 (Third Edition). Tim Bray; Dave Hollander; Andrew Layman; Richard Tobin; Henry Thompson et al. W3C. 8 December 2009. W3C Recommendation. URL: https://www.w3.org/TR/xml-names/
- [xmlenc-decrypt]
- Decryption Transform for XML Signature. Merlin Hughes; Takeshi Imamura; Hiroshi Maruyama. W3C. 10 December 2002. W3C Recommendation. URL: https://www.w3.org/TR/xmlenc-decrypt/
- [zip]
- .ZIP File Format Specification. 1 September 2012. Final. URL: https://www.pkware.com/documents/casestudies/APPNOTE.TXT
- [css2]
- Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification. Bert Bos; Tantek Çelik; Ian Hickson; Håkon Wium Lie. W3C. 7 June 2011. W3C Recommendation. URL: https://www.w3.org/TR/CSS21/
- [epub-tts-10]
- EPUB 3 Text-to-Speech Enhancements 1.0. Matt Garrish. W3C. 31 March 2022. W3C Working Group Note. URL: https://www.w3.org/TR/epub-tts-10/
- [epubpackages-32]
- EPUB Packages 3.2. Matt Garrish; Dave Cramer. EPUB 3 Community Group. 08 May 2019. URL: https://www.w3.org/publishing/epub32/epub-packages.html
- [h264]
- H.264 : Advanced video coding for generic audiovisual services. 2017-04-13. URL: https://www.itu.int/ITU-T/recommendations/rec.aspx?rec=13189
- [indexeddb]
- Indexed Database API. Nikunj Mehta; Jonas Sicking; Eliot Graff; Andrei Popescu; Jeremy Orlow; Joshua Bell. W3C. 8 January 2015. W3C Recommendation. URL: https://www.w3.org/TR/IndexedDB/
- [rfc6386]
- VP8 Data Format and Decoding Guide. J. Bankoski; J. Koleszar; L. Quillio; J. Salonen; P. Wilkins; Y. Xu. IETF. November 2011. Informational. URL: https://www.rfc-editor.org/rfc/rfc6386
- [uaag20]
- User Agent Accessibility Guidelines (UAAG) 2.0. James Allan; Greg Lowney; Kimberly Patch; Jeanne F Spellman. W3C. 15 December 2015. W3C Working Group Note. URL: https://www.w3.org/TR/UAAG20/
- [wai-aria-11]
- Accessible Rich Internet Applications (WAI-ARIA) 1.1. Joanmarie Diggs; Shane McCarron; Michael Cooper; Richard Schwerdtfeger; James Craig. W3C. 14 December 2017. W3C Recommendation. URL: https://www.w3.org/TR/wai-aria-1.1/
Referenced in: