From d1c168b419b4b90f6f0d34f702e44e2ac063deec Mon Sep 17 00:00:00 2001 From: Jiminy Panoz Date: Mon, 17 Nov 2025 16:59:01 +0100 Subject: [PATCH 01/11] Remove too aggressive selector for zoom Div is pretty much a no-go because it can be used to wrap the entire contents and then it is just too much filtering to do. --- .../user-settings-submodules/ReadiumCSS-fontSize_pref.css | 6 ------ .../user-settings-submodules/ReadiumCSS-webPubZoom_pref.css | 6 ------ package.json | 2 +- 3 files changed, 1 insertion(+), 13 deletions(-) diff --git a/css/src/modules/user-settings-submodules/ReadiumCSS-fontSize_pref.css b/css/src/modules/user-settings-submodules/ReadiumCSS-fontSize_pref.css index 03ec2f7..ef93f17 100644 --- a/css/src/modules/user-settings-submodules/ReadiumCSS-fontSize_pref.css +++ b/css/src/modules/user-settings-submodules/ReadiumCSS-fontSize_pref.css @@ -21,12 +21,6 @@ :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] figure:has(> canvas), :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] figure:has(> iframe), :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] figure:has(> audio), - :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] div:has(> img), - :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] div:has(> video), - :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] div:has(> svg), - :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] div:has(> canvas), - :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] div:has(> iframe), - :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] div:has(> audio), :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] table { zoom: calc(100% / var(--USER__fontSize)) !important; } diff --git a/css/src/modules/user-settings-submodules/ReadiumCSS-webPubZoom_pref.css b/css/src/modules/user-settings-submodules/ReadiumCSS-webPubZoom_pref.css index 9489c1e..b255513 100644 --- a/css/src/modules/user-settings-submodules/ReadiumCSS-webPubZoom_pref.css +++ b/css/src/modules/user-settings-submodules/ReadiumCSS-webPubZoom_pref.css @@ -21,12 +21,6 @@ :root:not(:--iOS-patch)[style*="--USER__zoom"] figure:has(> canvas), :root:not(:--iOS-patch)[style*="--USER__zoom"] figure:has(> iframe), :root:not(:--iOS-patch)[style*="--USER__zoom"] figure:has(> audio), - :root:not(:--iOS-patch)[style*="--USER__zoom"] div:has(> img), - :root:not(:--iOS-patch)[style*="--USER__zoom"] div:has(> video), - :root:not(:--iOS-patch)[style*="--USER__zoom"] div:has(> svg), - :root:not(:--iOS-patch)[style*="--USER__zoom"] div:has(> canvas), - :root:not(:--iOS-patch)[style*="--USER__zoom"] div:has(> iframe), - :root:not(:--iOS-patch)[style*="--USER__zoom"] div:has(> audio), :root:not(:--iOS-patch)[style*="--USER__zoom"] table { zoom: calc(100% / var(--USER__zoom)) !important; } diff --git a/package.json b/package.json index 6480c4b..5b6878b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@readium/css", "description": "A set of reference stylesheets for EPUB Reading Systems", - "version": "2.0.0-beta.22", + "version": "2.0.0-beta.23", "homepage": "https://github.com/readium/css", "license": "BSD-3-Clause", "keywords": [ From 7e1dbbda763d3abc1b77dbc87d1ae56c5eeab2b7 Mon Sep 17 00:00:00 2001 From: JayPanoz <12599652+JayPanoz@users.noreply.github.com> Date: Mon, 17 Nov 2025 16:01:23 +0000 Subject: [PATCH 02/11] Update dist --- css/dist/ReadiumCSS-after.css | 8 +------- css/dist/ReadiumCSS-before.css | 2 +- css/dist/ReadiumCSS-default.css | 2 +- css/dist/cjk-horizontal/ReadiumCSS-after.css | 8 +------- css/dist/cjk-horizontal/ReadiumCSS-before.css | 2 +- css/dist/cjk-horizontal/ReadiumCSS-default.css | 2 +- css/dist/cjk-vertical/ReadiumCSS-after.css | 8 +------- css/dist/cjk-vertical/ReadiumCSS-before.css | 2 +- css/dist/cjk-vertical/ReadiumCSS-default.css | 2 +- css/dist/rtl/ReadiumCSS-after.css | 8 +------- css/dist/rtl/ReadiumCSS-before.css | 2 +- css/dist/rtl/ReadiumCSS-default.css | 2 +- css/dist/webPub/ReadiumCSS-webPub.css | 8 +------- 13 files changed, 13 insertions(+), 43 deletions(-) diff --git a/css/dist/ReadiumCSS-after.css b/css/dist/ReadiumCSS-after.css index 57d7c3c..b07e795 100644 --- a/css/dist/ReadiumCSS-after.css +++ b/css/dist/ReadiumCSS-after.css @@ -1,5 +1,5 @@ /*! - * Readium CSS v.2.0.0-beta.22 + * Readium CSS v.2.0.0-beta.23 * Copyright (c) 2017–2025. Readium Foundation. All rights reserved. * Use of this source code is governed by a BSD-style license which is detailed in the * LICENSE file present in the project repository where this source code is maintained. @@ -309,12 +309,6 @@ body{ :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> canvas), :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> iframe), :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> audio), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> img), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> video), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> svg), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> canvas), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> iframe), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> audio), :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] table{ zoom:calc(100% / var(--USER__fontSize)) !important; } diff --git a/css/dist/ReadiumCSS-before.css b/css/dist/ReadiumCSS-before.css index 9e205d9..442444b 100644 --- a/css/dist/ReadiumCSS-before.css +++ b/css/dist/ReadiumCSS-before.css @@ -1,5 +1,5 @@ /*! - * Readium CSS v.2.0.0-beta.22 + * Readium CSS v.2.0.0-beta.23 * Copyright (c) 2017–2025. Readium Foundation. All rights reserved. * Use of this source code is governed by a BSD-style license which is detailed in the * LICENSE file present in the project repository where this source code is maintained. diff --git a/css/dist/ReadiumCSS-default.css b/css/dist/ReadiumCSS-default.css index 58a8139..a4a1e9a 100644 --- a/css/dist/ReadiumCSS-default.css +++ b/css/dist/ReadiumCSS-default.css @@ -1,5 +1,5 @@ /*! - * Readium CSS v.2.0.0-beta.22 + * Readium CSS v.2.0.0-beta.23 * Copyright (c) 2017–2025. Readium Foundation. All rights reserved. * Use of this source code is governed by a BSD-style license which is detailed in the * LICENSE file present in the project repository where this source code is maintained. diff --git a/css/dist/cjk-horizontal/ReadiumCSS-after.css b/css/dist/cjk-horizontal/ReadiumCSS-after.css index 724f104..07909bd 100644 --- a/css/dist/cjk-horizontal/ReadiumCSS-after.css +++ b/css/dist/cjk-horizontal/ReadiumCSS-after.css @@ -1,5 +1,5 @@ /*! - * Readium CSS v.2.0.0-beta.22 + * Readium CSS v.2.0.0-beta.23 * Copyright (c) 2017–2025. Readium Foundation. All rights reserved. * Use of this source code is governed by a BSD-style license which is detailed in the * LICENSE file present in the project repository where this source code is maintained. @@ -233,12 +233,6 @@ body{ :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> canvas), :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> iframe), :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> audio), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> img), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> video), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> svg), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> canvas), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> iframe), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> audio), :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] table{ zoom:calc(100% / var(--USER__fontSize)) !important; } diff --git a/css/dist/cjk-horizontal/ReadiumCSS-before.css b/css/dist/cjk-horizontal/ReadiumCSS-before.css index 9d90c47..86935a9 100644 --- a/css/dist/cjk-horizontal/ReadiumCSS-before.css +++ b/css/dist/cjk-horizontal/ReadiumCSS-before.css @@ -1,5 +1,5 @@ /*! - * Readium CSS v.2.0.0-beta.22 + * Readium CSS v.2.0.0-beta.23 * Copyright (c) 2017–2025. Readium Foundation. All rights reserved. * Use of this source code is governed by a BSD-style license which is detailed in the * LICENSE file present in the project repository where this source code is maintained. diff --git a/css/dist/cjk-horizontal/ReadiumCSS-default.css b/css/dist/cjk-horizontal/ReadiumCSS-default.css index 9394faa..4d17c7d 100644 --- a/css/dist/cjk-horizontal/ReadiumCSS-default.css +++ b/css/dist/cjk-horizontal/ReadiumCSS-default.css @@ -1,5 +1,5 @@ /*! - * Readium CSS v.2.0.0-beta.22 + * Readium CSS v.2.0.0-beta.23 * Copyright (c) 2017–2025. Readium Foundation. All rights reserved. * Use of this source code is governed by a BSD-style license which is detailed in the * LICENSE file present in the project repository where this source code is maintained. diff --git a/css/dist/cjk-vertical/ReadiumCSS-after.css b/css/dist/cjk-vertical/ReadiumCSS-after.css index 4ee1db8..2df0e41 100644 --- a/css/dist/cjk-vertical/ReadiumCSS-after.css +++ b/css/dist/cjk-vertical/ReadiumCSS-after.css @@ -1,5 +1,5 @@ /*! - * Readium CSS v.2.0.0-beta.22 + * Readium CSS v.2.0.0-beta.23 * Copyright (c) 2017–2025. Readium Foundation. All rights reserved. * Use of this source code is governed by a BSD-style license which is detailed in the * LICENSE file present in the project repository where this source code is maintained. @@ -218,12 +218,6 @@ body{ :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> canvas), :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> iframe), :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> audio), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> img), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> video), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> svg), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> canvas), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> iframe), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> audio), :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] table{ zoom:calc(100% / var(--USER__fontSize)) !important; } diff --git a/css/dist/cjk-vertical/ReadiumCSS-before.css b/css/dist/cjk-vertical/ReadiumCSS-before.css index e9b183f..9eb04eb 100644 --- a/css/dist/cjk-vertical/ReadiumCSS-before.css +++ b/css/dist/cjk-vertical/ReadiumCSS-before.css @@ -1,5 +1,5 @@ /*! - * Readium CSS v.2.0.0-beta.22 + * Readium CSS v.2.0.0-beta.23 * Copyright (c) 2017–2025. Readium Foundation. All rights reserved. * Use of this source code is governed by a BSD-style license which is detailed in the * LICENSE file present in the project repository where this source code is maintained. diff --git a/css/dist/cjk-vertical/ReadiumCSS-default.css b/css/dist/cjk-vertical/ReadiumCSS-default.css index e2c9c96..34ad0fe 100644 --- a/css/dist/cjk-vertical/ReadiumCSS-default.css +++ b/css/dist/cjk-vertical/ReadiumCSS-default.css @@ -1,5 +1,5 @@ /*! - * Readium CSS v.2.0.0-beta.22 + * Readium CSS v.2.0.0-beta.23 * Copyright (c) 2017–2025. Readium Foundation. All rights reserved. * Use of this source code is governed by a BSD-style license which is detailed in the * LICENSE file present in the project repository where this source code is maintained. diff --git a/css/dist/rtl/ReadiumCSS-after.css b/css/dist/rtl/ReadiumCSS-after.css index ed19ada..d5d1f0b 100644 --- a/css/dist/rtl/ReadiumCSS-after.css +++ b/css/dist/rtl/ReadiumCSS-after.css @@ -1,5 +1,5 @@ /*! - * Readium CSS v.2.0.0-beta.22 + * Readium CSS v.2.0.0-beta.23 * Copyright (c) 2017–2025. Readium Foundation. All rights reserved. * Use of this source code is governed by a BSD-style license which is detailed in the * LICENSE file present in the project repository where this source code is maintained. @@ -247,12 +247,6 @@ body{ :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> canvas), :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> iframe), :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> audio), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> img), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> video), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> svg), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> canvas), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> iframe), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> audio), :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] table{ zoom:calc(100% / var(--USER__fontSize)) !important; } diff --git a/css/dist/rtl/ReadiumCSS-before.css b/css/dist/rtl/ReadiumCSS-before.css index 9d90c47..86935a9 100644 --- a/css/dist/rtl/ReadiumCSS-before.css +++ b/css/dist/rtl/ReadiumCSS-before.css @@ -1,5 +1,5 @@ /*! - * Readium CSS v.2.0.0-beta.22 + * Readium CSS v.2.0.0-beta.23 * Copyright (c) 2017–2025. Readium Foundation. All rights reserved. * Use of this source code is governed by a BSD-style license which is detailed in the * LICENSE file present in the project repository where this source code is maintained. diff --git a/css/dist/rtl/ReadiumCSS-default.css b/css/dist/rtl/ReadiumCSS-default.css index 65e4a53..846e39f 100644 --- a/css/dist/rtl/ReadiumCSS-default.css +++ b/css/dist/rtl/ReadiumCSS-default.css @@ -1,5 +1,5 @@ /*! - * Readium CSS v.2.0.0-beta.22 + * Readium CSS v.2.0.0-beta.23 * Copyright (c) 2017–2025. Readium Foundation. All rights reserved. * Use of this source code is governed by a BSD-style license which is detailed in the * LICENSE file present in the project repository where this source code is maintained. diff --git a/css/dist/webPub/ReadiumCSS-webPub.css b/css/dist/webPub/ReadiumCSS-webPub.css index 4d59b84..c9183e6 100644 --- a/css/dist/webPub/ReadiumCSS-webPub.css +++ b/css/dist/webPub/ReadiumCSS-webPub.css @@ -1,5 +1,5 @@ /*! - * Readium CSS v.2.0.0-beta.22 + * Readium CSS v.2.0.0-beta.23 * Copyright (c) 2017–2025. Readium Foundation. All rights reserved. * Use of this source code is governed by a BSD-style license which is detailed in the * LICENSE file present in the project repository where this source code is maintained. @@ -113,12 +113,6 @@ :root:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] figure:has(> canvas), :root:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] figure:has(> iframe), :root:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] figure:has(> audio), - :root:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] div:has(> img), - :root:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] div:has(> video), - :root:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] div:has(> svg), - :root:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] div:has(> canvas), - :root:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] div:has(> iframe), - :root:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] div:has(> audio), :root:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] table{ zoom:calc(100% / var(--USER__zoom)) !important; } From d08bd864dd9cb4b6d01d93d4efbd6996eac29bea Mon Sep 17 00:00:00 2001 From: Jiminy Panoz Date: Tue, 18 Nov 2025 09:43:51 +0100 Subject: [PATCH 03/11] Target div with only-child That is probably the best we can do without resolving to convoluted and complex selectors. --- .../user-settings-submodules/ReadiumCSS-fontSize_pref.css | 6 ++++++ .../user-settings-submodules/ReadiumCSS-webPubZoom_pref.css | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/css/src/modules/user-settings-submodules/ReadiumCSS-fontSize_pref.css b/css/src/modules/user-settings-submodules/ReadiumCSS-fontSize_pref.css index ef93f17..6ca47f6 100644 --- a/css/src/modules/user-settings-submodules/ReadiumCSS-fontSize_pref.css +++ b/css/src/modules/user-settings-submodules/ReadiumCSS-fontSize_pref.css @@ -21,6 +21,12 @@ :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] figure:has(> canvas), :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] figure:has(> iframe), :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] figure:has(> audio), + :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] div:has(> img:only-child), + :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] div:has(> video:only-child), + :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] div:has(> svg:only-child), + :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] div:has(> canvas:only-child), + :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] div:has(> iframe:only-child), + :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] div:has(> audio:only-child), :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] table { zoom: calc(100% / var(--USER__fontSize)) !important; } diff --git a/css/src/modules/user-settings-submodules/ReadiumCSS-webPubZoom_pref.css b/css/src/modules/user-settings-submodules/ReadiumCSS-webPubZoom_pref.css index b255513..d2ad555 100644 --- a/css/src/modules/user-settings-submodules/ReadiumCSS-webPubZoom_pref.css +++ b/css/src/modules/user-settings-submodules/ReadiumCSS-webPubZoom_pref.css @@ -21,6 +21,12 @@ :root:not(:--iOS-patch)[style*="--USER__zoom"] figure:has(> canvas), :root:not(:--iOS-patch)[style*="--USER__zoom"] figure:has(> iframe), :root:not(:--iOS-patch)[style*="--USER__zoom"] figure:has(> audio), + :root:not(:--iOS-patch)[style*="--USER__zoom"] div:has(> img:only-child), + :root:not(:--iOS-patch)[style*="--USER__zoom"] div:has(> video:only-child), + :root:not(:--iOS-patch)[style*="--USER__zoom"] div:has(> svg:only-child), + :root:not(:--iOS-patch)[style*="--USER__zoom"] div:has(> canvas:only-child), + :root:not(:--iOS-patch)[style*="--USER__zoom"] div:has(> iframe:only-child), + :root:not(:--iOS-patch)[style*="--USER__zoom"] div:has(> audio:only-child), :root:not(:--iOS-patch)[style*="--USER__zoom"] table { zoom: calc(100% / var(--USER__zoom)) !important; } From c0b3a98fdba3de79a8e64321861f711a4085085f Mon Sep 17 00:00:00 2001 From: Jiminy Panoz Date: Tue, 18 Nov 2025 09:46:41 +0100 Subject: [PATCH 04/11] Introduce experimental-zoom flag --- css/ReadiumCSS-config.css | 5 ++- .../ReadiumCSS-fontSize_pref.css | 34 +++++++++---------- .../ReadiumCSS-webPubZoom_pref.css | 34 +++++++++---------- 3 files changed, 38 insertions(+), 35 deletions(-) diff --git a/css/ReadiumCSS-config.css b/css/ReadiumCSS-config.css index e713017..78e601d 100644 --- a/css/ReadiumCSS-config.css +++ b/css/ReadiumCSS-config.css @@ -47,4 +47,7 @@ /* Patch for iOS and iPadOS */ @custom-selector :--iOS-patch [style*="readium-iOSPatch-on"]; -@custom-selector :--ipadOS-patch [style*="readium-iPadOSPatch-on"]; \ No newline at end of file +@custom-selector :--ipadOS-patch [style*="readium-iPadOSPatch-on"]; + +/* Experimental/Feature flags */ +@custom-selector :--experimental-zoom [style*="readium-experimentalZoom-on"]; \ No newline at end of file diff --git a/css/src/modules/user-settings-submodules/ReadiumCSS-fontSize_pref.css b/css/src/modules/user-settings-submodules/ReadiumCSS-fontSize_pref.css index 6ca47f6..0ae61f7 100644 --- a/css/src/modules/user-settings-submodules/ReadiumCSS-fontSize_pref.css +++ b/css/src/modules/user-settings-submodules/ReadiumCSS-fontSize_pref.css @@ -15,26 +15,26 @@ } @supports selector(figure:has(> img)) { - :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] figure:has(> img), - :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] figure:has(> video), - :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] figure:has(> svg), - :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] figure:has(> canvas), - :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] figure:has(> iframe), - :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] figure:has(> audio), - :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] div:has(> img:only-child), - :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] div:has(> video:only-child), - :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] div:has(> svg:only-child), - :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] div:has(> canvas:only-child), - :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] div:has(> iframe:only-child), - :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] div:has(> audio:only-child), - :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] table { + :root:--experimental-zoom:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] figure:has(> img), + :root:--experimental-zoom:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] figure:has(> video), + :root:--experimental-zoom:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] figure:has(> svg), + :root:--experimental-zoom:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] figure:has(> canvas), + :root:--experimental-zoom:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] figure:has(> iframe), + :root:--experimental-zoom:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] figure:has(> audio), + :root:--experimental-zoom:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] div:has(> img:only-child), + :root:--experimental-zoom:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] div:has(> video:only-child), + :root:--experimental-zoom:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] div:has(> svg:only-child), + :root:--experimental-zoom:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] div:has(> canvas:only-child), + :root:--experimental-zoom:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] div:has(> iframe:only-child), + :root:--experimental-zoom:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] div:has(> audio:only-child), + :root:--experimental-zoom:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] table { zoom: calc(100% / var(--USER__fontSize)) !important; } - :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] figcaption, - :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] caption, - :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] td, - :root:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] th { + :root:--experimental-zoom:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] figcaption, + :root:--experimental-zoom:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] caption, + :root:--experimental-zoom:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] td, + :root:--experimental-zoom:not(:--deprecated-font-size):not(:--iOS-patch)[style*="--USER__fontSize"] th { zoom: var(--USER__fontSize) !important; } } diff --git a/css/src/modules/user-settings-submodules/ReadiumCSS-webPubZoom_pref.css b/css/src/modules/user-settings-submodules/ReadiumCSS-webPubZoom_pref.css index d2ad555..c2c4350 100644 --- a/css/src/modules/user-settings-submodules/ReadiumCSS-webPubZoom_pref.css +++ b/css/src/modules/user-settings-submodules/ReadiumCSS-webPubZoom_pref.css @@ -15,26 +15,26 @@ } @supports selector(figure:has(> img)) { - :root:not(:--iOS-patch)[style*="--USER__zoom"] figure:has(> img), - :root:not(:--iOS-patch)[style*="--USER__zoom"] figure:has(> video), - :root:not(:--iOS-patch)[style*="--USER__zoom"] figure:has(> svg), - :root:not(:--iOS-patch)[style*="--USER__zoom"] figure:has(> canvas), - :root:not(:--iOS-patch)[style*="--USER__zoom"] figure:has(> iframe), - :root:not(:--iOS-patch)[style*="--USER__zoom"] figure:has(> audio), - :root:not(:--iOS-patch)[style*="--USER__zoom"] div:has(> img:only-child), - :root:not(:--iOS-patch)[style*="--USER__zoom"] div:has(> video:only-child), - :root:not(:--iOS-patch)[style*="--USER__zoom"] div:has(> svg:only-child), - :root:not(:--iOS-patch)[style*="--USER__zoom"] div:has(> canvas:only-child), - :root:not(:--iOS-patch)[style*="--USER__zoom"] div:has(> iframe:only-child), - :root:not(:--iOS-patch)[style*="--USER__zoom"] div:has(> audio:only-child), - :root:not(:--iOS-patch)[style*="--USER__zoom"] table { + :root:--experimental-zoom:not(:--iOS-patch)[style*="--USER__zoom"] figure:has(> img), + :root:--experimental-zoom:not(:--iOS-patch)[style*="--USER__zoom"] figure:has(> video), + :root:--experimental-zoom:not(:--iOS-patch)[style*="--USER__zoom"] figure:has(> svg), + :root:--experimental-zoom:not(:--iOS-patch)[style*="--USER__zoom"] figure:has(> canvas), + :root:--experimental-zoom:not(:--iOS-patch)[style*="--USER__zoom"] figure:has(> iframe), + :root:--experimental-zoom:not(:--iOS-patch)[style*="--USER__zoom"] figure:has(> audio), + :root:--experimental-zoom:not(:--iOS-patch)[style*="--USER__zoom"] div:has(> img:only-child), + :root:--experimental-zoom:not(:--iOS-patch)[style*="--USER__zoom"] div:has(> video:only-child), + :root:--experimental-zoom:not(:--iOS-patch)[style*="--USER__zoom"] div:has(> svg:only-child), + :root:--experimental-zoom:not(:--iOS-patch)[style*="--USER__zoom"] div:has(> canvas:only-child), + :root:--experimental-zoom:not(:--iOS-patch)[style*="--USER__zoom"] div:has(> iframe:only-child), + :root:--experimental-zoom:not(:--iOS-patch)[style*="--USER__zoom"] div:has(> audio:only-child), + :root:--experimental-zoom:not(:--iOS-patch)[style*="--USER__zoom"] table { zoom: calc(100% / var(--USER__zoom)) !important; } - :root:not(:--iOS-patch)[style*="--USER__zoom"] figcaption, - :root:not(:--iOS-patch)[style*="--USER__zoom"] caption, - :root:not(:--iOS-patch)[style*="--USER__zoom"] td, - :root:not(:--iOS-patch)[style*="--USER__zoom"] th { + :root:--experimental-zoom:not(:--iOS-patch)[style*="--USER__zoom"] figcaption, + :root:--experimental-zoom:not(:--iOS-patch)[style*="--USER__zoom"] caption, + :root:--experimental-zoom:not(:--iOS-patch)[style*="--USER__zoom"] td, + :root:--experimental-zoom:not(:--iOS-patch)[style*="--USER__zoom"] th { zoom: var(--USER__zoom) !important; } } From 907860122691fbcbd1eada410ab9936a70a12580 Mon Sep 17 00:00:00 2001 From: JayPanoz <12599652+JayPanoz@users.noreply.github.com> Date: Tue, 18 Nov 2025 08:47:14 +0000 Subject: [PATCH 05/11] Update dist --- css/dist/ReadiumCSS-after.css | 28 ++++++++++++-------- css/dist/cjk-horizontal/ReadiumCSS-after.css | 28 ++++++++++++-------- css/dist/cjk-vertical/ReadiumCSS-after.css | 28 ++++++++++++-------- css/dist/rtl/ReadiumCSS-after.css | 28 ++++++++++++-------- css/dist/webPub/ReadiumCSS-webPub.css | 28 ++++++++++++-------- 5 files changed, 85 insertions(+), 55 deletions(-) diff --git a/css/dist/ReadiumCSS-after.css b/css/dist/ReadiumCSS-after.css index b07e795..53f5c36 100644 --- a/css/dist/ReadiumCSS-after.css +++ b/css/dist/ReadiumCSS-after.css @@ -303,20 +303,26 @@ body{ @supports selector(figure:has(> img)){ - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> img), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> video), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> svg), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> canvas), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> iframe), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> audio), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] table{ + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> img), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> video), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> svg), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> canvas), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> iframe), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> audio), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> img:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> video:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> svg:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> canvas:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> iframe:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> audio:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] table{ zoom:calc(100% / var(--USER__fontSize)) !important; } - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figcaption, - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] caption, - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] td, - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] th{ + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figcaption, + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] caption, + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] td, + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] th{ zoom:var(--USER__fontSize) !important; } } diff --git a/css/dist/cjk-horizontal/ReadiumCSS-after.css b/css/dist/cjk-horizontal/ReadiumCSS-after.css index 07909bd..f27aa91 100644 --- a/css/dist/cjk-horizontal/ReadiumCSS-after.css +++ b/css/dist/cjk-horizontal/ReadiumCSS-after.css @@ -227,20 +227,26 @@ body{ @supports selector(figure:has(> img)){ - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> img), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> video), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> svg), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> canvas), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> iframe), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> audio), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] table{ + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> img), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> video), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> svg), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> canvas), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> iframe), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> audio), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> img:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> video:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> svg:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> canvas:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> iframe:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> audio:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] table{ zoom:calc(100% / var(--USER__fontSize)) !important; } - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figcaption, - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] caption, - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] td, - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] th{ + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figcaption, + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] caption, + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] td, + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] th{ zoom:var(--USER__fontSize) !important; } } diff --git a/css/dist/cjk-vertical/ReadiumCSS-after.css b/css/dist/cjk-vertical/ReadiumCSS-after.css index 2df0e41..d108ec7 100644 --- a/css/dist/cjk-vertical/ReadiumCSS-after.css +++ b/css/dist/cjk-vertical/ReadiumCSS-after.css @@ -212,20 +212,26 @@ body{ @supports selector(figure:has(> img)){ - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> img), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> video), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> svg), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> canvas), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> iframe), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> audio), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] table{ + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> img), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> video), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> svg), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> canvas), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> iframe), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> audio), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> img:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> video:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> svg:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> canvas:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> iframe:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> audio:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] table{ zoom:calc(100% / var(--USER__fontSize)) !important; } - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figcaption, - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] caption, - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] td, - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] th{ + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figcaption, + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] caption, + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] td, + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] th{ zoom:var(--USER__fontSize) !important; } } diff --git a/css/dist/rtl/ReadiumCSS-after.css b/css/dist/rtl/ReadiumCSS-after.css index d5d1f0b..daaa065 100644 --- a/css/dist/rtl/ReadiumCSS-after.css +++ b/css/dist/rtl/ReadiumCSS-after.css @@ -241,20 +241,26 @@ body{ @supports selector(figure:has(> img)){ - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> img), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> video), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> svg), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> canvas), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> iframe), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> audio), - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] table{ + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> img), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> video), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> svg), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> canvas), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> iframe), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figure:has(> audio), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> img:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> video:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> svg:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> canvas:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> iframe:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] div:has(> audio:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] table{ zoom:calc(100% / var(--USER__fontSize)) !important; } - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figcaption, - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] caption, - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] td, - :root:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] th{ + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] figcaption, + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] caption, + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] td, + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] th{ zoom:var(--USER__fontSize) !important; } } diff --git a/css/dist/webPub/ReadiumCSS-webPub.css b/css/dist/webPub/ReadiumCSS-webPub.css index c9183e6..a877602 100644 --- a/css/dist/webPub/ReadiumCSS-webPub.css +++ b/css/dist/webPub/ReadiumCSS-webPub.css @@ -107,20 +107,26 @@ @supports selector(figure:has(> img)){ - :root:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] figure:has(> img), - :root:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] figure:has(> video), - :root:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] figure:has(> svg), - :root:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] figure:has(> canvas), - :root:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] figure:has(> iframe), - :root:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] figure:has(> audio), - :root:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] table{ + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] figure:has(> img), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] figure:has(> video), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] figure:has(> svg), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] figure:has(> canvas), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] figure:has(> iframe), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] figure:has(> audio), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] div:has(> img:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] div:has(> video:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] div:has(> svg:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] div:has(> canvas:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] div:has(> iframe:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] div:has(> audio:only-child), + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] table{ zoom:calc(100% / var(--USER__zoom)) !important; } - :root:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] figcaption, - :root:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] caption, - :root:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] td, - :root:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] th{ + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] figcaption, + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] caption, + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] td, + :root[style*="readium-experimentalZoom-on"]:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] th{ zoom:var(--USER__zoom) !important; } } From ea339b7435b8255cde081bb0a5c380055f8b1be0 Mon Sep 17 00:00:00 2001 From: Jiminy Panoz Date: Mon, 24 Nov 2025 13:42:50 +0100 Subject: [PATCH 06/11] Add flag for experimental header filtering --- css/ReadiumCSS-config.css | 3 ++- .../user-settings-submodules/ReadiumCSS-paraIndent_pref.css | 3 ++- .../user-settings-submodules/ReadiumCSS-textAlign_pref.css | 5 +++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/css/ReadiumCSS-config.css b/css/ReadiumCSS-config.css index 78e601d..b6b74c9 100644 --- a/css/ReadiumCSS-config.css +++ b/css/ReadiumCSS-config.css @@ -50,4 +50,5 @@ @custom-selector :--ipadOS-patch [style*="readium-iPadOSPatch-on"]; /* Experimental/Feature flags */ -@custom-selector :--experimental-zoom [style*="readium-experimentalZoom-on"]; \ No newline at end of file +@custom-selector :--experimental-zoom [style*="readium-experimentalZoom-on"]; +@custom-selector :--experimental-header-filtering [style*="readium-experimentalHeaderFiltering-on"] \ No newline at end of file diff --git a/css/src/modules/user-settings-submodules/ReadiumCSS-paraIndent_pref.css b/css/src/modules/user-settings-submodules/ReadiumCSS-paraIndent_pref.css index fcdfe66..d724b53 100644 --- a/css/src/modules/user-settings-submodules/ReadiumCSS-paraIndent_pref.css +++ b/css/src/modules/user-settings-submodules/ReadiumCSS-paraIndent_pref.css @@ -6,7 +6,8 @@ Repo: https://github.com/readium/css */ -:root[style*="--USER__paraIndent"] p:not([class*="title"]):not(blockquote p):not(figcaption p):not(header p):not(hgroup p):not(div:has(+ *) > h1 + p):not(div:has(+ *) > p:has(+ h1)) { +:root[style*="--USER__paraIndent"] p:not(blockquote p):not(figcaption p):not(header p):not(hgroup p), +:root[style*="--USER__paraIndent"]:--experimental-header-filtering p:not([class*="title"]):not(div:has(+ *) > h1 + p):not(div:has(+ *) > p:has(+ h1)) { text-indent: var(--USER__paraIndent) !important; } diff --git a/css/src/modules/user-settings-submodules/ReadiumCSS-textAlign_pref.css b/css/src/modules/user-settings-submodules/ReadiumCSS-textAlign_pref.css index ce29ff1..267d62c 100644 --- a/css/src/modules/user-settings-submodules/ReadiumCSS-textAlign_pref.css +++ b/css/src/modules/user-settings-submodules/ReadiumCSS-textAlign_pref.css @@ -11,9 +11,10 @@ } :root[style*="--USER__textAlign"] body, -:root[style*="--USER__textAlign"] p:not([class*="title"]):not(blockquote p):not(figcaption p):not(header p):not(hgroup p):not(div:has(+ *) > h1 + p):not(div:has(+ *) > p:has(+ h1)), +:root[style*="--USER__textAlign"] p:not(blockquote p):not(figcaption p):not(header p):not(hgroup p), :root[style*="--USER__textAlign"] li, -:root[style*="--USER__textAlign"] dd { +:root[style*="--USER__textAlign"] dd, +:root[style*="--USER__textAlign"]:--experimental-header-filtering p:not([class*="title"]):not(div:has(+ *) > h1 + p):not(div:has(+ *) > p:has(+ h1)) { text-align: var(--USER__textAlign) !important; -moz-text-align-last: auto !important; -epub-text-align-last: auto !important; From 47a71bbf1b41fc86e9957e1cc9739b3e8101c944 Mon Sep 17 00:00:00 2001 From: JayPanoz <12599652+JayPanoz@users.noreply.github.com> Date: Mon, 24 Nov 2025 12:43:31 +0000 Subject: [PATCH 07/11] Update dist --- css/dist/ReadiumCSS-after.css | 8 +++++--- css/dist/rtl/ReadiumCSS-after.css | 8 +++++--- css/dist/webPub/ReadiumCSS-webPub.css | 8 +++++--- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/css/dist/ReadiumCSS-after.css b/css/dist/ReadiumCSS-after.css index 53f5c36..4b3c7a5 100644 --- a/css/dist/ReadiumCSS-after.css +++ b/css/dist/ReadiumCSS-after.css @@ -214,9 +214,10 @@ body{ } :root[style*="--USER__textAlign"] body, -:root[style*="--USER__textAlign"] p:not([class*="title"]):not(blockquote p):not(figcaption p):not(header p):not(hgroup p):not(div:has(+ *) > h1 + p):not(div:has(+ *) > p:has(+ h1)), +:root[style*="--USER__textAlign"] p:not(blockquote p):not(figcaption p):not(header p):not(hgroup p), :root[style*="--USER__textAlign"] li, -:root[style*="--USER__textAlign"] dd{ +:root[style*="--USER__textAlign"] dd, +:root[style*="--USER__textAlign"][style*="readium-experimentalHeaderFiltering-on"] p:not([class*="title"]):not(div:has(+ *) > h1 + p):not(div:has(+ *) > p:has(+ h1)){ text-align:var(--USER__textAlign) !important; -moz-text-align-last:auto !important; -epub-text-align-last:auto !important; @@ -354,7 +355,8 @@ body{ margin-bottom:var(--USER__paraSpacing) !important; } -:root[style*="--USER__paraIndent"] p:not([class*="title"]):not(blockquote p):not(figcaption p):not(header p):not(hgroup p):not(div:has(+ *) > h1 + p):not(div:has(+ *) > p:has(+ h1)){ +:root[style*="--USER__paraIndent"] p:not(blockquote p):not(figcaption p):not(header p):not(hgroup p), +:root[style*="--USER__paraIndent"][style*="readium-experimentalHeaderFiltering-on"] p:not([class*="title"]):not(div:has(+ *) > h1 + p):not(div:has(+ *) > p:has(+ h1)){ text-indent:var(--USER__paraIndent) !important; } diff --git a/css/dist/rtl/ReadiumCSS-after.css b/css/dist/rtl/ReadiumCSS-after.css index daaa065..b85c717 100644 --- a/css/dist/rtl/ReadiumCSS-after.css +++ b/css/dist/rtl/ReadiumCSS-after.css @@ -214,9 +214,10 @@ body{ } :root[style*="--USER__textAlign"] body, -:root[style*="--USER__textAlign"] p:not([class*="title"]):not(blockquote p):not(figcaption p):not(header p):not(hgroup p):not(div:has(+ *) > h1 + p):not(div:has(+ *) > p:has(+ h1)), +:root[style*="--USER__textAlign"] p:not(blockquote p):not(figcaption p):not(header p):not(hgroup p), :root[style*="--USER__textAlign"] li, -:root[style*="--USER__textAlign"] dd{ +:root[style*="--USER__textAlign"] dd, +:root[style*="--USER__textAlign"][style*="readium-experimentalHeaderFiltering-on"] p:not([class*="title"]):not(div:has(+ *) > h1 + p):not(div:has(+ *) > p:has(+ h1)){ text-align:var(--USER__textAlign) !important; -moz-text-align-last:auto !important; -epub-text-align-last:auto !important; @@ -292,7 +293,8 @@ body{ margin-bottom:var(--USER__paraSpacing) !important; } -:root[style*="--USER__paraIndent"] p:not([class*="title"]):not(blockquote p):not(figcaption p):not(header p):not(hgroup p):not(div:has(+ *) > h1 + p):not(div:has(+ *) > p:has(+ h1)){ +:root[style*="--USER__paraIndent"] p:not(blockquote p):not(figcaption p):not(header p):not(hgroup p), +:root[style*="--USER__paraIndent"][style*="readium-experimentalHeaderFiltering-on"] p:not([class*="title"]):not(div:has(+ *) > h1 + p):not(div:has(+ *) > p:has(+ h1)){ text-indent:var(--USER__paraIndent) !important; } diff --git a/css/dist/webPub/ReadiumCSS-webPub.css b/css/dist/webPub/ReadiumCSS-webPub.css index a877602..e7d309e 100644 --- a/css/dist/webPub/ReadiumCSS-webPub.css +++ b/css/dist/webPub/ReadiumCSS-webPub.css @@ -18,9 +18,10 @@ } :root[style*="--USER__textAlign"] body, -:root[style*="--USER__textAlign"] p:not([class*="title"]):not(blockquote p):not(figcaption p):not(header p):not(hgroup p):not(div:has(+ *) > h1 + p):not(div:has(+ *) > p:has(+ h1)), +:root[style*="--USER__textAlign"] p:not(blockquote p):not(figcaption p):not(header p):not(hgroup p), :root[style*="--USER__textAlign"] li, -:root[style*="--USER__textAlign"] dd{ +:root[style*="--USER__textAlign"] dd, +:root[style*="--USER__textAlign"][style*="readium-experimentalHeaderFiltering-on"] p:not([class*="title"]):not(div:has(+ *) > h1 + p):not(div:has(+ *) > p:has(+ h1)){ text-align:var(--USER__textAlign) !important; -moz-text-align-last:auto !important; -epub-text-align-last:auto !important; @@ -147,7 +148,8 @@ margin-bottom:var(--USER__paraSpacing) !important; } -:root[style*="--USER__paraIndent"] p:not([class*="title"]):not(blockquote p):not(figcaption p):not(header p):not(hgroup p):not(div:has(+ *) > h1 + p):not(div:has(+ *) > p:has(+ h1)){ +:root[style*="--USER__paraIndent"] p:not(blockquote p):not(figcaption p):not(header p):not(hgroup p), +:root[style*="--USER__paraIndent"][style*="readium-experimentalHeaderFiltering-on"] p:not([class*="title"]):not(div:has(+ *) > h1 + p):not(div:has(+ *) > p:has(+ h1)){ text-indent:var(--USER__paraIndent) !important; } From 49d1f549185efc4aa3ac6bedb5e11b5011b3851a Mon Sep 17 00:00:00 2001 From: Jiminy Panoz Date: Mon, 24 Nov 2025 14:00:14 +0100 Subject: [PATCH 08/11] Update docs --- docs/CSS12-user_prefs.md | 24 +++++++++++++++ docs/CSS28-migration_guide.md | 11 ++++++- docs/ReadiumCSS_docs.epub | Bin 3686926 -> 3687385 bytes .../OEBPS/Text/Section-012.xhtml | 28 ++++++++++++++---- .../OEBPS/Text/Section-028.xhtml | 11 +++++++ docs/ReadiumCSS_docs/OEBPS/Text/nav.xhtml | 3 ++ docs/ReadiumCSS_docs/OEBPS/toc.ncx | 6 ++++ 7 files changed, 77 insertions(+), 6 deletions(-) diff --git a/docs/CSS12-user_prefs.md b/docs/CSS12-user_prefs.md index 5146503..56ebe2f 100644 --- a/docs/CSS12-user_prefs.md +++ b/docs/CSS12-user_prefs.md @@ -169,6 +169,30 @@ Supported value: `readium-noRuby-on` To disable the hiding and show ruby annotations, you can either set an empty string as a value of remove the property. +### Experimental Features Flags + +Experimental flags are used to opt-in to and test improvements to existing features. That way they can also be disabled without having to wait on a quickfix in case they are creating new issues. + +``` +--RS__experimentalHeaderFiltering +``` + +Supported value: `readium-experimentalHeaderFiltering-on` + +This attempts to filter out paragraphs that are implicitly headings or part of headers. + +To disable the experimental header filtering, you can either set an empty string as a value or remove the property. + +``` +--RS__experimentalZoom +``` + +Supported value: `readium-experimentalZoom-on` + +This attempts to filter out elements that are sized using viewport units and should not be scaled directly. + +To disable the experimental zoom, you can either set an empty string as a value or remove the property. + ## List of variables ### Layout diff --git a/docs/CSS28-migration_guide.md b/docs/CSS28-migration_guide.md index e731dfb..3729370 100644 --- a/docs/CSS28-migration_guide.md +++ b/docs/CSS28-migration_guide.md @@ -257,4 +257,13 @@ As of version `2.0.0-beta.22`, ReadiumCSS provides an experimental stylesheet fo As well as the patching of zoom for iOS and iPadOS. **Note there is no fallback in case the `zoom` CSS property is not supported.** -Typically, you would use zoom for all web publications, and the rest of the styles if the web publication’s accessibility metadata contains feature `displayTransformability`. \ No newline at end of file +Typically, you would use zoom for all web publications, and the rest of the styles if the web publication’s accessibility metadata contains feature `displayTransformability`. + +## Experimental Features Flags + +As of version `2.0.0-beta.23`, ReadiumCSS provides flags as a way to opt-in to and test improvements to existing features. That way they can also be disabled without having to wait on a quickfix in case they are creating new issues. + +- `--RS__experimentalHeaderFiltering: readium-experimentalHeaderFiltering-on`: attempts to filter out paragraphs that are implicitly headings or part of headers +- `--RS__experimentalZoom: readium-experimentalZoom-on`: attemps to filter out elements that are sized using viewport units and should not be scaled directly + +These flags are expected to be found on `:root`. \ No newline at end of file diff --git a/docs/ReadiumCSS_docs.epub b/docs/ReadiumCSS_docs.epub index 10579c1a2ef4688caf788ecc9e55b31f38f04603..9eeebac483113f1b9a3e154ff700e72c449dc1c4 100644 GIT binary patch delta 13795 zcmZ8|b8uzN_V$Tw+qP|Il8J3jG_iGp6MKRaO(wQ&+Y=iT8xv#l&3oVb`{RDQs%!UJ z{j6vA>h9`Y)oXP;XcuBNVizI^1Ob8sL4lw_Fd$eE90(qS073*IfsjEcAXE?<2pxn0 z!USP~ut7K=To4`zA4C8m1QCIVK_nnj5E+OZL;<1%QGuvIG$2|K9f%&p0Ad6&ftW!o zAXX3?h#kZM;skMlxIsLPyiahD(7=`#INr|~|5OwScmtq;Zcg3?oz7lVjc5P>l05)` z4FCXCWF%EJ*fg!Y-Ps(?JXyVM+`l?>85y{(H)96Q)QEc+r({@6v`-L>kc>pRd0Z@g z77jQSr>3TaMZg7oWm0)ZJ1PU#^z5HQ7CKUF#>3oEL|Lf4;KmGX;R(LnP~hyxGfY`M z)Guy|*fRw8@d$EM)tnQiFJ1Kcm27)MNv>B0XQW95)JRX{`&JaL65Fr73FPigEsg_oQlE zxPNyV-KpZ%r|ylp^s!6^#PohB-6I{~gU{K-92%TR<3;Lo?@zbIXc&cQ4 z(H9BKPSR)*M)|SMVv^SXZdz6y2>O`C@mZFyGum(x_}&oEA_AO2Yk%9HJ}n@VYco%R z@L3b$KVIs~#?e#42uC#hH0WwLf%v5prLiM0g7%U1e}foMOP+VD9gGFc^6cxQ*&_2}hwl z;6s4~^^5n4V4#*WMshmP zUP{|nEy8fU)WiQXR|?Q?t|pzsbRtADKKOgI+Q6s>e4TTRJM1>Op14ZBm z7bS_(>~4`>yLQH5F)}9$L!J;;?WOQyGdy*Q2lNw&QW(N%-;2cxfVB zhC$+n2&r6Rk4;mBE^9d$JL7&4jU#yDZZk5dRYH8NuW@A@x& zRcD7wH08Lhm#}vAAS3Yd$0Ea^E_L zu0_ryxnS%tqU25McK3bM$9~)M7VIec&B7$>8v%}f<17Y(3P{cB4W-!~NwhcGjrRdK z97o|Zw2*7gNCqum29qfoJ=#u5>@CEw|WuGi-Xo*ZU%@|bbh zj)Ydo)PuzC*gMY|5^dcEiS%t$Y$lCn=apk&@?AOiVWh7N7%sSI&Z5hSe+irv#g)RO(O^5d zfJIlj<42d=6Jl;0r1%L-BUCg4X^XYuOmuz)Zmj^$-tmHpPfOjVa@J9tRIt-trUjJ* zzcc(TZwrcAyTNSa?a7Kt|UEo zrT!<7x>ZG(?LHv6whvDyFhQ=T+XKTWTaqD-phL-ZxRe2#o+_iwSh3tO13?}_+o#)f z)k`0~ymmm>TuN?K2Cdw#!Ct8-1cca~ewyK>L_w77-CnT~t4P0mUr)Pk;J6(kbe8qu1m;m=Y+yLka% zT)$+zs^{S}IV>0I07{8)LX&;pLimXFOU(_SP#qFUeP2zmWB1YWfz zk}7L^Ql1-?{k_tyqT>#RsM5P4ZoaS{jg=sQ+EuG8<7En$aH|>`lPpFWg5TINd_nPs zY0dPjA9s|I&%zJ#{lFrre#}CLdkqo;~*a0MqGqZ4`qv7L3{I0pYND6<|KMRUbgr)U- zwmGU(p{#bQg4Uju<6sh}Uc#5hSi(f{uK~J`kCNuA59R4FxZMcDN8`P|gAY5v1e1G? zvL18s4CuGys>>lnuPp|cJ1+m2ZC(QPP${zwySD>E&-|!q zyACXoDrcwC>ovDHMoxGVHjo;CM3Kievd^38m@xt<(flit**>3=`2eUrS<-HNRiHs) zpQ#+~px6&v^rk(E6BZ%+a#yHnV+G|fp@MX><>TVenNUMxAw?mw9OD2kK$`oEn&#LH zj0Qhc_;MON=Uv|wtP=5`7wV%WN~7xVnM5d)((C<(WeW==SjJ*Lv~VlnnvO(aRExJ{ zS)@GeX5kIex7*5#@=1mO8!@KRn>^bK`f zd&NLSZ!b(&E$>gT=O;tJXIJ9;@65fY*QT5JT~>VIT^$FSA+WsLUO$A@Zk9|iJdQu+ zl6(s#1d@Q}51mF`Y6~(WddP77tKjYL0SNG7j9hp&B3FhZrvzK5 zwK~R>7JMyui9sA|>QWYVHsaXCJ6y6iwq}y`4KaIjd=9=7Qzk&*TUnJ@kBbY+Z+j`C zwG>$c&M?cTu8TYbAH(ucU{G_#pOY$1r&?8tKS)XKo_UiC#v2EVSe0M5kK@3{2hPHL zmNR?yj}UM!W@;OcVwbhtR_iUW>3S=`vo(6H>B&w3Vj4y$}<3-%qo9<~M)SD9qOJspIIyB@u8ERA8Fd?Tx+|}`3#NocEbGb$qN?Q&E-?7t2{wQ z3Qj!Iq)L!!T60zvMSZ{8Nk$@j2@W~lK!I6(oiqAB10FHjj02+JN-Qe0O=M?fr&5{4 zBSH#{aY$-`1lq|D3N5b{KPok#7$TZ)&9FW2APCmwcp@|qF3+Pm{W#Qo-cyw4h@1qr zVEdhaJ&-i*+9=_DpX5!}(x9$| z@g&WWvCz=_d86nSH5*<4s-VCPds*nPVZ9!qLuY;yh;WD&508Oa8S0A1`EsIQO9_cQ zr*K~GDi7O4gEhG^WVpVtX{1NL*`dRmp>1?}#w0N>zHDk?@o@QdwhJy05*ONm6^d=4 z{zwB3R=_cy zR@*#?`Y^^KO6}|f)taegh+?0|f*iHI-75!Gr}J<(unVFp z{eIe*ADOK5S@b5z8o$byrGzK3)i$DPtJ2-l`2qQ3nh(Kg(l@<8mrhbnQSvQkekDiA z3#jr{{_RG8K(r4x2VWpa7Mb#b!2xL+8M>&KQ1!ag`?-mq&p|PJn(^z%srgQ#C9z{t zT`UjTkFY8@MsZNb z@@bC-a*D*|CvDoCD-+OWetvv-l!dK4;l`^|hlDJt@zVxfd9!x(*0<|sTWE<*#~8FE zwEG!4EMtGhmyjK=`zjAPjyu^=GHdp0iaHTUX{tJDd$n#nraz_$($km8ZI~=}q!CbJ zx6EqcS1gZ{jKp zEz#{@fNptbcwQr3q;cS2M#;`y+J0}>x zY=&7ZauYiW`tp5J;<~I_30AU+fA<$?lWR7D$2@Y>JDFquvDwh{2SZtDjo>uYxA|lk z&Vn_u965VH0UZW81wl3kSg0{93JI|jRKl^5s+=_tHa*!JCv1K2{Byup$=)5}7JI$fmtx3C7tTgHmw ziNmXpAF@4R@|D-23h_00(hVJE&LfD}6cl8{tu5ErZ|23TJk(8<_lblbYsg+XkQy)A zEtl_|NcfzWmB{H8uCJHy29r=7{(z~HOPWu2*(%u)1o@%*xrUIhxBcg+-5&9~KSB;6eYXq)*?DkSBQC8aT6 zkqTSV2s-D2j!k#P)8WCNd9i)fr!8)gZ@wq;z@!sG5x>ov#9U68I{GfD4qWmyoE?RU zP-!!1)oPyw9kG`?0LAZ-qn4CY^HHw2;XiOK0XDqDBB)M(Phfw_s2i6M0|3PSV6|di zK46Bq;OwL7Td&yF8*BPw4-JTQeR+b>6Apyp zG%}1*w?gx4*0&!2oLcUiuRm?tq`0Xm7Zqlt@`)#Kg$Ol)^|+|uWs^cQqDdv;iTd%g z9Ia7v0s@j=swM!Kr@{YS>i{sV2LXEycn~Wsu9efJA1j2h`EsgnMaPXE{#j+ZI~e0v ze;hiyq~RRA?gKP#(X#ay;5q;Kk3k?A*;GZ@E}1(AFHlesN|bp z(D_^fS!IwX2c?>AZQ){r{K<}V@CWvKb^?&;k#!6(IVw-Tqo9lcDXHYS2!K9@*&IQs zaRHHhF*GqTkr1s*8K%SfL@dJ+0X$-5sOGd^`k(Yy2-TFWXmAlx4SF${)aZe!(c|#x zk~4=HmDrv6gLrH`Att*=KAa@CzKtswq&y+AWuUL>BNvkpUAz;9WEI`E{M`Keb& zC(s`RSHiSwh7ex3Yll$cH@Oo1%I#g-NQGQoDpFNB$LC+IzO@Jj_}z{H@20zNldI;C z67SwKvD3vf%!v)4*5F)`*JZcdu&M3h&trx(=`=9W)$y7I{C*_zsRKh42zzYUw&LOD?^t~X=psu_ONmY6^N{L^EL?p*dq7!Hv(nmCJ@ z3yIn_w_18N9fFAYIGtVD2j7{LgY+^bG49yVj1dsZ=skkqs7hSAYe~O9Hl~hUJZV+@ zAxY=pV&cZpaufW$Od6QrfjQkVgxY>+C5%yd*nsWLg+oxQJD7-)hKy~h1=|R(j+}>z zgvZhsgk{%DC;WO7@d2|@LO4U)Kn8s3>5kOCr>CCQx_1eRGUKFBD~<{uoFl>fM0~A+ zrf9*)Hk6s3;4>nHA=3rUg%Y@q;d?$BFa|xIMEoJ(QZp-WX$OiMpMGz94PwXGuSb@H zlzm|j4;%^4L;_;7#C`%cy4dReDzHHq)GnLG=dMKwp2a}BA4m{52UUDCR^wZnb54AVeXLEUf;;x8eJougdaBukMtvdk zM~_daSGE=W?Cwfy;Su@`fc=9eyF61c^Kcn*1C1nz=-Y91*xGb_ld~RXJ$7z*w8I<@O2KD>%R*k+=g9uk5H39`sx+hxS%p zom0=jdl&EWVe)Qy#a~J#a}2emnFg~{^O%<^G0R8hk}m>pR<{KvMYLqSKir3p5eNOY zoZ7s?^_M4pK8nx&V$$Wn!gJ=yCLL>Na+rOV%2Fm|mK;Bb*B_$mYWTumStVweZYa}o zC$CI%EmI7vd7^ESlE}6=)I(GxJ5DY&rExRJ*a#-9W)OJtVtclNu_2sdN=MSf1Hpd9 z`ZFe2lHKU!g^p1>9;UAB5G3Fdg*yyG=I`w94;+11ATTuh5Lg~dt+LeXLmAeN5vKYY z^?1nYmN$NvQjm*Pc>wGYv(5Vy8=XJJ)VXY>xuOV{?&3ZEhgH5by=-ql(5PA2|3g^02 zwd(&6(iHvHuNca~qb)P%?+)OZo+hQJw|T@($6OdmD#vYYBgp12Vp^i5$xRtX%j&1b zqzMJ~@!_eM^aM;)xEpKBC;wiZOwm$ZB7-ibMe!1kK~>tdy{xG^>P&qJd+?k#e(8ud zy%87ANE?NP^Hg*vEvqNj|Cu?O3a!T^7L3YC85Z&>j?mqtMHG)AA~3j>dA zXM&|`nCc(~ayy~%+2sgqJQG)jWhrT#1dt4XHn4K%|v9!Nb+{}Icl#%5PH~!LI z1o$fM6t@_TQctIDuNp`)vlLtj&5W~j(M5`#H}V8 zK|T%`^~=}k=|sn4M+&*bnQmY*9|7rQhc`=rZ*+C}ikfjrXtu%@P#oDp)S8UbZxQiA zQ+FyEhbFKuhH>%~m$&+j8coGCElq&=7c~w;(FB>(Z3MP=fB2{6R{FHZY6EHJ!FX9w zkXv3stI4=;&{s*=)|@bQPcaa8tB<^D2ZS)99Y*K#zNx~iLZ?o2gdH!j30fiv*{3-Jq;e0Jou&kc4#fwEGn z72-t_BP{T$oJwP&sNJqWfMzPYH4~UPt~FX_Z`Ct&tSl|53d zz|Eo3N!3fSP|L%e3xX4v+cX<7Be)4W?iX0P=o3%nFG>E_CB ze-J!rC_(Df?+`UPiESmEWVdu$J$(Yk-T^pu` z!QbJmj66{uw-2qrbVh-_R*NMws`Gef{0?& z-1oxSFTC1137FmWl|KZvd^xMSsc7(6V|LlnBbuZ3J!PE*T?tyy=ARmemDPz^_mGv4 zo(AfOWOHbNH1NaNL-h<&ow)d++mS%yu1GR1%H=Rvsp{?MZEYkhm_!oBL_UEe>K_K} zr{86TDVjGOikDskLS8W+-=G?Q{E#-dPz~^}h6^tjbIk~f*XM~L$JKC07v$aINIyGu z#~v?+1c|J)Dice0wCP0f{*1`r1tN2aI+EJohfPcYM}%qu-*%lkV&odRt;4Gzl)gC> z{c$0s)-UC1P(4sHSn4J_qkNEi?s`uDTuXgA zNm~p(#3E)`)QWR60J?rV0k-+zWA*sTempZbbT7Nn6+r2g1hiuFWL42z$GM(-Nmb0U zRF8NEhO9PLrVYH6(j-GfE*nQPAR0S$tJ@8avk%`gqob(dQ6O9R9_#S!ap+l@n=3JD znjI$Fiknx3%v4S6Mk3>~eF=(QrEJ2{B_DNCmPO1cXYCLAEe*nM)zn`RZLr0AY}Z6Z zAQ~=(`pH!t^|abo$8I!TT)uNhI;r?Z3c`N@u3r9<@Hd`OSa+Ii3zPriO~Hp^Sxh%n z4t-=4QD`D8RJ2ZK-F$}w@xZ&-mE-TE41EB0eqFDO+zCm@A2`pivMBZ( zu?Sp{>~B~Gv!P1G!yh1r$z@~!AnWzPW+IEWi4|u-4{%KP9cjUGabfsf6ZgZ?2I<^D zt~?;4a)j$86~Yz-4H)y%NS~k_PY*ViQ9TVYS0O|)3iX^w^L3|b;#=5c-}8KOvJ~ad zk`rl>p10F5{@xz(&l5gYuH=D1z;ImnY<5NU*gRtmZ>V2XwhV#t9bfPuG3zHp!pXE< z=TM`P64`7bC(MxB)?nm_yHqUXM7CUj+gsVcH{7nQn!cxYK@k`}QS#{#b})!4a*vd+70&S^)rVyY8@aBvz$ixh zr!~2G?M^kSJJto;B7TQ!jP>{MbQ$NuaTGJZDGoUoPmONorF2)otaE&iV{9yQqHSCE-B3}88 z^rm=2^-IiLq}h~%9-~d#D6l%>57h)>_7J>CZdXFq-WMDClH8B-Vr@n`T^n@)>eq4_ zqB+0430~;N&gZx=cpKveEwQ2nU=XcccrfavHJIf~xZ%iacr@z(w1LTC$~kvh+jJU> zGEbpI)wuXAUTt32hca1JXG?GX9cRz$lq3?^ANPj`c!Kn914^4-IZZud_u#3PW$+a2 z`t(I_<0Tq~!ub5K$c-UgpTG%h9ymy?`aeZIpi?#7$UT_D z(BZZc!|8?%^;A7>P(6#>ynn0nr&q*d&<2=&lh&WhuD9AY>Cue`uAdOs)cJ13MsX0Q=b=ls48j+Q<3{5kM(xMVoarJ^;GfkExiWH*&De9 zo0vpqMn{fy7&UBP@rZm#?RC8Jij%eUUryjp-dC+&PggvAVYSCXJ(~5cI-1(w87IS3 z%S+bvpQrmOXNLgrT}6H!a8w#v6n&I)J!1;tv<5$Cd(Ikwo5fyo=(SuK8%5Ji2mroy zUhH_k*6W(>jKKsQ1>(^cJjDZ|q;dC~c<0k72ceXl5$b10j+b3FyaIzU7Kcu#7P86t zsU`!YDmt@#+8IZ>I`N;1aLs*fbtZtF2qU@788z;(Mm~QZJ~4^T{VmORSlU$?@!k9@ z4e{@94G5(`THEs)g`eCVrr+=af3ymd2EM68D2wb$?+TR;I)-0h|GK`NcI=?9MBfmL zw9!BoEPj{kp&jKejuf_n-Y&9h$+5ckM%-5cUGBn7LMcmyB-?z2p5{+%LVAu z5Zz*aTf~l(90}gVgAt;V%uKhzQ!MM#jgaE)izCk>Fqb3)BcXO@lN|3QjVo|A!)M{Dt?4iv!nL&1^<_EmpZ%(`~F-v)|oEst``IXJDWTY*fm}Dd^z~}wF zy?d{tXn9AuAG+k8<5HLrpQDrb_%LT(9BIgp_36^@1XPMsXto@S8WVLm!GyHRM|SX% zK=fFMKM1e>y-o|waET%=sc@ZbyKLVjZ%DhSf`4Hf%+vLBa`}YR(jNfUVag#3Z46q2 zHaaeD*5I@ceBasQA>8BD_*SNy?WxWJM^LK$#!Czy-HXSen^s+3VKoFH7z*0vz<{18KUMjIiRe}AK^yCMDYMkw=OX_RR> zM4daMWBvK|o8flruKa?rc{uYGv1L_G*d!VFg+}}jt|#qJrMToSj@$${0l-sBuu{3K zx;MO3bBuwr8RuT)rKi%|P7ci#;BQvOQh^3iga9%L;i#hA(%OCh}?YSTXes}*NZx#3Ugkggk4BmDSNjS z-n&FMU`IN^LVK;75Qkkmt?)&4tt%bU*JC%@_>KqN&coGgHuF;BOA}F02Xq+tvPcX7V`#4k!aBd&-o; z-&_1PY65NYFVCH%;(bT4x`BvzE(C}|X?n^!=ky}jC-sQ}c;@aNMG^Ly>cRegvtW}X zLR`=J(eVZ*y<;PdTcK_qXPb4R7PMk(0m{EWSB($>F4wywvt=F@^EOLt_(Ceew88JidtQ)B zGfar>FE`|ZW(w-H7a(+dS)sHHIA51Bmqf<4-MibGV5Upk4Wd?WmL$eRi33KXId;6b z3`4x_bcvO~aUovd)aK&iRl!>JxZ^s_=l32P+#e09jVpmhS(G2DHvVjVkIH~hiUa`%Z1EHVHyE2@akv03$inet2HDS2Jf8H+rTkFbr@*;cOQUVf0Gfy;hz5oH zQXdOBDro`1uZg%_S#`K)Ez#$PErCIEuv9#~Do|4pm3f4gatwiU_5s?1TD4V^9p*V$ zw#UR&T6r#6HTgq(*3|}|xbP2*xIPmP9ah+q`@`**mR**Q z#idG8Tby2V(WlRXc%}{OV&&}fzz z;r4^@cdU2iR{Fa)-^Cfj6~60)l3zp8UBLGZ-zyh7KLb_lEM?8bsIWIj*>X(z+ZRi9 zE0+hr+4#EK?|-=d79>1wDZbjO9_HC;vfDbvmE*WiLU3!c!JoQ@WAR#Jdm|b1^Vtb9 zuh(cCI377z5mRCBlU^iyeIh&%7A9Pu;)YU*Rejd=MXoYH$%R#gCcXXJrsBcu6Y?JAiBj z?r{bRp4*Nqj1dAM2i-$V+4V>@4lp#1UF%cKX7{xOT1|}rD<`5e7Zy4 zvy?2h#EdkI9Jjotx~tMM*6Zeby#JU8e>Un0DvUeWr2^VWo45$Kl7h! zD*oPlZ<7C1d^`AhbpNRcVe>b_qPqMIo6cBEG|OTE0G}FK-U;~yvB(Cz5As5LA5 z_A}xH`ArFFf48`0c0b9ykM#g=#9HK8`Oy*oa)9;u`6K>$@A31?qyFz57_fiRZc-%#-XPmNXbFN3KNKNk7_ z4(9(4y&L!!TK*UMkDEP0{KSwJ+y5%>g!nlibFTgsM1}tf)-PZeVSah2JQO}K1Tr59 zcvYC65sDO-4;+ZiNBnPZIYsyhp%U=^1Hc7aiSTnky|MjA!U0!{@N+@|`2H(B{gogq zgu%?B{F0DgM8VFYf2q+w|JU-T=wHir?f+ugwD{mrRX;&Ml0yC8A_23D@e@O_`2H7f zCH5Ep68T@eQv@G8xLNFP?+~i~s|u{(gHIFZNB+l8RPn!lGIfD_#sAKhl=xpuyruv0 z#Ql{Z?@s<{Qh>6B;Qz-_9Prl1Up@wjzkKZQ|5e#b@MHhO6)f?$8|OIx(c*%eCH@Zj d|E@Uz0Odau|9?}TPYgbh;3tE{V(0&>|9`Ii(KG-6 delta 13335 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 diff --git a/docs/ReadiumCSS_docs/OEBPS/Text/Section-012.xhtml b/docs/ReadiumCSS_docs/OEBPS/Text/Section-012.xhtml index 5dbfeb8..9776869 100644 --- a/docs/ReadiumCSS_docs/OEBPS/Text/Section-012.xhtml +++ b/docs/ReadiumCSS_docs/OEBPS/Text/Section-012.xhtml @@ -172,8 +172,6 @@ root.style.setProperty("name of var", "");

    Supported value: readium-a11y-on

    -

    Override class: User settings advanced (optional but should be applied by any means necessary if provided to users)

    -

    To disable the normalization, you can either set an empty string as a value or remove the property.

    @@ -185,11 +183,31 @@ root.style.setProperty("name of var", "");
    --USER__no-ruby

    Supported value: readium-noRuby-on

    - -

    Override class: User settings advanced (optional but should be applied by any means necessary if provided to users)

    + +

    To disable the hiding and show ruby annotations, you can either set an empty string as a value of remove the property.

    + + +
    +

    Experimental Features Flags

    +

    Experimental flags are used to opt-in to and test improvements to existing features. That way they can also be disabled without having to wait on a quickfix in case they are creating new issues

    + +
    --RS__experimentalHeaderFiltering
    + +

    Supported value: readium-experimentalHeaderFiltering-on

    + +

    This attempts to filter out paragraphs that are implicitly headings or part of headers.

    +

    To disable the hiding and show ruby annotations, you can either set an empty string as a value of remove the property.

    -
    + +
    --RS__experimentalZoom
    + +

    Supported value: readium-experimentalZoom-on

    + +

    This attempts to filter out elements that are sized using viewport units and should not be scaled directly.

    + +

    To disable the experimental zoom, you can either set an empty string as a value of remove the property.

    +
    diff --git a/docs/ReadiumCSS_docs/OEBPS/Text/Section-028.xhtml b/docs/ReadiumCSS_docs/OEBPS/Text/Section-028.xhtml index 1db4bbf..dd651d8 100644 --- a/docs/ReadiumCSS_docs/OEBPS/Text/Section-028.xhtml +++ b/docs/ReadiumCSS_docs/OEBPS/Text/Section-028.xhtml @@ -309,6 +309,17 @@ const backgroundColor = defaultColors.RS__backgroundColor;

    Typically, you would use zoom for all web publications, and the rest of the styles if the web publication’s accessibility metadata contains feature displayTransformability.

    + +
    +

    Experimental Flags

    + +

    As of version 2.0.0-beta.23, ReadiumCSS provides flags as a way to opt-in to and test improvements to existing features. That way they can also be disabled without having to wait on a quickfix in case they are creating new issues.

    + +
      +
    • --RS__experimentalHeaderFiltering: readium-experimentalHeaderFiltering-on: attempts to filter out paragraphs that are implicitly headings or part of headers
    • +
    • --RS__experimentalZoom: readium-experimentalZoom-on: attemps to filter out elements that are sized using viewport units and should not be scaled directly
    • +
    +
    \ No newline at end of file diff --git a/docs/ReadiumCSS_docs/OEBPS/Text/nav.xhtml b/docs/ReadiumCSS_docs/OEBPS/Text/nav.xhtml index 75237a9..2d3b628 100644 --- a/docs/ReadiumCSS_docs/OEBPS/Text/nav.xhtml +++ b/docs/ReadiumCSS_docs/OEBPS/Text/nav.xhtml @@ -759,6 +759,9 @@
  • Experimental Web Publications stylesheet
  • +
  • + Experimental Features Flags +
  • diff --git a/docs/ReadiumCSS_docs/OEBPS/toc.ncx b/docs/ReadiumCSS_docs/OEBPS/toc.ncx index 4588945..6021670 100644 --- a/docs/ReadiumCSS_docs/OEBPS/toc.ncx +++ b/docs/ReadiumCSS_docs/OEBPS/toc.ncx @@ -1389,6 +1389,12 @@ + + + Experimental Features Flags + + + \ No newline at end of file From 8e9924a6cb6c546b8a70c91668d0f8be898a4c80 Mon Sep 17 00:00:00 2001 From: Jiminy Panoz Date: Mon, 24 Nov 2025 14:02:11 +0100 Subject: [PATCH 09/11] Missing syntax --- css/ReadiumCSS-config.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/css/ReadiumCSS-config.css b/css/ReadiumCSS-config.css index b6b74c9..1825dad 100644 --- a/css/ReadiumCSS-config.css +++ b/css/ReadiumCSS-config.css @@ -51,4 +51,4 @@ /* Experimental/Feature flags */ @custom-selector :--experimental-zoom [style*="readium-experimentalZoom-on"]; -@custom-selector :--experimental-header-filtering [style*="readium-experimentalHeaderFiltering-on"] \ No newline at end of file +@custom-selector :--experimental-header-filtering [style*="readium-experimentalHeaderFiltering-on"]; \ No newline at end of file From 3a879e1e36ddfd88fb52643b8aa52f49de7f11e1 Mon Sep 17 00:00:00 2001 From: Jiminy Panoz Date: Mon, 24 Nov 2025 14:22:02 +0100 Subject: [PATCH 10/11] Create json for experimental flags In practice, this should help implement the flags without having to hardcode them --- css/vars/experiments.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 css/vars/experiments.json diff --git a/css/vars/experiments.json b/css/vars/experiments.json new file mode 100644 index 0000000..e601d73 --- /dev/null +++ b/css/vars/experiments.json @@ -0,0 +1,12 @@ +{ + "experimentalHeaderFiltering": { + "description": "Attempts to filter out paragraphs that are implicitly headings or part of headers", + "scope": "RS", + "value": "readium-experimentalHeaderFiltering-on" + }, + "experimentalZoom": { + "description": "Attemps to filter out elements that are sized using viewport units and should not be scaled directly e.g. tables, images, iframes, etc.", + "scope": "RS", + "value": "readium-experimentalZoom-on" + } +} \ No newline at end of file From d2182473ffe9085ecbb279e164bee8844d5d80cd Mon Sep 17 00:00:00 2001 From: Jiminy Panoz Date: Mon, 24 Nov 2025 18:59:40 +0100 Subject: [PATCH 11/11] Update package lock --- package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index c85767b..b1c2492 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@readium/css", - "version": "2.0.0-beta.22", + "version": "2.0.0-beta.23", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@readium/css", - "version": "2.0.0-beta.22", + "version": "2.0.0-beta.23", "license": "BSD-3-Clause", "devDependencies": { "@daltontan/postcss-import-json": "^1.1.1",