From 625ba037df546069cbd3dde8af17509ff5ffb73a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micka=C3=ABl=20Menu?= Date: Wed, 15 May 2024 10:15:08 +0200 Subject: [PATCH] Disable EPUB pagination with vertical text --- CHANGELOG.md | 9 ++++++++- .../readium/r2/navigator/epub/EpubPreferencesEditor.kt | 2 +- .../readium/r2/navigator/epub/EpubSettingsResolver.kt | 10 +++++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0fa7514c60..54bcfaaaa6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,14 @@ All notable changes to this project will be documented in this file. Take a look **Warning:** Features marked as *experimental* may change or be removed in a future release without notice. Use with caution. - +## [Unreleased] + +### Changed + +#### Navigator + +* EPUB: The `scroll` preference is now forced to `true` when rendering vertical text (e.g. CJK vertical). [See this discussion for the rationale](https://github.com/readium/swift-toolkit/discussions/370). + ## [3.0.0-beta.1] diff --git a/readium/navigator/src/main/java/org/readium/r2/navigator/epub/EpubPreferencesEditor.kt b/readium/navigator/src/main/java/org/readium/r2/navigator/epub/EpubPreferencesEditor.kt index 04b4772f29..7bdd1ed612 100644 --- a/readium/navigator/src/main/java/org/readium/r2/navigator/epub/EpubPreferencesEditor.kt +++ b/readium/navigator/src/main/java/org/readium/r2/navigator/epub/EpubPreferencesEditor.kt @@ -329,7 +329,7 @@ public class EpubPreferencesEditor internal constructor( PreferenceDelegate( getValue = { preferences.scroll }, getEffectiveValue = { state.settings.scroll }, - getIsEffective = { layout == EpubLayout.REFLOWABLE }, + getIsEffective = { layout == EpubLayout.REFLOWABLE && !state.settings.verticalText }, updateValue = { value -> updateValues { it.copy(scroll = value) } } ) diff --git a/readium/navigator/src/main/java/org/readium/r2/navigator/epub/EpubSettingsResolver.kt b/readium/navigator/src/main/java/org/readium/r2/navigator/epub/EpubSettingsResolver.kt index a4e3286fac..d276ce982c 100644 --- a/readium/navigator/src/main/java/org/readium/r2/navigator/epub/EpubSettingsResolver.kt +++ b/readium/navigator/src/main/java/org/readium/r2/navigator/epub/EpubSettingsResolver.kt @@ -28,6 +28,14 @@ internal class EpubSettingsResolver( val theme = preferences.theme ?: Theme.LIGHT + var scroll = preferences.scroll ?: defaults.scroll ?: false + + // / We disable pagination with vertical text, because CSS columns don't support it properly. + // / See https://github.com/readium/swift-toolkit/discussions/370 + if (verticalText) { + scroll = true + } + return EpubSettings( backgroundColor = preferences.backgroundColor, columnCount = preferences.columnCount ?: defaults.columnCount ?: ColumnCount.AUTO, @@ -45,7 +53,7 @@ internal class EpubSettingsResolver( paragraphSpacing = preferences.paragraphSpacing ?: defaults.paragraphSpacing, publisherStyles = preferences.publisherStyles ?: defaults.publisherStyles ?: true, readingProgression = readingProgression, - scroll = preferences.scroll ?: defaults.scroll ?: false, + scroll = scroll, spread = preferences.spread ?: defaults.spread ?: Spread.NEVER, textAlign = preferences.textAlign ?: defaults.textAlign, textColor = preferences.textColor,