• Stars
    star
    372
  • Rank 114,858 (Top 3 %)
  • Language
    C
  • License
    BSD 3-Clause "New...
  • Created almost 12 years ago
  • Updated almost 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A C++ ePub renderer SDK

Readium SDK

Copyright (c) 2012โ€“2014 The Readium Foundation and contributors.

Release Notes

Version 0.14 includes support for building a shared or static library for Android devices using the Android NDK r8e. See the Platform Support section for more information.

About

The Readium SDK is an ePub reader SDK of similar scope and capability to Adobe's Reader Mobile SDK (RMSDK). As such, it is designed to implement an ePub3- compliant Reading System, although its initial form will concentrate solely on the core ePub3 specification and fixed-layout metadata, expanding later to cover associated standards such as Page Templates.

The project's aim is to develop a productized, high-performance, cross-platform rendering engine for EPUB 3 content, optimized for use in native applications (mobile/tablet and secondarily desktop systems). Simplistic test applications for Android, iOS, OS X and Windows are part of the SDK, along with unit tests. The SDK is designed to be extensible in various areas, including in support for pluggable encryption and digital signature modules which might be used to implement a form of DRM.

Licensing info

Licensing information can be found in the file license.txt in the root of the repo, as well as in the source code itself.

Platform Support

At present, the project compiles for OS X and iOS using the version of Clang in Xcode 4.6 and the LLVM C++ standard library, libc++.

On Android, the project is build using GCC 4.7 and release 8e of the Android NDK. See Platform/Android/README.markdown for more information.

Build support for Windows using Visual Studio 2012 is due in release 0.5.

Headers And Libraries

The SDK is built into a single library on all platforms. Headers are placed into an include folder by the build process for each platform, located within the appropriate Platform subfolder. For instance, OS X and iOS headers are within Platform/Apple/include, Windows headers are within Platform/Windows/include.

This folder is designed to be passed directly to the compiler using the -I argument or similar.

Architecture

The SDK consists of three major components, corresponding roughly to Model, View, and Controller. The majority of the ePub3 data handling takes place inside the Model component, which provides parsing and generation of ePub-related data structures. The View component is a browser engine; this engine may be a customized form of WebKit developed as part of this project, but any CSS3-compliant browser engine may be used. The Controller component is a small interface between the data and renderer components; this part is ultimately what Reading System vendors will extend to create their own reading system.

The project is written in cross-platform C++ and JavaScript code, and is designed to be combined with platform-specific glue code and a modern browser rendering engine to instantiate an ePub3-compliant rendering engine within a platform-native Reading System application. The SDK constitutes a capable, high-performance ePub engine, not an overall application (other than per platform test applications).

The general architecture is that the browser engine (headlessly) handles content rendering with some features like pagination being implemented in Readium SDK JavaScript code that has been โ€œinjectedโ€ into the browser context. The C++ code handles tasks/features that canโ€™t be efficiently performed in JS, such as incrementally fetching (and, as necessary, decrypting/de-obfuscating) resources from an .epub ZIP package. Certain UX affordances are supported within the browser context (e.g. text highlighting) but application-level UX affordances would generally be done in the reading system application via platform-specific code (e.g. Java on Android, Obj-C on iOS). Integration glue is provided in the Readium SDK to facilitate this, and usage illustrated by the test applications (which however are not product-level reading systems). Handling of XML Encryption and Digital Signature files is provided to simplify implementation of DRM or content protection/validation that is compatible with the ePub3 specification.

The Readium SDK is designed to potentially work with multiple browser engines but the #1 priority for initial development is WebKit, including platform-bundled instantiations (e.g. via UIWebView on iOS). #2 priority browser engine will be Trident/IE10 (needed for apps to be able to support screen readers on Windows).

Build status

Android

  • master - Build Status
  • develop - Build Status

iOS

  • master - Build Status
  • develop - Build Status

Mac OS X

  • master - Build Status
  • develop - Build Status

Windows 32

  • master - Build Status
  • develop - Build Status

Windows 64

  • master - Build Status
  • develop - Build Status

WinRT 32

  • master - Build Status
  • develop - Build Status

WinRT 64

  • master - Build Status
  • develop - Build Status

WinRT ARM

  • master - Build Status
  • develop - Build Status

More Repositories

1

readium-js-viewer

๐Ÿ‘ ReadiumJS viewer: default web app for Readium.js library
HTML
517
star
2

readium-js

EPUB processing engine written in Javascript
JavaScript
339
star
3

swift-toolkit

A toolkit for ebooks, audiobooks and comics written in Swift
Swift
260
star
4

kotlin-toolkit

A toolkit for ebooks, audiobooks and comics written in Kotlin
Kotlin
185
star
5

awesome-readium

โญ๏ธ Awesome Readium-related resources
172
star
6

architecture

๐Ÿ“š Documents the architecture of the Readium project
JavaScript
153
star
7

r2-testapp-swift

Swift
149
star
8

r2-testapp-kotlin

Kotlin
128
star
9

mobile

๐Ÿ“ฑ Readium Mobile is a toolkit for ebooks, audiobooks and comics written in Swift & Kotlin.
HTML
104
star
10

readium-css

๐ŸŒˆ A set of reference stylesheets for EPUB Reading Systems, starting with Readium Mobile
HTML
87
star
11

readium-shared-js

Repository for the shared JavaScript libraries that are used in the SDK-Launchers and other applications developed on top of the SDK
JavaScript
78
star
12

SDKLauncher-Android

Launcher app for Readium SDK on Android
JavaScript
76
star
13

webpub-manifest

๐Ÿ“œ A JSON based Web Publication Manifest format used at the core of the Readium project
HTML
72
star
14

SDKLauncher-iOS

A small iOS application to serve as a launcher/testbed for the Readium SDK.
JavaScript
70
star
15

readium-lcp-server

Repository for the Readium LCP Server
Go
61
star
16

ts-toolkit

A toolkit for ebooks, audiobooks and comics written in Typescript
TypeScript
59
star
17

readium-cfi-js

JavaScript
43
star
18

go-toolkit

A toolkit for ebooks, audiobooks and comics written in Go
Go
38
star
19

desktop

Readium Desktop is an SDK for ebooks, audiobooks and comics written in Typescript and using node.js and Electron.js.
23
star
20

r2-streamer-swift

Swift
22
star
21

SDKLauncher-OSX

A small OS X application to serve as a launcher/testbed for the Readium SDK on the Mac.
JavaScript
21
star
22

r2-navigator-swift

JavaScript
19
star
23

r2-streamer-kotlin

Kotlin
18
star
24

r2-streamer-js

NodeJS Readium2 "streamer"
JavaScript
15
star
25

readium.github.io

Base repo for hosting the landing pages for the organization's web pages
HTML
14
star
26

r2-navigator-kotlin

Kotlin
12
star
27

readium-lcp-client

This repository is for the Readium Licenced Content Protection (LCP) client side implementation work.
C++
11
star
28

r2-shared-swift

Swift
10
star
29

r2-navigator-web

A Readium Navigator module for Web applications, written in Typescript
TypeScript
8
star
30

r2-shared-kotlin

Kotlin
8
star
31

r2-testapp-js

NodeJS Readium2 "test app"
TypeScript
8
star
32

r2-shared-js

NodeJS Readium2 "shared" components
TypeScript
8
star
33

r2-workspace-kotlin

A workspace for on-boarding developers
8
star
34

r2-streamer-java

A Java implementation of the Readium-2 streamer
Java
8
star
35

lcp-specs

๐Ÿ” Releases, drafts and schema for Readium LCP
SCSS
7
star
36

r2-opds-swift

Swift
7
star
37

r2-opds-js

NodeJS Readium2 "opds" component
TypeScript
7
star
38

readium-test-files

Some ePub3 files used to demonstrate the capabilities of the Readium SDK and derived reading systems.
JavaScript
6
star
39

r2-navigator-js

NodeJS Readium2 "navigator"
TypeScript
6
star
40

r2-lcp-swift

Swift LCP module
Swift
5
star
41

r2-opds-kotlin

Kotlin
4
star
42

r2-glue-js

Javascript resources that are injected by a Readium-2 streamer or navigator
TypeScript
3
star
43

r2-lcp-kotlin

Kotlin
3
star
44

r2-lcp-js

NodeJS LCP Module
TypeScript
3
star
45

r2-utils-js

NodeJS Readium2 "utils"
TypeScript
2
star
46

r2-workspace-swift

A workspace for on-boarding developers
2
star
47

readium-planning

A repo for various planning documents (as opposed to code/architecture documents)
1
star
48

readium-interfaces

A set of interfaces that provide access to the functionality in Readium 1 and 2.
JavaScript
1
star
49

divina-player-js

JS Player for Digital Visual Narratives
JavaScript
1
star
50

guided-navigation

๐Ÿชง Guiding readers through a publication using a JSON based document
HTML
1
star