Skip to content

Commit

Permalink
Achieved in 2023
Browse files Browse the repository at this point in the history
  • Loading branch information
llemeurfr committed Mar 18, 2024
1 parent 04cab88 commit 8d981b5
Showing 1 changed file with 86 additions and 0 deletions.
86 changes: 86 additions & 0 deletions _pages/news/_posts/2024-03-18-achieved-in-2023.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
---
layout: post
title: What was achieved in 2023
excerpt: A summary of the evolutions of the Readium Mobile toolkits in 2023.
date: 2024-03-18 11:30:00 +0100
categories: news
permalink: /news/_posts/2024-03-18-achieved-in-2023/
---

This year, we focused on the following:

* Releasing the Readium Kotlin toolkit version 3.0
* Enhancing the TTS and audio navigator features
* Implementing ZIP streaming
* Adapting the new preferences API for the Readium Swift toolkit

## Releasing the Readium Kotlin toolkit version 3.0

In 2023, a significant news was the release of Readium Kotlin toolkit's major version 3.0-alpha.1. The previous breaking version, 2.0, was released three years ago. Since then, the toolkit has undergone numerous API improvements, it was necessary to clean up and retire the legacy APIs.

The main goals of version 3.0 were to simplify the Streamer and Fetcher APIs, retire deprecated legacy APIs, improve error reporting, and introduce new features.

## Enhancing the TTS and audio navigator features

The existing audio navigator and TTS component have been improved in the following ways:

* Enhanced HTML resource content iterator to begin at the visible location.
* Added support for background playback, which was frequently requested by users.
* Included playback control in the notification centers.
* Integrated with the Jetpack media3 library on Android.

The TTS component, called `PublicationSpeechSynthesizer`, has been redesigned to function as an actual Navigator on Android. This allows for easy integration into existing UX and view models in host applications. It also sets the stage for supporting Media Overlays.

## Implementing ZIP streaming

:warning:This feature is currently only available in Kotlin but will be added to the Swift toolkit in 2024.

The 3.0 version of our toolkit introduces support for streaming ZIP packages. This exciting new feature allows users to stream LCP-protected publications directly from a LCP License Document, eliminating the need to download the entire publication first. It also enables streaming of large audiobook or comic book packages, as well as opening publications stored on the Android Shared Storage.

## Adapting the new preferences API for the Readium Swift toolkit

Last year, we introduced a new Navigator Preferences API to the Kotlin toolkit. This API helps in two ways:

1. It allows users to modify the rendering of the publication based on their preferences, such as adjusting the font size or zooming fit.
2. It enables the design of a versatile user interface for changing these settings..

In 2023, we integrated the Preferences API into the Readium Swift toolkit.

This addition allowed us to hide intricate implementation details associated with each navigator, such as Readium CSS for EPUB, and offer a standardized public API. While working on the user settings, we also introduced new EPUB settings for iOS that were previously unavailable. These additions include:

* custom font families
* font-weight
* text color and background color (besides the default Readium CSS themes)
* text normalization for accessibility
* reading progression and language to adjust the layout
* paragraph indent and spacing
* ligatures and hyphenation

## Other minor features and changes

## Continuing our documentation efforts to support implementers

The Readium toolkit is complex and challenging for newcomers to understand. In 2023, we continued our efforts to enhance the onboarding process for implementers by providing user guides and documentation.

### Keyboard support

The Readium mobile toolkits now support external keyboards, which enables applications to intercept keyboard shortcuts. Default mappings are provided to navigate through a publication using the arrow and space keys. This new feature is especially useful for newer devices like Chromebooks or macOS devices with Apple Silicon chips.

### HREF normalization

In Readium v2.x, a `Link` or `Locator`'s `href` could be either:

* a valid absolute URL for a streamed publication, e.g. `https://domain.com/isbn/dir/my%20chapter.html`,
* a percent-decoded path for a local archive such as an EPUB, e.g. `/dir/my chapter.html`.
* Note that it was relative to the root of the archive (`/`).

To improve the interoperability with other Readium toolkits (in particular the Readium Web Toolkits, which only work in a streaming context) Readium v3 now generates and expects valid URLs for `Locator` and `Link`'s `href`.

* `https://domain.com/isbn/dir/my%20chapter.html` is left unchanged, as it was already a valid URL.
* `/dir/my chapter.html` becomes the relative URL path `dir/my%20chapter.html`
* We dropped the `/` prefix to avoid issues when resolving to a base URL.
* Special characters are percent-encoded.

### Local HTTP server on Android

The Kotlin toolkit no longer includes a local HTTP server, enhancing the security of reading systems and protecting publications. Unfortunately, these changes cannot currently be implemented in iOS.

0 comments on commit 8d981b5

Please sign in to comment.