lade...

Blog.readium.org

Blog.readium.org

an avatar

Readium Foundation - Blog

Welcome to the Readium Blog, where everyone can stay up to date with our latest Web and Mobile projects. Browse our articles, interviews and videos today to learn everthing you need to know about Readium.

an icon 🌐 Visit Blog.readium.org 🌐 Blog.readium.org besuchen

Write rieview✍️ Rezension schreiben✍️ Get Badge!🏷️ Abzeichen holen!🏷️ Edit entry⚙️ Eintrag bearbeiten⚙️ News📰 Neuigkeiten📰

Write review

Tags: articles everthing everyone interviews projects readium videos welcome

Blog.readium.org hosts 1 (1) users Blog.readium.org beherbergt 1 (1) Benutzer insgesamt (powered by Ghost)

Server location (146.75.119.7):Serverstandort (146.75.119.7 ):60313 Frankfurt am Main, DE Germany, EU Europe, latitude: 50.1169, longitude: 8.6837

Rieviews

Bewertungen

not yet rated noch nicht bewertet 0%

Be the first one
and write a rieview
about blog.readium.org.
Sein Sie der erste
und schreiben Sie eine Rezension
über blog.readium.org.

Blog.readium.org News

Content Protection in Readium Web

https://blog.readium.org/content...

Content Protection in Readium Web

These features were built during the development cycle of Content Protection, and help us fulfill long-awaited requests. All of this is available in version 2.3.0 of Navigator and Navigator HTML Injectables.

Browse the full release on Github

Overview


Content Protection is a new low-level API whose purpose is to provide ways to protect publications' content from being too easily copied or extracted. It is only the first piece of a larger system that will be built over the next months: Web Content Protection. Expect a lot more to come on this topic!

This Content Protection API should not be considered as a collection of measures, but rather a system with multiple layers that apps can combine and extend. This way, apps can build on top of it and add their own protection mechanisms if they deem it necessary.

Features


The main features of Content Protection are:

It also provides ways to:

Finally, it offers monitoring capabilities to:

Of course rest assured that we will continue to improve this API and add more features in the future, these are only a starting point.

Extensibility


The API is designed to be extensible, allowing apps to add their own protection mechanisms on top of the base features. You can indeed listen to contentProtection events and add your own logic to enhance the protection. For instance, you could monitor for unusual activity patterns and reroute the user to a different page, or unmount the reader component entirely and replace it with unrelated or random content.

This means app developers do not depend on Readium TS-Toolkit’s core maintainers to implement all possible protection mechanisms, but can also design their own on top of the ones we built in. This approach provides flexibility and helps them react faster to new threats. In other words, you do not rely on us to implement new defences, you can add them as needed.

Check out the Content Protection documentation for more details.

More Enhancements


As a side effect of Content Protection, we were able to improve TS-Toolkit Navigator with two additional features: a new listener for the context menu and support for keyboard peripherals.

We have been busy implementing the missing pieces in TS-Toolkit for the last year, and we are glad to grow the list of available APIs, making it simpler for app developers to build their own features. We know how important the Preference and Injection APIs were in helping us build Thorium Web, needed the ones we are disclosing today, so we hope all of these new and upcoming APIs will be useful for you as well.

Context Menu


When disabling the context menu through the Content Protection API, a dedicated contextMenu event is now emitted with selected text (if any) and coordinates. This should allow apps to handle the context menu in their own way.

This is a common feature in many applications, and we are glad to finally provide it.

Check out the new listener for more details.

Peripherals


As we needed to cover shortcuts for developer tools, print, save, etc., we built all the necessary infrastructure to support keyboard peripherals.

This was turned into its own API, allowing developers to provide keyboard shortcuts for navigation and other actions (bookmarks, opening the table of contents, etc.).

Both the parent window, in which your app lives, and the publications’ resources are automatically handled so that you do not need to worry about it. This API was also designed in a way that things remain consistent across contexts and we do not accidentally get them out of sync in future developments.

You provide a type you want to listen to, a list of key combinations and that is it. This will now appear in the new peripheral listener Navigator provides.

Check out the Keyboard Peripherals documentation for more details.

Technical updates and breaking changes

The new versions are available on NPM:

10.3.2026 13:45Content Protection in Readium Web
https://blog.readium.org/content...

What's New in Readium Mobile? · Q4 2025

https://blog.readium.org/whats-n...

What's New in Readium Mobile? · Q4 2025

On the agenda for this edition of "What's New in Readium Mobile":

- Our brand new Discord server for Readium
- Our extended Beta for Thorium Mobile on iOS
- Out two most recent Swift Toolkit releases (3.6.0 & 3.7.0)
- Our new localization strategy

Subscribe to our mailing list down below to receive a notification every time we publish an article or a release note.

Enjoy your watch!


🔗 Links from this video:

- Discord invite for Readium: https://discord.gg/yTdtzBddM3
- TestFlight invite for Thorium Mobile: https://testflight.apple.com/join/2NhKXjSU
- Beta info for Thorium Mobile: https://edrlab.notion.site/thorium-mobile-beta
- Swift toolkit monorepo: https://github.com/readium/swift-toolkit
- Kotlin toolkit monorepo: https://github.com/readium/kotlin-toolkit
- Swift toolkit v3.6.0: https://github.com/readium/swift-toolkit/releases/tag/3.6.0
- Swift toolkit v3.7.0: https://github.com/readium/swift-toolkit/releases/tag/3.7.0
- Weblate project for Readium and Thorium: https://hosted.weblate.org/projects/thorium-reader/#components

4.3.2026 14:41What's New in Readium Mobile? · Q4 2025
https://blog.readium.org/whats-n...

Release Note · Readium CSS 2.0

https://blog.readium.org/release...

Release Note · Readium CSS 2.0

Readium CSS already ships in TS-Toolkit and has been heavily used in Thorium Web.

Browse the full changelog on Github and don't forget to check the docs.

A New Philosophy


In version 1, Readium CSS was oftentimes trying to be too smart, and would end up catching developers by surprise. In other words, the library was getting in their way, and they sometimes had to fight it to get what they wanted.

Version 2 is here to change that. We want to make it easier for developers to use Readium CSS, and to make it more predictable. This is why we decided to make it as unopinionated as possible.

Take pagination for example. In version 1, Readium CSS would try to automatically switch between a single page and a spread layout depending on the screen size and the font-size. In version 2, developers are in complete control of the pagination, they can set the line-length they want, and apply the number of columns they consider most appropriate for their use case.

We already have a working implementation you can test in Readium Playground. You can experiment with it, and see how we decided to base our pagination on an optimal line-length for the current font selected. Setting auto for columns will automatically calculate the number of columns based on the line-length and the space available.

Release Note · Readium CSS 2.0
Our default implementation of responsive/auto columns relies on an optimal line-length, computed for the current font selected by the user.

For demonstration purposes, we created presets you can apply through the overflow menu in the top right corner. We hope this will help you understand how things can change depending on a set of minimal, optimal, and maximal line-lengths, and encourage you to experiment with different values.

Release Note · Readium CSS 2.0
If you change presets in Playground, or fine-tune minimal, optimal, and maximal values, you will get a different result. Here for instance, we can add a column by decreasing all these values through preset Newspaper.

Best part of it? You get this for free in TS-Toolkit Navigator.

If you so choose, you can also enforce an arbitrary number of columns depending on your own heuristics, Readium CSS will not try to override your choice.

Release Note · Readium CSS 2.0
If you want 2 columns even on narrower screens, you can now do that too, Readium CSS won’t intervene any longer.

Highlights


The removal of responsive pagination is only one of the many changes we made so that Readium CSS is more predictable and easier to use. We have taken years of feedback from developers and users into account, and resolved long-standing issues.

And of course, it is worth repeating that we removed a lot of friction by simplifying the API, eliminating side effects, and removing unnecessary complexity. The idea is that you set a property and it is applied, no need to set additional flags, or work around Readium CSS’ quirks to get the result you want.

Next Steps


In addition to maintenance updates and improvements, we are working on consolidating Readium CSS stylesheets into a single set.

Historically, Readium CSS has had multiple stylesheets for Right-to-left (RTL) and Left-to-right (LTR) reading directions, as well as writing modes in Chinese, Japanese, and Korean. It was easier to handle them separately, and apply some heuristics in toolkits and/or apps to load the right set for the publication.

Thanks to the advances in CSS, logical properties in particular, it should now be possible to handle all these cases in the same stylesheets with minimal overhead. And we expect it to be our version 2.1.0.

Technical updates and breaking changes


It should not come as a surprise this is a new major version because there are many breaking changes. Thankfully, we have a migration guide available.

We also made sure to provide ways to help you transition in incremental steps:

Breaking changes include:

Readium CSS 2 is available as an NPM package.

26.2.2026 13:30Release Note · Readium CSS 2.0
https://blog.readium.org/release...

Using custom fonts with Readium Web

https://blog.readium.org/using-c...

Using custom fonts with Readium Web

We are pleased to announce the release of new Readium Web packages, and an update to the Playground to demonstrate their new features. This update brings custom fonts to the reader, and a new Injection API to inject custom CSS and JS into the Navigator.

Browse the full releases on Github

Custom Fonts

You can test the new fonts in the Readium Playground. Pick a reflowable publication and head to the Display settings. You will find our default list of curated fonts for Latin scripts:

We tried to include a wide range of fonts to cover different needs and preferences. In combination with our spacing presets, we hope to provide a comfortable and accessible reading experience for all users.

Using custom fonts with Readium Web
Using Open Dyslexic in the Readium Playground
Using custom fonts with Readium Web
Combining Atkinson Hyperlegible Next with our spacing preset for accessibility

For implementers, the list of fonts is entirely customizable through preferences. The application supports static and variable fonts, collections specific to languages and scripts. You can use local fonts, and providers Google Fonts and Bunny Fonts are built-in. Give their embed code to the preferences using our helpers, and the application will take care of the rest.

In an upcoming release, we will leverage variable fonts to provide more accessible options such as adapting their weights on a per-font basis.

Injection API

Custom Fonts would not have been possible without the new Injection API.

This API allows you to inject custom CSS and JS into the Navigator. It is a simple yet powerful API that opens up a lot of possibilities, and custom fonts are only one use case among many.

We are already using it to inject Readium CSS and functionality scripts into the Navigator. But it was primarily designed to accept your own styles and scripts, as well as the ones from a list of allowed domains.

This API offers greater flexibility and customization options for implementers, allowing them to pick the resources in which they want to prepend or append their link and script elements. Once again, they don't have to worry about the rest, everything is taken care of for them.

Technical updates and breaking changes

All these new packages are available on npm:

17.2.2026 14:00Using custom fonts with Readium Web
https://blog.readium.org/using-c...

Assessing the accessibility of your backlist with Readium CLI

https://blog.readium.org/accessi...

Assessing the accessibility of your backlist with Readium CLI

Readium CLI is a Swiss Army knife for your publications built on top of the Go toolkit.

With this article, we'll explore how publishers, distributors and aggregators can use it to assess the accessibility of their EPUB backlist and prepare for further remediation.

Extracting metadata

Readium CLI is completely EPUB version-agnostic, which means that you'll always receive a homogenized output that you can use in your workflows.

Once installed, you can call it using the manifest command:

readium manifest publication.epub

This will output a JSON document based on the Readium Web Publication Manifest.

The manifest contains information that you would usually find in an OPF in EPUB (metadata, list of files contained in the publication) along with lists (table of contents, print page list) extracted from NCX (EPUB 2.x) or a Navigation Document (EPUB 3.x).

readium manifest --infer-a11y=split moby-dick.epub | jq .metadata

Using jq to filter the output and display the metadata of a publication

{
  "conformsTo": "https://readium.org/webpub-manifest/profiles/epub",
  "title": "Moby-Dick",
  "author": {
    "name": "Herman Melville",
    "sortAs": "Melville, Herman"
  },
  "identifier": "code.google.com.epub-samples.moby-dick-basic",
  "language": "en",
  "modified": "2012-01-18T12:47:00Z",
}

Metadata for Moby Dick

If the publication contains any accessibility metadata, they will be parsed and displayed under accessibility in metadata.

{
  "accessibility": {
    "conformsTo": [
      "http://www.idpf.org/epub/a11y/accessibility-20170105.html#wcag-aa"
    ],
    "certification": {
      "certifiedBy": "Matt Garrish"
    },
    "summary": "This EPUB Publication meets the requirements of the EPUB Accessibility specification with conformance to WCAG 2.0 Level AA. The publication is screen reader friendly.",
    "accessMode": [
      "textual",
      "visual"
    ],
    "accessModeSufficient": [
      [
        "textual",
        "visual"
      ],
      [
        "textual"
      ]
    ],
    "feature": [
      "tableOfContents",
      "readingOrder",
      "alternativeText"
    ],
    "hazard": [
      "none"
    ]
  }

Accessibility metadata from an EPUB3 file

Inferring accessibility metadata

Many EPUB files have inherent accessibility features that are not documented in their metadata.

The Readium CLI is capable of inferring a number of them when it is called together with the --infer-a11y flag.

readium manifest --infer-a11y=split publication.epub

To avoid mixing up things up, we recommend using the split option which separates inferred metadata and lists them under https://readium.org/webpub-manifest#inferredAccessibility.

This won't magically turn inaccessible EPUB into fully accessible ones, but this feature is very useful to detect baseline accessibility features in your files.

Preparing for image remediation

Images can be the most challenging part of remediating your content, since they either require an alt text or to be properly identified as decorative.

To prepare for this task, you can extract additional info with the --inspect-images flag.

readium manifest --inspect-images publication.epub

This will automatically enhance the output with the following info:

Looking across your backlist, you might identify images that are repeated in multiple publications, such as logos for example.

To further help with this task, it's also possible to generate a perceptual hash using --hash=phash-dct .

While a cryptographic hash like SHA-256 is faster to compute, it will only match images that are an exact match, whereas a perceptual hash will remain stable across variations of the same image (for example using a different format).

readium manifest --infer-a11y=split --inspect-images --hash=sha256,phash-dct publication.epub

Inferring metadata and inspecting images with a cryptographic and perceptual hash

Once you've identified repeated images that can be safely skipped, you can start using --infer-a11y-ignore-image-hashes to provide a list of hashes to ignore.

readium manifest --infer-a11y=split --infer-a11y-ignore-image-hashes=phash-dct:YzZTDc7IMzk=,sha256:EvaoUnJkxsWkMM0NUf4CwOZMMvEpDRKk7omCBSN67Gc= publication.epub

A distributor could for example allow each publisher to inspect repeated images and add them to an ignore list that way.

A future update will also introduce the ability to extract even more information, such as the alt text and whether the image is properly marked as decorative using an ARIA role.

10.2.2026 14:30Assessing the accessibility of your backlist with Readium CLI
https://blog.readium.org/accessi...

Release Note · Swift Toolkit Version 3.7.0

https://blog.readium.org/release...

Release Note · Swift Toolkit Version 3.7.0


Browse the full release on GitHub

Improved reading for comics and image-based publications


This release focuses heavily on improving the reading experience for image-based publications. Firstly, we have added support for JXL (JPEG XL) bitmap images, allowing for high-quality images at smaller file sizes. Please note that JXL is decoded natively on iOS 17+.

Furthermore, you can now display Divina publications and CBZ files directly within the fixed-layout EPUB navigator. The toolkit now also recognizes EPUB files that consist solely of bitmap images and treats them as Divina publications. Additionally, we now extract metadata from ⁠ComicInfo.xml files in CBZ archives, ensuring better cataloging for comics.

Finally, we've introduced cover fallbacks. If a publication doesn’t have a declared cover, the toolkit will now automatically use the first resource in the reading order as the cover (provided it is a bitmap image).

Performance improvements for the Navigator

In this version, we've introduced a few improvements for the Navigator. First off, to prevent UI freezes when loading large files and for a smoother experience, PDF documents are now opened off the main thread.

Secondly, we’ve added a new⁠ offsetFirstPage preference for fixed-layout EPUBs. This gives you control over whether the first page appears alone or alongside the second page when spreads are enabled.

Enhanced metadata for audio publications


For those building audiobook experiences, we’ve improved metadata extraction for standalone audio files (e.g., MP3s). The parser now extracts  narrators and merges artist metadata into ⁠authors, aligning with conventions used by popular audiobook tools.

Technical updates and breaking changes

The 3.7.0 version of the toolkit comes with some important information to note.


For a complete list of all fixes, deprecations, and technical details, please view the release on GitHub. Many thanks to Mickaël MenuLeonard Beus and all our contributors for making this release possible!

6.2.2026 13:00Release Note · Swift Toolkit Version 3.7.0
https://blog.readium.org/release...

EAA with Readium: Customizing text and layout in digital publications

https://blog.readium.org/eaa-wit...

EAA with Readium: Customizing text and layout in digital publications

In past LinkedIn posts about EAA and digital accessibility, we discussed how metadata and DRM can affect accessibility. Unlike print, ebooks have the benefit of adapting how text is presented to users. This is the topic that we'd like to explore in today's post.

Readability can be defined as the art of making text easy and enjoyable to read. It is one of the cornerstones of an accessible reading experience, but it is a complex challenge, mainly because it has no one-size-fits-all solution. As a result, in digital form, the best way to ensure readability is to offer ways to adapt text and layout to each user and device.

EAA with Readium: Customizing text and layout in digital publications

Under EAA, reading app developers have an obligation to provide these features. To allow users to create a reading experience that truly fits their needs, they must give them access to a number of options, including:

Visual accessibility options and adjustments in Readium toolkits


All Readium toolkits use a shared component called Readium CSS and an API called the Preference API to allow developers and end users to customize how publications are rendered on screen. Thanks to those components, end users have the possibility to customize content with precision.

We are constantly looking to improve how we approach visual accessibility in order to give end users more adaptive solutions. With its latest version, Readium CSS v2 brings a new take of font size, which allows users to increase the font size without losing the visual hierarchy of the layout.

EAA with Readium: Customizing text and layout in digital publications

With Readium CSS v2, we also offer other new options for visual adjustments:

At their core, all of these features are meant to help ensure an accessible reading experience that caters to all visual disabilities. But their perks also go way beyond. Content customization improves the experience of every user, making it a necessary attribute to create a successful and welcoming reading app.

The Readium Playground, an insight into our visual accessibility options

EAA with Readium: Customizing text and layout in digital publications

The Playground is our reference implementation for Thorium WebReadium Web and Readium CSS. It is available to all online and helps developers understand the way those toolkits display digital publications to end users. As such, it is a useful tool to understand our visual adjustment options, but also to test our new features.

16.1.2026 13:00EAA with Readium: Customizing text and layout in digital publications
https://blog.readium.org/eaa-wit...

Release Note · Swift Toolkit Version 3.6.0

https://blog.readium.org/release...

Release Note · Swift Toolkit Version 3.6.0

Browse the full release on GitHub

A new preference for layout control in PDF and fixed-layout EPUB


The first important elements that was added in this latest version is a new  fit preference that allows developers to control how pages from PDF files and fixed-layout EPUB are scaled and displayed within the viewport. Please note that in the PDF navigator, the new preference is only effective in scroll mode. Paginated mode always uses page fit due to PDFKit limitations.

This addition implies some key changes to the previous version of the toolkit. For example, the Fit enumerations has been redesigned to fit the PDF implementation. To avoid problems, please make sure to update any code using the old enumeration values.

Several bugs regarding layout have been fixed in this new version. However, please note that PDFNavigatorViewController.scalesDocumentToFit is now deprecated and non-functional. From now on, the navigator always scales the document to fit the viewport.

Improved navigation and tracking in PDF files


This version comes with new support for swipe gestures for PDF files in paginated spread mode. This addition is made possible with DragPointerObserver , which helps recognize drag gestures with pointer events.

Moreover, the  DirectionalNavigationAdapter.onNavigation callback helps tracking events, which is useful for hiding UI elements when the user navigates, or implementing analytics.

Changes made to the content inset behavior of fixed-layout navigators


The 3.6.0 version comes with two key changes in fixed layout navigators' content inset behaviour (PDF and fixed-layout EPUB) :

Please note that you can customize this behavior with VisualNavigatorDelegate.navigatorContentInset(_:)!

New developer hooks for more customization


In addition to the aforementioned onNavigation callback, this version comes with new support for asynchronous callbacks with onCreatePublication.


Many thanks to Mickaël Menu, Shane Friedman and all our contributors for making this release possible!

19.12.2025 13:00Release Note · Swift Toolkit Version 3.6.0
https://blog.readium.org/release...

Robert Cartolano on advocating for interoperable standards in academic libraries

https://blog.readium.org/powered...

Robert Cartolano on advocating for interoperable standards in academic libraries


From Lyrasis' Palace Project to Readium and the Interoperable Ebook Standards Statement, we tackled a variety of initiatives and organizations that are actively working towards build a coherent, accessible and unified reading experience from public to academic libraries.



Transforming the academic experience through interoperable standards at Columbia


As the Associate Vice President Technology and Preservation at the Columbia University Libraries, Robert Cartolano's mission is to continually think of ways to improve the access to academic ebooks and their use. Years ago, he was part of the team that launched a project called "Transforming the academic ebook reading experience".

The project aimed at creating a seamless, three-step experience for users: find a book, get the book and read the book. It took inspiration from existing initiatives from public libraries, especially SimplyE by the New York Public Library and the Palace Project by Lyrasis, two projects that serve different missions but are both based on open-source technologies.

The choice of open-source, interoperable standards and technologies to power Columbia's efforts relied on four main goals:

The importance of interoperable standards and technologies in academic libraries


When asked about the importance of open-source technologies at Columbia, Robert emphasizes the importance of supporting research. One of the university's mission is to enrich its research library in order to nurture its faculty, students and academics. Collecting new materials and making them accessible require interoperability and protocols to support all metadata and collections over time.

The Readium Foundation uses open standards such as OPDS and EPUB, which help Columbia support these metadata. Through those standards, Readium builds open-source technologies that are interoperable between servers, services and applications. This way of working with data allows libraries to create a seamless experience for readers, but it is also beneficial for bibliodiversity.

"This concept of bibliodiversity is really at the underpinning of open interoperable standards for libraries. We at Columbia collect internationally. So we want to support an open interoperable set of standards to support this international publishing landscape."

This mirrors the mission of the Readium Foundation itself, which actively works to spread the adoption of standards. Readium LCP, for instance, is a standard for content protection that facilitates readership and helps publishers as well as libraries foster a vibrant ebook marketplace. This example illustrates the importance of spreading interoperable ebook standards.

The Interoperable Ebook Standards Statement


Robert is not alone in his belief that open standards are the key to fostering a healthy global academic library system. With the help of Library Futures, a community of experts, him and William Maltarich from the NYU Libraries developed the Interoperable Ebook Standard Statement. This text states the four key elements that library leaders are asking for in the ebook environment:

In late 2024, at the Coalition for Networked Information, Robert took the floor to call for library leaders to endorse interoperable ebook standards. Since then, a growing number have signed the statement, illustrating how important these solutions are for the library ecosystem around the world.

A glimpse into the future of Readium initiatives and Lyrasis' Palace Project


With a new year come new opportunities. As 2026 is around the corner, Robert shared with us two areas that he will be focusing on in the near future.

On the one hand, his first goal for 2026 is to work with other academic library partners to foster adoption of Readium technologies and of the Palace Project. A group of library leaders around the United States is currently working to spread the word and encourage others to adopt open standards. Libraries all over the world are showing a growing interest in the Palace Project as well as the Readium Foundation - notably Readium LCP, which is being adopted as a national standard by several countries. This trend is a great indicator of how relevant interoperable standards are in libraries worldwide.

On the other hand, the second goal is to increase the number of ebooks available to libraries within the aforementioned technologies. In this case, the work has to be done in partnership with ebook providers. Vendors who serve the academic marketplace can provide a better reading experience with these same technologies. Similarly as in with libraries, an increasing number of vendors serving North America are coming on board, forecasting exciting developments in 2026!

Hand in hand, these two complimentary areas are the key to fostering the adoption of open standards and growing the overall ebook market.

Building a coherent and accessible educational journey from public to academic libraries


As a volunteer among public libraries in his own community, Robert concluded the interview by emphasizing the connection between public and academic libraries. In North America, as in many other places, early learners are able to use pubic libraries to read books they might not have access to otherwise. As they grow and pursue higher education, they may then use technologies such as Palace and Readium in academic libraries.

The overarching goal when advocating for open and interoperable standards is to connect these environments together. Fostering accessible technologies that users are exposed to from an early age to adulthood is beneficial to their education. Broadening adoption and community engagement supports literacy and digital accessibility to the widest possible audience. In other words, advocating for open and interoperable standards is essential for the academic mission of universities - but when adopted globally, it benefits a much larger community of users.

18.12.2025 12:50Robert Cartolano on advocating for interoperable standards in academic libraries
https://blog.readium.org/powered...

Release Note · Swift Toolkit Version 3.5.0

https://blog.readium.org/release...

Release Note · Swift Toolkit Version 3.5.0

Browse the full release on GitHub

More resilient, predictable layouts in the EPUB navigator


The first element that was added to the toolkit is the possibility to customize content and safe-area insets used by the navigator. The goal is to ensure that apps can define stable content insets to prevent layout shifts when system UI appears or disappears.

By default, the navigator use the window's safeAreaInsets, which can cause content to shift when the status bar is shown or hidden. To avoid this implement navigatorContentInset(_:) and return insets that remain stable across status bar visibility changes, for example, a top inset large enough to accommodate the maximum expected status bar height.

From now on, content insets should include safe‑area values. If you previously supplied content-only margins, make sure to update them to add the safe-area values to preserve the same visible layout. Alternatively, a delegate hook is available to compute them consistently, helping avoid layout shifts.

Finally, as hinted to in our last What's New in Readium Mobile video, this new version of the toolkit fixes the issue of lost progression in the EPUB navigator. Reading progression is now preserved when the WebKit process is restarted by the system, but the application was not killed.

Improved text-to-speech (TTS) voice selection


Improving text-to-speech has been one of our priorities this year, and this new version of the Swift toolkit introduces two useful utilities:

However, please note that the “eloquence” and “novelty” voices are no longer used by the PublicationSpeechSynthesizer API, as they do not align with publication‑quality narration.

Better reading highlight legibility


This new version comes with an experimental positioning of EPUB decorations that places highlights behind text for clearer, more accessible and legible annotations.

This element is available for trial via a configuration flag. To opt-in, initialize the EPUBNavigatorViewController.Configuration object with decorationTemplates: HTMLDecorationTemplate.defaultTemplates(alpha: 1.0, experimentalPositioning: true).

More flexible LCP integrations


The last area of interest in this release is Readium LCP. This new version of the toolkit includes an initializer parameter for providing a stable, app-scoped custom device identifier. Please note that we recommend you generate an app-scoped UUID and store it securely. Avoid using hardware or advertising identifiers.

In other news, it is now possible to inject an LCPL license document into a package using LCPService.injectLicenseDocument(_:in) when working outside the provided acquisition flow. From now on, the LCP License Document is accessible via publication.lcpLicense?.license even if license validation fails, making it easier to check expiration dates or trigger renewal flows.


Many thanks to Mickaël Menu, as well as Daniel Freiling, Dewan Tawsif, Konstantin Portnov and all our contributors for making this release possible!

18.11.2025 13:00Release Note · Swift Toolkit Version 3.5.0
https://blog.readium.org/release...
Subscribe
More from our directory... Mehr aus unserem Verzeichnis...

🔝

Datenschutzerklärung    Impressum