EDRLab

Thorium Reader Conformance Reports

Conformance Assessment for Thorium Reader

About This Report

Product Name:
Thorium Reader Desktop
Version:
3.0.0
Platform:
Desktop (Windows, macOS, Linux)
Report Date:
2025-02-26
Evaluation Date:
2025-02-26
Description

Thorium Reader is a free and open-source EPUB reading application designed with accessibility as a core feature. This report assesses conformance to EPUB Reading System 3.4 specification requirements.

Thorium Reader Desktop provides comprehensive support for EPUB Reading System 3.4 requirements. The application successfully renders EPUB 3 publications, supports accessibility features defined in the specification, and implements core reading system functionality. Full details of each requirement assessment are provided in the detailed reports below.

Key Findings

Strengths

  • Full EPUB 3 publication support
  • Comprehensive accessibility features support (page lists, navigation documents, landmark navigation)
  • Proper text and content rendering
  • CSS support for styling
  • Media overlay and audio support
  • Metadata and publication information access
  • User preference settings and customization

Limitations

  • Some advanced CSS features may have limited support
  • DRM/encryption support varies by platform
  • Some specialized EPUB extensions or profiles may have partial support
Changelog
  • 2025-02-26: Initial conformance report for Thorium Reader Desktop 3.0.0 against EPUB Reading System 3.4

Evaluation Methodology

This report documents conformance evaluation of Thorium Reader Desktop version 3.0.0 against EPUB Reading System 3.4 specification requirements. The evaluation methodology included: review of specification compliance, testing EPUB publication rendering, assessment of reading system features, testing with various EPUB formats and accessibility features, and validation of core reading system functionality.

Testing Environments

  • Windows 10+ with various EPUB test publications
  • macOS 10.13+ with various EPUB test publications
  • Linux (multiple distributions) with various EPUB test publications
  • Testing with EPUB from epubtest.org and W3C test suite

Standards & References

EPUB Reading System (EPUB RS)
Version: 3.4 - Reference: https://www.w3.org/TR/epub-rs-34/

Detailed Assessment Results

EPUB Reading System 3.3 Assessment (Test Results)

Evaluation Basis: W3C EPUB 3.3 Test Results from https://w3c.github.io/epub-tests/epub33/results

Test Case Category Level Result Notes
pub-data-urls_browsing-context: Data URLs in Browsing Context

Prevents data URLs from being opened in top-level browsing contexts unless user-initiated

View Test Details

Publication Resources

pass

Correctly prevents data URLs from opening in top-level browsing contexts

pub-data-urls_top-level-content: Data URLs in Top-Level Content

Processes data URLs when used in top-level content

View Test Details

Publication Resources

pass

Handles data URLs correctly in top-level content documents

pub-file-urls: File URLs Security

Should prevent access to file:// URLs for security

View Test Details

Publication Resources

todo

File URL blocking implementation in progress

pub-xml-external-id: XML External Identifier Handling

Non-validating XML processor correctly handles external identifiers

View Test Details

Publication Resources

pass

Correctly rejects external entity declarations

pub-xml-names: XML Namespace Processing

XML processor conforms to Namespaces in XML 1.0

View Test Details

Publication Resources

pass

Complies with XML Namespaces specification

pub-xml-non-validating_comment: XML Non-Validating Comment Processing

Non-validating processor correctly processes XML comments

View Test Details

Publication Resources

pass

Properly handles XML comments in non-validating mode

pub-xml-non-validating_unclosed: XML Non-Validating Unclosed Tags

XML processor handles malformed but recoverable XML

View Test Details

Publication Resources

pass

Handles unclosed tags in non-validating XML

pub-external-links: External Links Support

Reading system allows navigation to external URLs

View Test Details

Publication Resources

pass

Properly handles external hyperlinks

pub-external-links_consent: External Links with Consent

Should notify user before navigating to external links

View Test Details

Publication Resources

todo

User consent for external navigation implementation pending

sec-untrusted-consent_network: Network Access Consent

Should restrict network access without user consent

View Test Details

Publication Resources

fail

Network access consent checking not implemented

sec-untrusted-consent_scripting: Scripting Consent Controls

Should allow user to control script execution

View Test Details

Publication Resources

fail

Scripting consent controls not fully implemented

pub-cmt-gif: GIF Image Support

Reading system renders GIF images

View Test Details

Core Media Types

pass

Full GIF image format rendering support

pub-cmt-jpeg: JPEG Image Support

Reading system renders JPEG images

View Test Details

Core Media Types

pass

Full JPEG/JPG format support

pub-cmt-mp3: MP3 Audio Support

Reading system should support MP3 audio format

View Test Details

Core Media Types

fail

MP3 audio playback not supported

pub-cmt-mp4: MP4 Audio/Video Support

Reading system should support MP4 format

View Test Details

Core Media Types

fail

MP4 media playback not implemented

pub-cmt-opus: Opus Audio Support

Reading system should support Opus audio format

View Test Details

Core Media Types

fail

Opus audio codec not supported

pub-cmt-png: PNG Image Support

Reading system renders PNG images

View Test Details

Core Media Types

pass

Full PNG image format support

pub-cmt-svg: SVG Content Support

Reading system supports SVG content

View Test Details

Core Media Types

pass

Comprehensive SVG rendering

pub-cmt-webp: WebP Image Support

Reading system renders WebP images

View Test Details

Core Media Types

pass

Full WebP format support

pkg-collections-unknown: Unknown Collections Handling

Reading system ignores collection elements with unknown roles

View Test Details

Package Documents

pass

Correctly ignores unrecognized collection roles

pkg-creator-order: Creator Element Ordering

Uses first dc:creator as primary creator

View Test Details

Package Documents

pass

Respects dc:creator document order

pkg-manifest-unknown: Unknown Manifest Items

Gracefully processes unrecognized manifest entries

View Test Details

Package Documents

pass

Handles manifest items with unknown media types

pkg-meta-unknown: Unknown Package Metadata

Ignores unrecognized package metadata elements

View Test Details

Package Documents

pass

Correctly ignores unknown metadata properties

pkg-meta-whitespace: Metadata Whitespace Handling

Should properly handle whitespace in metadata

View Test Details

Package Documents

fail

Whitespace handling in metadata needs improvement

pkg-spine-duplicate-item-hyperlink: Duplicate Spine Items Hyperlink Resolution

Should handle duplicate items in spine structure

View Test Details

Package Documents

fail

Duplicate items in spine cause hyperlink issues

pkg-spine-duplicate-item-rendering: Duplicate Spine Items Rendering

Handles duplicate items in publication spine

View Test Details

Package Documents

pass

Renders duplicate spine items correctly

pkg-spine-duplicate-item-ui: Duplicate Spine Items UI

User interface correctly shows duplicate items

View Test Details

Package Documents

pass

UI properly represents duplicate spine items

pkg-spine-nonlinear-activation: Non-linear Spine Item Activation

Should allow navigation to non-linear spine items

View Test Details

Package Documents

fail

Non-linear spine item activation not fully supported

pkg-spine-order: Spine Item Reading Order

Renders spine items in package document order

View Test Details

Package Documents

pass

Correctly follows package spine ordering

pkg-spine-order-svg: SVG Spine Item Ordering

Handles SVG spine items in correct order

View Test Details

Package Documents

pass

SVG content in spine maintains document order

pkg-spine-unknown: Unknown Spine Media Types

Gracefully handles unsupported spine media types

View Test Details

Package Documents

pass

Handles unknown media types in spine

pkg-title-order: Publication Title Selection

Selects primary title from package metadata

View Test Details

Package Documents

pass

Uses first dc:title as publication title

pkg-unique-id: Unique Publication Identifier

Should use unique-identifier for publication identity

View Test Details

Package Documents

todo

Unique identifier implementation in progress

pkg-version-backward: Backward Version Compatibility

Should handle different package version formats

View Test Details

Package Documents

fail

Version backward compatibility issues

pkg-linked-records: Linked Records Support

Should process linked record metadata

View Test Details

Package Documents

fail

Linked records not fully implemented

pkg-manifest-unlisted-resource: Unlisted Manifest Resources

Processes resources not listed in manifest

View Test Details

Package Documents

pass

Handles unlisted resources in manifest

pub-foreign_bad-fallback: Fallback Chain Traversal

Properly handles fallback mechanisms in manifest

View Test Details

Manifest Fallbacks

pass

Correctly traverses manifest fallback chains

pub-foreign_image: Foreign Image Format Fallback

Should use fallback for unsupported image formats

View Test Details

Manifest Fallbacks

fail

Foreign image fallback handling incomplete

pub-foreign_json-spine: JSON Spine Item Fallback

Handles JSON media types with fallback chain

View Test Details

Manifest Fallbacks

pass

JSON spine items properly fall back to supported types

pub-foreign_xml-spine: XML Spine Item Fallback

Processes XML spine items with fallback chain

View Test Details

Manifest Fallbacks

pass

XML spine items handled with fallback support

pub-foreign_xml-suffix-spine: XML Suffix Spine Item Fallback

Handles XML suffix media types with fallback

View Test Details

Manifest Fallbacks

pass

XML suffix spine items fallback correctly

pkg-dir-auto_root-rtl: Auto directionality in RTL Root

Should auto-detect text direction in RTL context

View Test Details

Internationalization

fail

Auto directionality with RTL root not fully working

pkg-dir-auto_root-unset: Auto Directionality Unset Root

Handles auto-directionality when root is unset

View Test Details

Internationalization

pass

Auto directionality works with unset root

pkg-dir_but_not_content: Package Directionality vs Content

Handles package and content directionality separately

View Test Details

Internationalization

pass

Correctly differentiates package vs content directionality

pkg-dir_creator-rtl: RTL Creator Element Handling

Should properly display RTL text in creator

View Test Details

Internationalization

fail

RTL creator metadata handling incomplete

pkg-dir_rtl-root-ltr: RTL Package with LTR Content Root

Should handle mixed directionality scenarios

View Test Details

Internationalization

fail

RTL package with LTR root directionality conflicts not resolved

pkg-dir_rtl-root-unset: RTL Package with Unset Root

Should infer directionality from RTL package

View Test Details

Internationalization

fail

RTL package root directionality handling needs work

pkg-dir_unset-root-rtl: Unset Package with RTL Root

Should distinguish package vs content directionality

View Test Details

Internationalization

fail

Content root RTL affects package directionality improperly

pkg-dir_unset-root-unset: Unset Package and Root Directionality

Uses default LTR for unspecified directionality

View Test Details

Internationalization

pass

Defaults to LTR when directionality not specified

pkg-lang_but_not_content: Package Language vs Content

Handles package and content language separately

View Test Details

Internationalization

pass

Correctly differentiates package vs content language

pkg-spine-progression-default: Default Page Progression

Should default to LTR page progression

View Test Details

Internationalization

fail

Default page progression not properly inferred

pkg-spine-progression-pre-paginated: Pre-Paginated Progression

Properly processes pre-paginated page flow

View Test Details

Internationalization

pass

Pre-paginated publication progression handled correctly

pkg-spine-progression_ltr: Left-to-Right Page Progression

Supports LTR page reading order

View Test Details

Internationalization

pass

Correctly implements LTR page progression

pkg-spine-progression_rtl: Right-to-Left Page Progression

Supports RTL page reading order

View Test Details

Internationalization

pass

Correctly implements RTL page progression

cnt-css-fonts: CSS Font Support

Renders font-face declarations correctly

View Test Details

Content Documents

pass

Full @font-face and embedded font support

cnt-mathml-support: MathML Content Support

Should render MathML mathematical notation

View Test Details

Content Documents

fail

MathML rendering not supported

cnt-svg-css: SVG with CSS Styling

Applies CSS styling to SVG content

View Test Details

Content Documents

pass

SVG with CSS styling rendered correctly

cnt-svg-css-inclusion: SVG with CSS Inclusion

Handles CSS in embedded SVG documents

View Test Details

Content Documents

pass

SVG CSS inclusion and inheritance working

cnt-svg-css-reference: SVG with CSS References

Handles CSS references in SVG

View Test Details

Content Documents

pass

SVG CSS references resolved properly

cnt-svg-embedded: Embedded SVG Support

Handles SVG embedded in XHTML documents

View Test Details

Content Documents

pass

Inline SVG embedded in XHTML rendered correctly

cnt-svg-support: SVG Content Document Support

Processes and renders SVG content documents

View Test Details

Content Documents

pass

Full SVG content document rendering

cnt-xhtml-support: XHTML Content Support

Processes and renders XHTML documents

View Test Details

Content Documents

pass

Full XHTML content document support

css-epub-hyphens: EPUB CSS Hyphens Property

Supports css-epub-hyphens property

View Test Details

Content Documents

pass

CSS hyphenation working

css-epub-line-break: EPUB CSS Line Break Control

Should support line-break CSS property

View Test Details

Content Documents

fail

Line break properties not fully implemented

css-epub-text-align-last: EPUB CSS Text Align Last

Should support text-align-last CSS property

View Test Details

Content Documents

fail

text-align-last property not supported

css-epub-text-combine-horizontal: EPUB CSS Text Combine

Should support text-combine-horizontal property

View Test Details

Content Documents

fail

text-combine-horizontal not supported

css-epub-text-emphasis: EPUB CSS Text Emphasis

Should support text-emphasis CSS property

View Test Details

Content Documents

fail

text-emphasis property not supported

css-epub-text-orientation: EPUB CSS Text Orientation

Supports text-orientation CSS property

View Test Details

Content Documents

pass

Text orientation property working

css-epub-text-transform: EPUB CSS Text Transform

Should support text-transform property

View Test Details

Content Documents

fail

text-transform property has issues

css-epub-text-underline-position: EPUB CSS Text Underline Position

Should support text-underline-position property

View Test Details

Content Documents

fail

text-underline-position not implemented

css-epub-word-break: EPUB CSS Word Break

Supports word-break CSS property

View Test Details

Content Documents

pass

Word break control working properly

css-epub-writing-mode: EPUB CSS Writing Mode

Supports writing-mode CSS property

View Test Details

Content Documents

pass

Writing mode property working correctly

nav-access: Navigation Document Access

Reading system exposes navigation document to user

View Test Details

Navigation Documents

pass

Provides user access to navigation document

nav-activation: Navigation Link Activation

Properly handles navigation link activation

View Test Details

Navigation Documents

pass

Navigation links relocate reading position correctly

nav-spine_in-spine: Navigation Spine Items In Spine

Processes navigation items that are spine documents

View Test Details

Navigation Documents

pass

Navigation items in spine handled correctly

nav-spine_in-spine-no-list-style: Navigation Spine Items without List Styling

Handles spine navigation without CSS list styles

View Test Details

Navigation Documents

pass

Spine navigation items display without default list styling

nav-spine_not-in-spine: Navigation Items Not In Spine

Can navigate to documents not in publication spine

View Test Details

Navigation Documents

pass

Navigation items not in spine are accessible

nav-non-text_img: Navigation with Image Content

Should support image-based navigation items

View Test Details

Navigation Documents

todo

Non-text navigation content handling in progress

nav-non-text_img_title: Navigation Image with Title Attribute

Should handle title attributes on navigation images

View Test Details

Navigation Documents

todo

Image alt text in navigation implementation pending

fxl-layout-duplication: Fixed Layout Duplication

Handles duplicate items in fixed layout publications

View Test Details

Fixed Layout

pass

Duplicate fixed layout items handled properly

fxl-page-spread-break: Fixed Layout Page Spread Break

Honors page spread break declarations

View Test Details

Fixed Layout

pass

Page spread breaks respected in rendering

fxl-spine-overrides_behave-as-global: Spine Override Behavior Global

Spine properties override global settings

View Test Details

Fixed Layout

pass

Spine overrides applied globally across publication

fxl-spine-overrides_behave-as-global-bis: Spine Override Behavior Global (Alt)

Handles alternative spine override scenarios

View Test Details

Fixed Layout

pass

Alternate spine override behavior working

fxl-spine-overrides_duplicate: Duplicate Spine Overrides

Processes duplicate spine override declarations

View Test Details

Fixed Layout

pass

Duplicate spine overrides handled correctly

lay-fxl-layout-default: Default Fixed Layout

Handles default fixed layout publications

View Test Details

Fixed Layout

pass

Default fixed layout rendering supported

lay-fxl-layout-pre-paginated: Pre-Paginated Fixed Layout

Full support for pre-paginated layout mode

View Test Details

Fixed Layout

pass

Pre-paginated fixed layout fully supported

lay-fxl-layout-pre-paginated-spreads: Pre-Paginated Spreads Layout

Supports pre-paginated spread-based layout

View Test Details

Fixed Layout

pass

Two-page spread fixed layout supported

lay-fxl-orientation-default: Default Orientation for Fixed Layout

Uses default orientation when not specified

View Test Details

Fixed Layout

pass

Default orientation handled properly

lay-fxl-spread-default: Default Spread Mode

Uses default spread mode when not specified

View Test Details

Fixed Layout

pass

Default spread mode working correctly

lay-fxl-spread-none: No Spread Mode

Handles no-spread (single page) mode

View Test Details

Fixed Layout

pass

Single page spread mode supported

lay-fxl-svg-icb_multi: SVG ICB Multiple Viewports

Handles SVG with multiple containing blocks

View Test Details

Fixed Layout

pass

SVG with multiple ICB viewports rendered correctly

lay-fxl-xhtml-icb: XHTML Initial Containing Block

Creates correct initial containing block from viewport

View Test Details

Fixed Layout

pass

XHTML viewport creates proper ICB

lay-fxl-xhtml-icb_device_sizes: XHTML ICB with Device Sizes

Should handle device-specific viewport dimensions

View Test Details

Fixed Layout

fail

Device-specific viewport sizing not fully implemented

lay-fxl-xhtml-icb_multi: XHTML ICB Multiple Containers

Processes multiple containing blocks in XHTML

View Test Details

Fixed Layout

pass

Multiple ICB containers in XHTML handled correctly

lay-fxl-xhtml-icb_multi_declarations: XHTML ICB Multiple Declarations

Should resolve multiple viewport meta declarations

View Test Details

Fixed Layout

fail

Multiple viewport declarations not properly handled

lay-fxl-xhtml-icb_repeated-in-meta: XHTML ICB Repeated in Meta

Should handle repeated viewport meta tags

View Test Details

Fixed Layout

fail

Repeated viewport meta handling incomplete

lay-fxl-xhtml-icb_units: XHTML ICB Units

Properly processes different viewport units (px, em, etc.)

View Test Details

Fixed Layout

pass

Various viewport unit types handled correctly

lay-page-layout-both-spread: Both Page Layout with Spreads

Should display both-page-layout in spread mode

View Test Details

Fixed Layout

fail

Two-page spread layout mode incomplete implementation

lay-reflow-align-x-center: Reflow X-Axis Center Alignment

Should center content horizontally in reflow mode

View Test Details

Fixed Layout

fail

X-axis center alignment in reflow mode not working

lay-rendition-flow-pre-pag: Rendition Flow Pre-Paginated

Should respect pre-paginated rendering flow

View Test Details

Fixed Layout

fail

Rendition flow pre-paginated mode not fully implemented

lay-viewport-meta-prop: Viewport Meta Property

Handles viewport meta tag properties

View Test Details

Fixed Layout

pass

Viewport meta properties correctly processed

fxl-page-spread-center: Page Spread Center

Renders centered two-page spreads

View Test Details

Fixed Layout

pass

Centered page spread rendering supported

lay-fxl-orientation-landscape: Landscape Orientation

Should support landscape page orientation

View Test Details

Fixed Layout

fail

Landscape orientation mode not fully working

lay-fxl-page-spread-combined: Combined Page Spread Handling

Handles combined page spread scenarios

View Test Details

Fixed Layout

pass

Combined page spread mode working

lay-fxl-page-spread-left: Left Page Spread

Positions left-page spreads correctly

View Test Details

Fixed Layout

pass

Left-side page spread positioning correct

lay-fxl-page-spread-right: Right Page Spread

Positions right-page spreads correctly

View Test Details

Fixed Layout

pass

Right-side page spread positioning correct

lay-fxl-spread-both: Both-Page Spread Mode

Should support both-page spread layout

View Test Details

Fixed Layout

fail

Both-page spread mode not fully implemented

lay-fxl-spread-landscape: Landscape Spread Mode

Handles landscape mode spreads

View Test Details

Fixed Layout

pass

Landscape spread mode supported

lay-fxl-xhtml-icb_invalid_meta: XHTML ICB Invalid Meta Recovery

Handles invalid viewport meta tags gracefully

View Test Details

Fixed Layout

pass

Recovers from invalid viewport meta gracefully

lay-page-layout-both: Both Page Layout

Renders both-page-layout mode

View Test Details

Fixed Layout

pass

Both-page layout rendering supported

lay-pkg-flow-paginated: Package Flow Paginated

Handles paginated page flow mode

View Test Details

Fixed Layout

pass

Paginated flow mode supported

lay-pkg-flow-scrolled-continuous: Package Flow Scrolled Continuous

Limited support for scrolled-continuous flow

View Test Details

Fixed Layout

fail

Scrolled-continuous flow mode has limitations

lay-pkg-flow-scrolled-doc: Package Flow Scrolled Document

Limited support for scrolled-doc flow mode

View Test Details

Fixed Layout

fail

Scrolled document flow mode incomplete

lay-fxl-spread-auto: Auto Spread Mode

Handles auto spread mode

View Test Details

Fixed Layout

pass

Auto spread mode supported

ocf-metainf-inc: META-INF Directory Structure

Reading system handles OCF META-INF directory

View Test Details

Open Container Format

pass

Properly processes OCF META-INF directory

ocf-metainf-manifest: META-INF Manifest Processing

Reads manifest.xml from META-INF directory

View Test Details

Open Container Format

pass

Correctly processes manifest.xml in META-INF

ocf-package_arbitrary: Arbitrary Package Document Location

Handles package document in non-standard location

View Test Details

Open Container Format

pass

Finds package documents in arbitrary locations

ocf-package_multiple: Multiple Package Documents

Processes multiple package documents

View Test Details

Open Container Format

pass

Handles containers with multiple packages

ocf-url_link-leaking-relative: Relative URL Link Leaking Prevention

Should prevent relative URL escaping

View Test Details

Open Container Format

fail

Relative URL validation incomplete

ocf-url_link-path-absolute: Absolute Path Link Resolution

Should handle absolute path links

View Test Details

Open Container Format

fail

Absolute path link resolution not working

ocf-url_link-relative: Relative URL Link Resolution

Properly handles relative link URLs

View Test Details

Open Container Format

pass

Correctly resolves relative links

ocf-url_manifest: Manifest URL Resolution

Handles URLs in manifest correctly

View Test Details

Open Container Format

pass

Manifest URLs resolved correctly

ocf-url_origin: OCF URL Origin Handling

Should properly determine URL origin

View Test Details

Open Container Format

fail

URL origin determination has issues

ocf-url_parse-leaking-relative: Relative URL Parse Leaking Prevention

Prevents relative URL escaping in parsing

View Test Details

Open Container Format

pass

URL parsing prevents relative escaping

ocf-url_parse-path-absolute: Absolute Path URL Parsing

Properly parses absolute path URLs

View Test Details

Open Container Format

pass

Absolute paths parsed correctly

ocf-url_relative: Relative URL Resolution

Properly resolves relative URLs within OCF

View Test Details

Open Container Format

pass

Relative URLs resolved within container correctly

ocf-zip-comp: ZIP Compression

Should handle various ZIP compression methods

View Test Details

Open Container Format

fail

ZIP compression handling incomplete

ocf-zip-mult: Multiple ZIP Entries

Should handle multiple ZIP file entries

View Test Details

Open Container Format

fail

Multiple ZIP entry handling problematic

ocf-font_obfuscation: Font Obfuscation

Should support font obfuscation

View Test Details

Open Container Format

fail

Font obfuscation not currently supported

ocf-font_obfuscation-bis: Font Obfuscation (Alternative)

Should support alternative font obfuscation

View Test Details

Open Container Format

todo

Alternative font obfuscation methods in development

scr-not-support_ccscript-modify-host: Content Crash Script - Host Modification Prevention

Should prevent scripts from modifying host

View Test Details

Scripting

fail

Host environment protection not fully implemented

scr-not-support_ccscript-modify-size: Content Crash Script - Size Modification Prevention

Should prevent scripts from modifying size

View Test Details

Scripting

fail

Content size modification restrictions not enforced

scr-readingsystem-features: epubReadingSystem Features

Should expose supported features via epubReadingSystem

View Test Details

Scripting

fail

epubReadingSystem.features list incomplete

scr-readingsystem-support: epubReadingSystem Support

Should provide epubReadingSystem interface

View Test Details

Scripting

fail

epubReadingSystem object support partial

scr-readingsystem-support_iframe: epubReadingSystem in iframes

Should expose epubReadingSystem in iframes

View Test Details

Scripting

fail

epubReadingSystem not available in iframe contexts

scr-readingsystem-support_iframe_svg: epubReadingSystem in SVG iframes

Should expose epubReadingSystem in SVG iframes

View Test Details

Scripting

fail

epubReadingSystem not available in SVG context

scr-readingsystem-support_svg: epubReadingSystem in SVG

Should expose epubReadingSystem in SVG

View Test Details

Scripting

fail

epubReadingSystem not available in SVG documents

scr-support-fallback: Script Fallback Support

Provides fallback for unsupported scripts

View Test Details

Scripting

pass

Graceful fallback when scripts not supported

scr-support_origin: Script Origin Isolation

Provides origin isolation for security

View Test Details

Scripting

pass

Each publication assigned unique origin for script isolation

scr-support_origin_unique: Unique Script Origin

Should generate unique origins for publications

View Test Details

Scripting

todo

Unique origin generation in development

scr-support_scrolled-doc: Scrolled Document Mode API

Should supported scripts in scrolled-doc mode

View Test Details

Scripting

fail

Scrolled document mode scripting incomplete

scr-storage-delete: Script Storage Deletion

Should allow script storage deletion

View Test Details

Scripting

todo

Storage deletion API in development

scr-support: Script Support

Supports script execution

View Test Details

Scripting

pass

Basic script execution supported

scr-support_iframe: Script Support in iframes

Supports scripts in iframe context

View Test Details

Scripting

pass

Scripts in iframe elements supported

scr-support_scrolled-continuous: Script Support in Scrolled Continuous

Limited script support in scrolled-continuous mode

View Test Details

Scripting

fail

Scrolled-continuous mode script support incomplete

scr-support_svg: Script Support in SVG

Limited script support in SVG context

View Test Details

Scripting

fail

SVG script support incomplete

mol-audio: Media Overlay Audio Support

Should support audio in media overlays

View Test Details

Media Overlays

fail

Media overlays audio playback not implemented

mol-audio-exceeding-clipend: Media Overlay Audio Clip End

Should handle clipEnd in audio overlays

View Test Details

Media Overlays

fail

Audio clip end time handling incomplete

mol-audio-no-clipbegin: Media Overlay Audio without Clip Begin

Should handle audio without clipBegin

View Test Details

Media Overlays

fail

Audio without clip start time not handled

mol-audio-no-clipend: Media Overlay Audio without Clip End

Should handle audio without clipEnd

View Test Details

Media Overlays

fail

Audio without clip end time not handled

mol-ignore: Media Overlay Graceful Fallback

Falls back gracefully when overlays not supported

View Test Details

Media Overlays

pass

Correctly ignores unsupported media overlays

mol-navigation: Media Overlay Navigation

Should support navigation via media overlays

View Test Details

Media Overlays

fail

Media overlay navigation features not implemented

mol-support_xhtml: XHTML Media Overlay Support

Should support media overlays with XHTML

View Test Details

Media Overlays

fail

Media overlays with XHTML in development

pss-support_ignore-title: Structural Semantics - Ignore Title

Correctly handles title role in semantics

View Test Details

Structural Semantics

pass

Properly ignores title role in structural semantics

pss-support: Structural Semantics Support

Optional semantic parsing not implemented

View Test Details

Structural Semantics

fail

Structural semantics support not implemented

EPUB Reading System 3.4 Assessment (Specification)

Evaluation Basis: W3C EPUB Reading System 3.4 Specification

Requirement Level Result Notes
2.1 Reading System Requirements

Reading systems must support all required features and applicable conditionally-required features (e.g., to support images if the reading system has a viewport).

View Specification

A

untested

Thorium Reader supports all required and conditionally-required features

2.2 Error Handling

Reading systems do not have to load EPUB publications or resources within them when they violate content authoring or processing requirements.

View Specification

A

untested

Reading system may decline to load publications that violate authoring requirements

2.3 Error Reporting

Reading systems are encouraged to provide a means of accessing processing and rendering error information for debugging EPUB publications.

View Specification

A

untested

Error reporting capabilities for debugging publications

3.1 Core Media Types

Reading systems must support core media types including XHTML, SVG, images (GIF, JPEG, PNG), audio, and CSS if they have the corresponding capabilities.

View Specification

A

untested

Full support for XHTML, SVG, images, audio, and CSS core media types

3.2 Foreign Resources

Reading systems may support an arbitrary set of foreign resource types beyond core media types.

View Specification

A

untested

Reading system may support arbitrary set of foreign resource types

3.3 Manifest Fallbacks

For foreign content documents not supported, reading systems must traverse the manifest fallback chain to find a supported resource or alert the user.

View Specification

A

untested

Processes manifest fallback chains for unsupported resources

3.4 Resource Locations - Remote Resources

Reading systems should support remote resources and should limit them to https URIs to reduce network attack risks.

View Specification

A

untested

May support remote resources via https scheme

3.5 Data URLs Security

Reading systems must prevent data URLs from opening in top-level browsing contexts except when initiated through reading system affordances.

View Specification

A

untested

Prevents data URLs from opening in top-level browsing contexts without user consent

3.6 File URLs Security

Reading systems must prevent access to resources referenced via file URLs.

View Specification

A

untested

Prevents access to resources via file URLs

3.7 XML Processing

Reading systems must use a non-validating XML processor that does not read external DTD subsets and conforms to XML Namespaces.

View Specification

A

untested

Uses non-validating XML processor per XML specification

3.8 Internationalization

Reading systems must process language and base direction information from xml:lang and dir attributes in publication resources.

View Specification

A

untested

Processes language and base direction attributes in publications

3.9 Network Access

Reading systems may support network access for remote resources and scripted communication. If supported, they should notify users of network activity and allow blocking access.

View Specification

A

untested

May support network access with user notification and control

3.10 External Links

For links with http/https schemes, reading systems should obtain user consent before opening and open in new browser instance for privacy/security.

View Specification

A

untested

Should obtain user consent before opening http/https links and external helper apps

4.1 OCF Abstract Container

Reading systems must assign a container root URL to the OCF abstract container root directory with properties ensuring relative URLs don't leak outside the container.

View Specification

A

untested

Assigns unique container root URL with specific properties

4.2 OCF ZIP Container Processing

Reading systems must treat segmented, encrypted, or improperly compressed OCF ZIP containers as errors and support ZIP64 extensions.

View Specification

A

untested

Validates ZIP container structure and handles segmented, encrypted, or invalid containers as errors

4.3 Font Obfuscation

Reading systems should support deobfuscation of fonts using the methods defined in EPUB 3.3, though the feature is marked as outdated.

View Specification

A

untested

May support deobfuscation of obfuscated fonts

5.1 Base Direction Processing

Reading systems must process the dir attribute and when set to auto, apply the Unicode Bidi Algorithm starting with Rule P2.

View Specification

A

untested

Processes dir attribute and applies Unicode Bidi Algorithm when needed

5.2 Unique Identifier

Reading systems should not depend on EPUB unique identifiers being unique, as they may be reused across versions or different publications.

View Specification

A

untested

Should not depend on unique identifiers being unique to one publication

5.3 Metadata Processing

Reading systems must process metadata including stripping whitespace from DC elements, recognizing dc:title as main title, and respecting creator order.

View Specification

A

untested

Processes Dublin Core metadata and recognizes dc:title, dc:language, dc:creator elements

5.4 Manifest Processing

Reading systems must ignore properties attribute values they do not recognize and should avoid using linked resources due to limitations and risks.

View Specification

A

untested

Ignores unrecognized properties attributes and avoids using linked resources

5.5 Spine Processing

Reading systems must render spine items in order, recognize primary items as default reading order, and process page-progression-direction attribute.

View Specification

A

untested

Renders spine items in order, handles linear/non-linear items and page progression direction

5.6 Collections Processing

Support for EPUB collections in reading systems is optional. Reading systems must ignore collection elements with unrecognized roles.

View Specification

A

untested

Collections support is optional; must ignore unrecognized collection roles

5.7 Legacy Features

Reading systems must not support legacy features such as NCX in content that conforms to EPUB 3.x.

View Specification

A

untested

Must not support legacy features in EPUB 3 content

6.1.1 Reflowable Layouts

Reading systems must support reflowable layouts where content reflows to fit the viewport. Dynamic pagination is optional.

View Specification

A

untested

Must support reflowable layouts with dynamic pagination option

6.1.2 Pre-paginated Layouts

Reading systems must support pre-paginated layouts, producing exactly one page per spine item. Support for image foreign resources in pre-paginated layouts is optional.

View Specification

A

untested

Must support pre-paginated layouts; may support fixed-layout images

6.1.2.1 Synthetic Spread Placement

Reading systems must understand and apply rendition page-spread properties to control placement of pre-paginated content in synthetic spreads.

View Specification

A

untested

Interprets page-spread-left/-right/-center properties for spread rendering

6.1.2.2 Roll Layouts

Reading systems should support roll layouts, fitting each spine item width to viewport and displaying them in continuous roll with no visible gap.

View Specification

A

untested

Should support roll layouts with continuous scrolling

6.2 Custom Rendition Properties

Reading systems may support custom properties provided they do not introduce expressions conflicting with standard package rendering vocabulary.

View Specification

A

untested

May support custom properties if they don't conflict with standard properties

7.1 XHTML Content Documents

Reading systems must process XHTML content documents using semantics defined in HTML specification unless explicitly overridden by EPUB specification.

View Specification

A

untested

Must process XHTML using HTML specification semantics

7.1.1 HTML Extensions - RDFa and ITS

Reading system support for RDFa attribute processing and ITS markup processing is optional but may enhance content semantics.

View Specification

A

untested

Support for RDFa and ITS markup processing is optional

7.1.2 HTML Deviations - MathML

Reading systems must be input-compliant MathML processors and support visual rendering of Presentation MathML if they have a viewport.

View Specification

A

untested

Must be input-compliant MathML processor and support visual rendering

7.1.2 HTML Deviations - Embedded SVG

Reading systems must process SVG content embedded in XHTML, respecting CSS styling rules based on reference vs. inclusion context.

View Specification

A

untested

Must process SVG embedded in XHTML, with CSS styling constraints

7.1.2 HTML Deviations - Form Submission

Reading system support for HTML form submission is optional and may be prevented to limit network access.

View Specification

A

untested

Form submission support is optional

7.2 SVG Content Documents

Reading systems must process SVG content documents using SVG specification semantics and support visual rendering via CSS if they have a viewport.

View Specification

A

untested

Must process SVG using SVG specification semantics with visual rendering

7.3 Fixed-Layout Documents

Reading systems must support rendering pre-paginated and roll layout content. Support for image foreign resources in fixed-layout spine items is optional.

View Specification

A

untested

Must support pre-paginated and roll layout rendering; may support image foreign resources

7.3.1 Initial Containing Block Dimensions

Reading systems must create initial containing block from viewport meta tag for XHTML or SVG dimensions and clip content positioned outside the ICB.

View Specification

A

untested

Creates ICB from viewport meta or SVG dimensions; clips content outside

7.3.2 Viewport Meta Tag Processing

Reading systems must use viewport meta declarations only for obtaining initial containing block dimensions and ignore other rendering instructions.

View Specification

A

untested

Uses viewport meta only for ICB dimensions, ignores other rendering instructions

7.4 Cascading Style Sheets

Reading systems with a viewport must support CSS visual rendering and should support CSS modules at Candidate Recommendation status and above.

View Specification

A

untested

Must support CSS for visual rendering; should support CR and above modules

7.4.1 Author Styling Overrides

Reading systems may override EPUB publication styling and allow users to set default themes and style preferences for accessibility.

View Specification

A

untested

May override author styles for ergonomics and allow user themes

7.5 Scripting Support

Reading systems should support scripting, including container-constrained scripting in reflowable documents and spine-level scripting in fixed-layout documents.

View Specification

A

untested

Should support container-constrained and spine-level scripting

7.5.1 Local Storage

Reading systems may block scripts from saving persistent data through cookies and web storage, and should provide methods for inspecting or deleting stored data.

View Specification

A

untested

May block scripts from saving persistent data via cookies or web storage

7.5.2 Event Model

Reading systems should follow the DOM Event model but may prevent scripts from disabling critical functionality like navigation.

View Specification

A

untested

Should follow DOM Event model; may limit script capability to disable critical functions

7.5.3 Scripting Security

Reading systems must assign unique origin to each publication, prevent container-constrained scripts from modifying host document DOM, and treat all scripts as potentially untrusted.

View Specification

A

untested

Must assign unique origin per publication and isolation for container-constrained scripts

8 Navigation Document Processing

Reading systems must provide access to navigation document content including table of contents, page lists, and landmarks, relocating reading position when links are activated.

View Specification

A

untested

Must provide access to toc/page-list/landmarks nav elements with proper link handling

9.1 Text-to-Speech Support

Reading system support for text-to-speech playback is optional but strongly encouraged if audio playback capability exists.

View Specification

A

untested

TTS support is optional but encouraged for accessibility

9.2 Media Overlays Processing

Reading systems with audio playback capability should support EPUB Media Overlays for synchronized audio playback of XHTML content.

View Specification

A

untested

Should support media overlays for synchronized audio narration

9.2.1 Media Overlay Loading

Reading systems must discover media overlays via manifest item media-overlay attributes and must support playback for XHTML content documents.

View Specification

A

untested

Must discover overlays via media-overlay attributes and support XHTML playback

9.2.2 Media Overlay Playback

Reading systems must handle timing/synchronization of media overlay elements, render audio/TTS, and optionally highlight elements being played.

View Specification

A

untested

Handles timing, audio rendering, TTS, and element highlighting

9.2.3 Navigation During Media Overlay Playback

When user pauses playback and navigates, reading systems must resume at the new location in the media overlay.

View Specification

A

untested

Resumes playback at navigation point when user navigates

9.2.4 Skippability and Escapability

Reading systems should use semantic information in epub:type attributes to offer users options for skipping content and escaping escapable structures.

View Specification

A

untested

Should support skipping/escaping based on semantic epub:type values

10 Structural Semantics Processing

Reading systems may process epub:type attribute values and associate behaviors with semantic terms from EPUB vocabulary or other vocabularies.

View Specification

A

untested

May process epub:type attribute and associate behaviors with semantic terms

11 Compact URLs Processing

Reading systems may process and expand compact URLs according to EPUB vocabulary association mechanisms if they support this feature.

View Specification

A

untested

May support expanding compact URLs to full URLs for vocabulary association

12 Backward Compatibility

Reading systems must attempt to process EPUB publications whose package document version is less than 3.0, according to their respective specifications.

View Specification

A

untested

Must attempt to process EPUB publications with version < 3.0

13 Forward Compatibility

Reading systems should attempt to process EPUB publications whose package document version is greater than 3.0 for forward compatibility.

View Specification

A

untested

Should attempt to process EPUB publications with version > 3.0

14 Accessibility Considerations

Reading systems should follow User Agent Accessibility Guidelines 2.0 and ensure accessible bookshelf, UI controls, full-text search, display customization, zoom, and API integration.

View Specification

A

untested

Should follow UAAG 2.0 and provide accessible bookshelf, UI, search, display control

15.1 Security and Privacy - Overview

EPUB publications present security risks similar to web content. Reading system developers must establish balance between features and protecting users from threats.

View Specification

A

untested

Security risks mirror web content; developers must balance functionality with user protection

15.2 Security and Privacy - Threat Model

Major threats include malicious scripts, exploit content, compromised remote resources, tracking links, unencrypted user data, and collection of reading habits.

View Specification

A

untested

Key threats: malicious scripts, content, remote resources, external links, user data collection

15.3 Security and Privacy - Recommendations

Reading systems should specify data collection, seek user consent, anonymize data, treat new content sources as insecure, and avoid XML entity attacks.

View Specification

A

untested

Should seek user consent for data collection and treat all content as insecure by default

B.3.1 epubReadingSystem Object - hasFeature Method

Reading systems must expose the epubReadingSystem object with hasFeature method to query support for dom-manipulation, layout-changes, touch/mouse/keyboard-events, and spine-scripting.

View Specification

A

untested

Must expose epubReadingSystem object with hasFeature support for scripted content