From 1e0cc48ea39fea926191983a0fa1131a957e3bd8 Mon Sep 17 00:00:00 2001 From: Jiminy Panoz Date: Mon, 3 Nov 2025 19:15:13 +0100 Subject: [PATCH 1/7] Add webpub stylesheet And switch ligatures to global --- css/src/ReadiumCSS-after-rtl.css | 2 +- css/src/ReadiumCSS-after.css | 1 + css/src/ReadiumCSS-webPub.css | 15 +++++++ .../ReadiumCSS-fontSize_pref.css | 25 +++++++++++ ...pref.css => ReadiumCSS-ligatures_pref.css} | 2 +- .../ReadiumCSS-webPubZoom_pref.css | 42 +++++++++++++++++++ package.json | 5 ++- 7 files changed, 88 insertions(+), 4 deletions(-) create mode 100644 css/src/ReadiumCSS-webPub.css rename css/src/modules/user-settings-submodules/{ReadiumCSS-arabicLigatures_pref.css => ReadiumCSS-ligatures_pref.css} (79%) create mode 100644 css/src/modules/user-settings-submodules/ReadiumCSS-webPubZoom_pref.css diff --git a/css/src/ReadiumCSS-after-rtl.css b/css/src/ReadiumCSS-after-rtl.css index 6965ae4..e704995 100644 --- a/css/src/ReadiumCSS-after-rtl.css +++ b/css/src/ReadiumCSS-after-rtl.css @@ -13,8 +13,8 @@ @import "modules/user-settings-submodules/ReadiumCSS-paraSpacing_pref.css"; @import "modules/user-settings-submodules/ReadiumCSS-paraIndent_pref.css"; @import "modules/user-settings-submodules/ReadiumCSS-wordSpacing_pref.css"; -@import "modules/user-settings-submodules/ReadiumCSS-arabicLigatures_pref.css"; @import "modules/user-settings-submodules/ReadiumCSS-variableFont_pref.css"; +@import "modules/user-settings-submodules/ReadiumCSS-ligatures_pref.css"; @import "modules/user-settings-submodules/ReadiumCSS-imageFilters_pref.css"; @import "modules/ReadiumCSS-fs_normalize.css"; @import "modules/ReadiumCSS-iPadOS_patch.css"; \ No newline at end of file diff --git a/css/src/ReadiumCSS-after.css b/css/src/ReadiumCSS-after.css index 752e6fc..448f425 100644 --- a/css/src/ReadiumCSS-after.css +++ b/css/src/ReadiumCSS-after.css @@ -17,6 +17,7 @@ @import "modules/user-settings-submodules/ReadiumCSS-wordSpacing_pref.css"; @import "modules/user-settings-submodules/ReadiumCSS-letterSpacing_pref.css"; @import "modules/user-settings-submodules/ReadiumCSS-variableFont_pref.css"; +@import "modules/user-settings-submodules/ReadiumCSS-ligatures_pref.css"; @import "modules/user-settings-submodules/ReadiumCSS-imageFilters_pref.css"; @import "modules/ReadiumCSS-fs_normalize.css"; @import "modules/ReadiumCSS-iPadOS_patch.css"; \ No newline at end of file diff --git a/css/src/ReadiumCSS-webPub.css b/css/src/ReadiumCSS-webPub.css new file mode 100644 index 0000000..0432229 --- /dev/null +++ b/css/src/ReadiumCSS-webPub.css @@ -0,0 +1,15 @@ +@import "../ReadiumCSS-config.css"; +@import "modules/user-settings-submodules/ReadiumCSS-textAlign_pref.css"; +@import "modules/user-settings-submodules/ReadiumCSS-bodyHyphens_pref.css"; +@import "modules/user-settings-submodules/ReadiumCSS-fontFamily_pref.css"; +@import "modules/user-settings-submodules/ReadiumCSS-a11yFont_pref.css"; +@import "modules/user-settings-submodules/ReadiumCSS-webPubZoom_pref.css"; +@import "modules/user-settings-submodules/ReadiumCSS-lineHeight_pref.css"; +@import "modules/user-settings-submodules/ReadiumCSS-paraSpacing_pref.css"; +@import "modules/user-settings-submodules/ReadiumCSS-paraIndent_pref.css"; +@import "modules/user-settings-submodules/ReadiumCSS-wordSpacing_pref.css"; +@import "modules/user-settings-submodules/ReadiumCSS-letterSpacing_pref.css"; +@import "modules/user-settings-submodules/ReadiumCSS-variableFont_pref.css"; +@import "modules/user-settings-submodules/ReadiumCSS-ruby_pref.css"; +@import "modules/user-settings-submodules/ReadiumCSS-ligatures_pref.css"; +@import "modules/ReadiumCSS-iPadOS_patch.css"; \ 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 5969e35..97e0af1 100644 --- a/css/src/modules/user-settings-submodules/ReadiumCSS-fontSize_pref.css +++ b/css/src/modules/user-settings-submodules/ReadiumCSS-fontSize_pref.css @@ -14,6 +14,31 @@ -webkit-text-size-adjust: var(--USER__fontSize) !important; } +@supports selector(figure:has(> img)) { + :root[style*="--USER__fontSize"] figure:has(> img), + :root[style*="--USER__fontSize"] figure:has(> video), + :root[style*="--USER__fontSize"] figure:has(> svg), + :root[style*="--USER__fontSize"] figure:has(> canvas), + :root[style*="--USER__fontSize"] figure:has(> iframe), + :root[style*="--USER__fontSize"] figure:has(> audio), + :root[style*="--USER__fontSize"] div:has(> img), + :root[style*="--USER__fontSize"] div:has(> video), + :root[style*="--USER__fontSize"] div:has(> svg), + :root[style*="--USER__fontSize"] div:has(> canvas), + :root[style*="--USER__fontSize"] div:has(> iframe), + :root[style*="--USER__fontSize"] div:has(> audio), + :root[style*="--USER__fontSize"] table { + zoom: calc(100% / var(--USER__fontSize)) !important; + } + + :root[style*="--USER__fontSize"] figcaption, + :root[style*="--USER__fontSize"] caption, + :root[style*="--USER__fontSize"] td, + :root[style*="--USER__fontSize"] th { + zoom: var(--USER__fontSize) !important; + } +} + /* Older deprecated implementation for when zoom is not supported or it is explicitly enabled because you don’t want the new one */ diff --git a/css/src/modules/user-settings-submodules/ReadiumCSS-arabicLigatures_pref.css b/css/src/modules/user-settings-submodules/ReadiumCSS-ligatures_pref.css similarity index 79% rename from css/src/modules/user-settings-submodules/ReadiumCSS-arabicLigatures_pref.css rename to css/src/modules/user-settings-submodules/ReadiumCSS-ligatures_pref.css index 9ffaa1a..04c659a 100644 --- a/css/src/modules/user-settings-submodules/ReadiumCSS-arabicLigatures_pref.css +++ b/css/src/modules/user-settings-submodules/ReadiumCSS-ligatures_pref.css @@ -1,7 +1,7 @@ /* Readium CSS Ligatures pref - A submodule managing ligatures for user settings in the Arabic Script (can help with a11y) + A submodule managing ligatures for user settings Part of “User Overrides Advanced” class – “advanced settings” flag required. Repo: https://github.com/readium/css */ diff --git a/css/src/modules/user-settings-submodules/ReadiumCSS-webPubZoom_pref.css b/css/src/modules/user-settings-submodules/ReadiumCSS-webPubZoom_pref.css new file mode 100644 index 0000000..a8224b8 --- /dev/null +++ b/css/src/modules/user-settings-submodules/ReadiumCSS-webPubZoom_pref.css @@ -0,0 +1,42 @@ +/* Readium CSS + WebPubZoom pref + + A submodule managing zoom for user settings in Web Publications + Part of “User Overrides” class – no flag required. + + Repo: https://github.com/readium/css */ + +:root:not(:--iOS-patch)[style*="--USER__zoom"] body { + zoom: var(--USER__zoom) !important; +} + +:root:--iOS-patch[style*="--USER__zoom"] body { + -webkit-text-size-adjust: var(--USER__zoom) !important; +} + +@supports selector(figure:has(> img)) { + :root[style*="--USER__zoom"] figure:has(> img), + :root[style*="--USER__zoom"] figure:has(> video), + :root[style*="--USER__zoom"] figure:has(> svg), + :root[style*="--USER__zoom"] figure:has(> canvas), + :root[style*="--USER__zoom"] figure:has(> iframe), + :root[style*="--USER__zoom"] figure:has(> audio), + :root[style*="--USER__zoom"] div:has(> img), + :root[style*="--USER__zoom"] div:has(> video), + :root[style*="--USER__zoom"] div:has(> svg), + :root[style*="--USER__zoom"] div:has(> canvas), + :root[style*="--USER__zoom"] div:has(> iframe), + :root[style*="--USER__zoom"] div:has(> audio), + :root[style*="--USER__zoom"] table { + zoom: calc(100% / var(--USER__zoom)) !important; + } + + :root[style*="--USER__zoom"] figcaption, + :root[style*="--USER__zoom"] caption, + :root[style*="--USER__zoom"] td, + :root[style*="--USER__zoom"] th { + zoom: var(--USER__zoom) !important; + } +} + +/* We do not have a fallback implementation yet… */ \ No newline at end of file diff --git a/package.json b/package.json index c1c41be..a982fc8 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.20", + "version": "2.0.0-beta.21", "homepage": "https://github.com/readium/css", "license": "BSD-3-Clause", "keywords": [ @@ -45,7 +45,8 @@ "stylelint": "^16.4.0" }, "scripts": { - "build": "npm run build:ltr && npm run build:rtl && npm run build:cjk && npm run build:vertical && npm run copyPatches", + "build": "npm run build:ltr && npm run build:rtl && npm run build:cjk && npm run build:vertical && npm run build:web && npm run copyPatches", + "build:web": "postcss css/src/ReadiumCSS-webPub.css -o css/dist/webPub/ReadiumCSS-webPub.css", "build:ltr": "postcss css/src/ReadiumCSS-before.css -o css/dist/ReadiumCSS-before.css && postcss css/src/ReadiumCSS-default.css -o css/dist/ReadiumCSS-default.css && postcss css/src/ReadiumCSS-after.css -o css/dist/ReadiumCSS-after.css", "build:rtl": "postcss css/src/ReadiumCSS-before-rtl.css -o css/dist/rtl/ReadiumCSS-before.css && postcss css/src/ReadiumCSS-default-rtl.css -o css/dist/rtl/ReadiumCSS-default.css && postcss css/src/ReadiumCSS-after-rtl.css -o css/dist/rtl/ReadiumCSS-after.css", "build:cjk": "postcss css/src/ReadiumCSS-before-cjk-horizontal.css -o css/dist/cjk-horizontal/ReadiumCSS-before.css && postcss css/src/ReadiumCSS-default-cjk-horizontal.css -o css/dist/cjk-horizontal/ReadiumCSS-default.css && postcss css/src/ReadiumCSS-after-cjk-horizontal.css -o css/dist/cjk-horizontal/ReadiumCSS-after.css", From a671d76a067f000c7c7d62e40ea7e25a4c09fc86 Mon Sep 17 00:00:00 2001 From: Jiminy Panoz Date: Mon, 3 Nov 2025 19:22:19 +0100 Subject: [PATCH 2/7] Update docs + Switch from | to / so that Github pages do not try creating tables for possible values --- css/dist/ReadMe.md | 6 ++--- css/src/ReadiumCSS-after-rtl.css | 2 +- css/src/ReadiumCSS-after.css | 2 +- docs/CSS06-stylesheets_order.md | 2 +- docs/CSS08-defaults.md | 2 +- docs/CSS11-overrides_classification.md | 2 +- docs/CSS12-user_prefs.md | 24 +++++++++--------- docs/CSS14-user_settings_recs.md | 4 +-- docs/CSS16-internationalization.md | 2 +- docs/CSS18-further_details.md | 2 +- docs/CSS19-api.md | 24 +++++++++--------- docs/ReadiumCSS_docs.epub | Bin 3686568 -> 3686471 bytes .../OEBPS/Text/Section-006.xhtml | 2 +- .../OEBPS/Text/Section-011.xhtml | 2 +- .../OEBPS/Text/Section-012.xhtml | 4 +-- .../OEBPS/Text/Section-014.xhtml | 6 ++--- .../OEBPS/Text/Section-016.xhtml | 2 +- .../OEBPS/Text/Section-019.xhtml | 2 +- docs/ReadiumCSS_docs/OEBPS/Text/nav.xhtml | 2 +- docs/ReadiumCSS_docs/OEBPS/content.opf | 2 +- docs/ReadiumCSS_docs/OEBPS/toc.ncx | 2 +- 21 files changed, 47 insertions(+), 49 deletions(-) diff --git a/css/dist/ReadMe.md b/css/dist/ReadMe.md index 518fe62..a5588f5 100644 --- a/css/dist/ReadMe.md +++ b/css/dist/ReadMe.md @@ -27,10 +27,6 @@ Disabled user settings: - `hyphens`; - `letter-spacing`. -Added user settings: - -- `font-variant-ligatures` (mapped to `--USER__ligatures` CSS variable). - ## CJK Chinese, Japanese, Korean, and Mongolian can be either written `horizontal-tb` or `vertical-*`. Consequently, there are stylesheets for horizontal and vertical writing modes. @@ -52,6 +48,7 @@ Disabled user settings: - `text-align`; - `hyphens`; +- `ligatures`; - paragraphs’ indent; - `word-spacing`. @@ -88,6 +85,7 @@ Disabled user settings: - `column-count` (number of columns); - `text-align`; - `hyphens`; +- `ligatures`; - paragraphs’ indent; - `word-spacing`. diff --git a/css/src/ReadiumCSS-after-rtl.css b/css/src/ReadiumCSS-after-rtl.css index e704995..fdc889f 100644 --- a/css/src/ReadiumCSS-after-rtl.css +++ b/css/src/ReadiumCSS-after-rtl.css @@ -13,8 +13,8 @@ @import "modules/user-settings-submodules/ReadiumCSS-paraSpacing_pref.css"; @import "modules/user-settings-submodules/ReadiumCSS-paraIndent_pref.css"; @import "modules/user-settings-submodules/ReadiumCSS-wordSpacing_pref.css"; -@import "modules/user-settings-submodules/ReadiumCSS-variableFont_pref.css"; @import "modules/user-settings-submodules/ReadiumCSS-ligatures_pref.css"; +@import "modules/user-settings-submodules/ReadiumCSS-variableFont_pref.css"; @import "modules/user-settings-submodules/ReadiumCSS-imageFilters_pref.css"; @import "modules/ReadiumCSS-fs_normalize.css"; @import "modules/ReadiumCSS-iPadOS_patch.css"; \ No newline at end of file diff --git a/css/src/ReadiumCSS-after.css b/css/src/ReadiumCSS-after.css index 448f425..97b5518 100644 --- a/css/src/ReadiumCSS-after.css +++ b/css/src/ReadiumCSS-after.css @@ -16,8 +16,8 @@ @import "modules/user-settings-submodules/ReadiumCSS-paraIndent_pref.css"; @import "modules/user-settings-submodules/ReadiumCSS-wordSpacing_pref.css"; @import "modules/user-settings-submodules/ReadiumCSS-letterSpacing_pref.css"; -@import "modules/user-settings-submodules/ReadiumCSS-variableFont_pref.css"; @import "modules/user-settings-submodules/ReadiumCSS-ligatures_pref.css"; +@import "modules/user-settings-submodules/ReadiumCSS-variableFont_pref.css"; @import "modules/user-settings-submodules/ReadiumCSS-imageFilters_pref.css"; @import "modules/ReadiumCSS-fs_normalize.css"; @import "modules/ReadiumCSS-iPadOS_patch.css"; \ No newline at end of file diff --git a/docs/CSS06-stylesheets_order.md b/docs/CSS06-stylesheets_order.md index 28383d5..1d85c94 100644 --- a/docs/CSS06-stylesheets_order.md +++ b/docs/CSS06-stylesheets_order.md @@ -59,7 +59,7 @@ The following modules must be appended after the author’s stylesheets (`Readiu 11. `ReadiumCSS-paraIndent_pref.css` (does not apply to CJK scripts) 12. `ReadiumCSS-wordSpacing_pref.css` (does not apply to CJK scripts) 13. `ReadiumCSS-letterSpacing_pref.css` (does not apply to RTL scripts, except in vertical writing mode) - 14. `ReadiumCSS-arabicLigatures_pref.css` (RTL only) + 14. `ReadiumCSS-ligatures_pref.css` (RTL only) 15. `ReadiumCSS-variableFont_pref.css` (this contains optical sizing, weight and width prefs) 16. `ReadiumCSS-ruby_pref.css` (CJK only) 17. `ReadiumCSS-imageFilters_pref.css` diff --git a/docs/CSS08-defaults.md b/docs/CSS08-defaults.md index 37624eb..63c508e 100644 --- a/docs/CSS08-defaults.md +++ b/docs/CSS08-defaults.md @@ -261,7 +261,7 @@ The typeface for code snippets. The value can be another variable e.g. `var(-RS_ The scale to be used for computing all elements’ `font-size`. Since those font sizes are computed dynamically, you can set a smaller type scale when the user sets one of the largest font sizes. -Possible values: `1` | `1.067` | `1.125` | `1.2` (suggested default) | `1.25` | `1.333` | `1.414` | `1.5` | `1.618` +Possible values: `1` / `1.067` / `1.125` / `1.2` (suggested default) / `1.25` / `1.333` / `1.414` / `1.5` / `1.618` * * * diff --git a/docs/CSS11-overrides_classification.md b/docs/CSS11-overrides_classification.md index bcf170f..6a5d530 100644 --- a/docs/CSS11-overrides_classification.md +++ b/docs/CSS11-overrides_classification.md @@ -43,7 +43,7 @@ The following settings are optional but should be applied by any means necessary - paragraph indent; - letter-spacing; - word-spacing; -- arabic ligatures; +- ligatures; - hiding ruby (CJK); - accessibility normalization; - font optical sizing (requires a variable font); diff --git a/docs/CSS12-user_prefs.md b/docs/CSS12-user_prefs.md index 9f7a966..5146503 100644 --- a/docs/CSS12-user_prefs.md +++ b/docs/CSS12-user_prefs.md @@ -69,7 +69,7 @@ Allows to switch between paged and scroll view. --USER__view ``` -Supported values: `readium-paged-on` | `readium-scroll-on` +Supported values: `readium-paged-on` / `readium-scroll-on` Override class: Chrome (should be applied by any means necessary) @@ -249,7 +249,7 @@ The user can set `text-align` and `hyphens` for body copy contents. --USER__textAlign ``` -Possible values: `left` (LTR) or `right` (RTL) | `start` (logical property resolving to `left` in LTR, `right` in RTL) | `justify` +Possible values: `left` (LTR) or `right` (RTL) / `start` (logical property resolving to `left` in LTR, `right` in RTL) / `justify` Override class: User settings advanced (optional but should be applied by any means necessary if provided to users) @@ -261,7 +261,7 @@ Note: the value `start` can be used to let all rendering engines, excepted Tride --USER__bodyHyphens ``` -Possible Values: `auto` | `none` +Possible Values: `auto` / `none` Override class: User settings advanced (optional but should be applied by any means necessary if provided to users) @@ -279,9 +279,9 @@ The user can set `font-family`, `font-size` and `line-height` for body copy cont --USER__fontFamily ``` -Possible values: `var(--RS__oldStyleTf)` | `var(--RS__modernTf)` | `var(--RS__sansTf)` | `var(--RS__humanistTf)` | `` +Possible values: `var(--RS__oldStyleTf)` / `var(--RS__modernTf)` / `var(--RS__sansTf)` / `var(--RS__humanistTf)` / `` -For Japanese, possible values become: `var(--RS__serif-ja)` (horizontal writing) | `var(--RS__sans-serif-ja)` (horizontal writing) | `var(--RS__serif-ja-v)` (vertical writing) | `var(--RS__sans-serif-ja-v)` (vertical writing) | `` +For Japanese, possible values become: `var(--RS__serif-ja)` (horizontal writing) / `var(--RS__sans-serif-ja)` (horizontal writing) / `var(--RS__serif-ja-v)` (vertical writing) / `var(--RS__sans-serif-ja-v)` (vertical writing) / `` Required flag: none @@ -365,13 +365,13 @@ Recommended values: a range from `0` to `0.5rem`. Increments are left to impleme Override class: User settings advanced (optional but should be applied by any means necessary if provided to users) -#### Arabic Ligatures +#### Ligatures ``` --USER__ligatures ``` -Possible values: `none` | `common-ligatures` +Possible values: `none` / `common-ligatures` Override class: User settings advanced (optional but should be applied by any means necessary if provided to users) @@ -391,7 +391,7 @@ Rendering engines and browsers enable optical sizing by default for fonts that h When optical sizing is used, small text sizes are often rendered with thicker strokes and larger serifs, whereas larger text is often rendered more delicately with more contrast between thicker and thinner strokes. -Possible values: `none` | `auto` (default) +Possible values: `none` / `auto` (default) Required flag: none @@ -417,7 +417,7 @@ Override class: User settings advanced (optional but should be applied by any me --USER__fontWidth ``` -Possible values: `ultra-condensed` | `extra-condensed` | `condensed` | `semi-condensed` | `normal` | `semi-expanded` | `expanded` | `extra-expanded` | `ultra-expanded` | `percentage` e.g. `50%`, `125%` +Possible values: `ultra-condensed` / `extra-condensed` / `condensed` / `semi-condensed` / `normal` / `semi-expanded` / `expanded` / `extra-expanded` / `ultra-expanded` / `percentage` e.g. `50%`, `125%` **Warning: the percentage values depend on the variable font you may be using.** You can use services such as [Wakamai Fondue](https://wakamaifondue.com) to get the values. @@ -453,7 +453,7 @@ This will apply a `mix-blend-mode` of `multiply` with a transparent background t --USER__darkenImages ``` -Possible values: `readium-darken-on` | `percentage` e.g. `50%`. +Possible values: `readium-darken-on` / `percentage` e.g. `50%`. This will apply a `brightness` filter with the percentage value it’s given, or a preset of `80%` if using it as a flag. @@ -463,7 +463,7 @@ This will apply a `brightness` filter with the percentage value it’s given, or --USER__invertImages ``` -Possible values: `readium-invert-on` | `percentage` e.g. `50%`. +Possible values: `readium-invert-on` / `percentage` e.g. `50%`. This will apply an `invert` filter with the percentage value it’s given, or a preset of `100%` if using it as a flag. @@ -473,7 +473,7 @@ If you want to only invert gaiji (valid Japanese character as `img`), you can us --USER__invertGaiji ``` -Possible values: `readium-invertGaiji-on` | `percentage` e.g. `50%`. +Possible values: `readium-invertGaiji-on` / `percentage` e.g. `50%`. This will apply an `invert` filter with the percentage value it’s given, or a preset of `100%` if using it as a flag, only to `img class="gaiji"`. diff --git a/docs/CSS14-user_settings_recs.md b/docs/CSS14-user_settings_recs.md index 3e0d5bd..a5b3efb 100644 --- a/docs/CSS14-user_settings_recs.md +++ b/docs/CSS14-user_settings_recs.md @@ -215,11 +215,11 @@ It is very rare authors’ will use those CSS properties for body copy. They may In any case, implementers should force those settings for body copy. -## Ligatures (Arabic & Persian scripts) +## Ligatures ### User’s intent -The user intends to disable ligatures. This setting applies to the Arabic and Persian scripts, and is believed to help dyslexic readers as `word-spacing` in Latin. +The user intends to disable ligatures. This setting applies to the Latin, Arabic and Persian scripts. In the two latter, it is believed to help dyslexic readers as `word-spacing` in Latin. ### Author’s intent diff --git a/docs/CSS16-internationalization.md b/docs/CSS16-internationalization.md index 0aeb9b0..50abc63 100644 --- a/docs/CSS16-internationalization.md +++ b/docs/CSS16-internationalization.md @@ -156,7 +156,7 @@ Several parts of the UI must follow the direction (`rtl`) of the primary languag - user settings e.g. text align; - implementers might want to localize the interface based on the language set at the system level, or at least fall back to English. -Moreover, some user settings should be removed if used (`letter-spacing`) and another one added (arabic ligatures in `ar` and `fa`). +Moreover, some user settings should be removed if used (`letter-spacing`). #### CJK diff --git a/docs/CSS18-further_details.md b/docs/CSS18-further_details.md index 162eb6d..2192fde 100644 --- a/docs/CSS18-further_details.md +++ b/docs/CSS18-further_details.md @@ -48,7 +48,7 @@ The typeface for code snippets. The value can be another variable e.g. `var(-RS_ The scale to be used for computing all elements’ `font-size`. Since those font sizes are computed dynamically, you can set a smaller type scale when the user sets one of the largest font sizes. -Possible values: `1` | `1.067` | `1.125` (suggested default) | `1.2` | `1.25` | `1.333` | `1.414` | `1.5` | `1.618` +Possible values: `1` / `1.067` / `1.125` (suggested default) / `1.2` / `1.25` / `1.333` / `1.414` / `1.5` / `1.618` The suggested default will accomodate most configurations, from small to large screens. diff --git a/docs/CSS19-api.md b/docs/CSS19-api.md index 145e31a..fd89de0 100644 --- a/docs/CSS19-api.md +++ b/docs/CSS19-api.md @@ -523,7 +523,7 @@ The typeface for code snippets. The value can be another variable e.g. `var(-RS_ The scale to be used for computing all elements’ `font-size`. Since those font sizes are computed dynamically, you can set a smaller type scale when the user sets one of the largest font sizes. -Possible values: `1` | `1.067` | `1.125` | `1.2` (suggested default) | `1.25` | `1.333` | `1.414` | `1.5` | `1.618` +Possible values: `1` / `1.067` / `1.125` / `1.2` (suggested default) / `1.25` / `1.333` / `1.414` / `1.5` / `1.618` * * * @@ -831,7 +831,7 @@ Scope: `html` It impacts `body`, `li`, and `p` which are not children of `blockquote` and `figcaption`. -Possible values: `left` (LTR) or `right` (RTL) | `start` (logical property resolving to `left` in LTR, `right` in RTL) | `justify` +Possible values: `left` (LTR) or `right` (RTL) / `start` (logical property resolving to `left` in LTR, `right` in RTL) / `justify` Override class: User settings advanced (optional but should be applied by any means necessary if provided to users) @@ -849,7 +849,7 @@ Scope: `html` It impacts `body`, `p`, `li`, `div` and `dd`. -Possible Values: `auto` | `none` +Possible Values: `auto` / `none` Override class: User settings advanced (optional but should be applied by any means necessary if provided to users) @@ -867,9 +867,9 @@ Scope: `html` It impacts everything except `code `, `var`, `kbd`, and `samp`. -Possible values: `var(--RS__oldStyleTf)` | `var(--RS__modernTf)` | `var(--RS__sansTf)` | `var(--RS__humanistTf)` | `` +Possible values: `var(--RS__oldStyleTf)` / `var(--RS__modernTf)` / `var(--RS__sansTf)` / `var(--RS__humanistTf)` / `` -For Japanese, possible values become: `var(--RS__serif-ja)` (horizontal writing) | `var(--RS__sans-serif-ja)` (horizontal writing) | `var(--RS__serif-ja-v)` (vertical writing) | `var(--RS__sans-serif-ja-v)` (vertical writing) | `` +For Japanese, possible values become: `var(--RS__serif-ja)` (horizontal writing) / `var(--RS__sans-serif-ja)` (horizontal writing) / `var(--RS__serif-ja-v)` (vertical writing) / `var(--RS__sans-serif-ja-v)` (vertical writing) / `` Required flag: `:--fontOverride` @@ -971,13 +971,13 @@ Override class: User settings advanced (optional but should be applied by any me --USER__ligatures ``` -Enabling and disabling ligatures in Arabic (related to a11y). +Enabling and disabling ligatures. Scope: `html` It impacts all text. -Possible values: `none` | `common-ligatures` +Possible values: `none` / `common-ligatures` Override class: User settings advanced (optional but should be applied by any means necessary if provided to users) @@ -993,7 +993,7 @@ Scope: `html` It impacts all text. -Possible values: `none` | `auto` +Possible values: `none` / `auto` Required flag: `:--fontOverride` @@ -1031,7 +1031,7 @@ Scope: `html` It impacts all text. -Possible values: `ultra-condensed` | `extra-condensed` | `condensed` | `semi-condensed` | `normal` | `semi-expanded` | `expanded` | `extra-expanded` | `ultra-expanded` | `percentage` +Possible values: `ultra-condensed` / `extra-condensed` / `condensed` / `semi-condensed` / `normal` / `semi-expanded` / `expanded` / `extra-expanded` / `ultra-expanded` / `percentage` **Warning: the percentage values depend on the variable font you may be using.** You can use services such as [Wakamai Fondue](https://wakamaifondue.com) to get the values. @@ -1065,7 +1065,7 @@ Scope: `html` It impacts all images. -Possible values: `readium-darken-on` | `percentage` e.g. `50%` +Possible values: `readium-darken-on` / `percentage` e.g. `50%` * * * @@ -1079,7 +1079,7 @@ Scope: `html` It impacts all images, including gaiji. -Possible values: `readium-invert-on` | `percentage` e.g. `50%` +Possible values: `readium-invert-on` / `percentage` e.g. `50%` * * * @@ -1093,4 +1093,4 @@ Scope: `html` It impacts images with a `gaiji` class name. -Possible values: `readium-invertGaiji-on` | `percentage` e.g. `50` \ No newline at end of file +Possible values: `readium-invertGaiji-on` / `percentage` e.g. `50` \ No newline at end of file diff --git a/docs/ReadiumCSS_docs.epub b/docs/ReadiumCSS_docs.epub index 73966604e30711898404d62d29f574ede22ad2ab..f2bebcae2e7dcdd4a199b751fcab42421c90c2ea 100644 GIT binary patch delta 32281 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 z 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 delta 32183 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 diff --git a/docs/ReadiumCSS_docs/OEBPS/Text/Section-006.xhtml b/docs/ReadiumCSS_docs/OEBPS/Text/Section-006.xhtml index 08f3c7a..17cf940 100644 --- a/docs/ReadiumCSS_docs/OEBPS/Text/Section-006.xhtml +++ b/docs/ReadiumCSS_docs/OEBPS/Text/Section-006.xhtml @@ -112,7 +112,7 @@
  • ReadiumCSS-letterSpacing_pref.css (does not apply to RTL scripts, except in vertical writing mode)
  • -
  • ReadiumCSS-arabicLigatures_pref.css (RTL only)
  • +
  • ReadiumCSS-ligatures_pref.css (RTL only)
  • ReadiumCSS-variableFont_pref.css (this contains optical sizing, weight and width prefs)
  • diff --git a/docs/ReadiumCSS_docs/OEBPS/Text/Section-011.xhtml b/docs/ReadiumCSS_docs/OEBPS/Text/Section-011.xhtml index 1685c67..9b25e16 100644 --- a/docs/ReadiumCSS_docs/OEBPS/Text/Section-011.xhtml +++ b/docs/ReadiumCSS_docs/OEBPS/Text/Section-011.xhtml @@ -85,7 +85,7 @@
  • word-spacing;
  • -
  • arabic ligatures;
  • +
  • ligatures;
  • hiding ruby (CJK);
  • diff --git a/docs/ReadiumCSS_docs/OEBPS/Text/Section-012.xhtml b/docs/ReadiumCSS_docs/OEBPS/Text/Section-012.xhtml index a2739ef..5dbfeb8 100644 --- a/docs/ReadiumCSS_docs/OEBPS/Text/Section-012.xhtml +++ b/docs/ReadiumCSS_docs/OEBPS/Text/Section-012.xhtml @@ -396,8 +396,8 @@ root.style.setProperty("name of var", "");

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

    -
    -

    Arabic Ligatures

    +
    +

    Ligatures

    --USER__ligatures
    diff --git a/docs/ReadiumCSS_docs/OEBPS/Text/Section-014.xhtml b/docs/ReadiumCSS_docs/OEBPS/Text/Section-014.xhtml index 2304a24..0820379 100644 --- a/docs/ReadiumCSS_docs/OEBPS/Text/Section-014.xhtml +++ b/docs/ReadiumCSS_docs/OEBPS/Text/Section-014.xhtml @@ -329,13 +329,13 @@
    -
    -

    Ligatures (Arabic & Persian scripts)

    +
    +

    Ligatures

    User’s intent

    -

    The user intends to disable ligatures. This setting applies to the Arabic and Persian scripts, and is believed to help dyslexic readers as word-spacing in Latin.

    +

    The user intends to disable ligatures. This setting applies to the Latin, Arabic and Persian scripts. In the two latter, it is believed to help dyslexic readers as word-spacing in Latin.

    diff --git a/docs/ReadiumCSS_docs/OEBPS/Text/Section-016.xhtml b/docs/ReadiumCSS_docs/OEBPS/Text/Section-016.xhtml index bb439d2..91ee91a 100644 --- a/docs/ReadiumCSS_docs/OEBPS/Text/Section-016.xhtml +++ b/docs/ReadiumCSS_docs/OEBPS/Text/Section-016.xhtml @@ -250,7 +250,7 @@
  • implementers might want to localize the interface based on the language set at the system level, or at least fall back to English.
  • -

    Moreover, some user settings should be removed if used (letter-spacing) and another one added (arabic ligatures in ar and fa).

    +

    Moreover, some user settings should be removed if used (letter-spacing).

    diff --git a/docs/ReadiumCSS_docs/OEBPS/Text/Section-019.xhtml b/docs/ReadiumCSS_docs/OEBPS/Text/Section-019.xhtml index 0521fc2..0278f81 100644 --- a/docs/ReadiumCSS_docs/OEBPS/Text/Section-019.xhtml +++ b/docs/ReadiumCSS_docs/OEBPS/Text/Section-019.xhtml @@ -856,7 +856,7 @@
    --USER__ligatures
    -

    Enabling and disabling ligatures in Arabic (related to a11y).

    +

    Enabling and disabling ligatures.

    Scope: html

    diff --git a/docs/ReadiumCSS_docs/OEBPS/Text/nav.xhtml b/docs/ReadiumCSS_docs/OEBPS/Text/nav.xhtml index c72efd9..7bfff55 100644 --- a/docs/ReadiumCSS_docs/OEBPS/Text/nav.xhtml +++ b/docs/ReadiumCSS_docs/OEBPS/Text/nav.xhtml @@ -420,7 +420,7 @@ Characters’ spacing
  • - Ligatures (Arabic & Persian scripts) + Ligatures
  • diff --git a/docs/ReadiumCSS_docs/OEBPS/content.opf b/docs/ReadiumCSS_docs/OEBPS/content.opf index 99ebd3f..45670e4 100644 --- a/docs/ReadiumCSS_docs/OEBPS/content.opf +++ b/docs/ReadiumCSS_docs/OEBPS/content.opf @@ -8,7 +8,7 @@ en urn:uuid:527D093B-9C0A-4C83-8AF6-0A40E91D30FC - 2025-08-29T12:28:00Z + 2025-11-03T17:21:00Z displayTransformability readingOrder diff --git a/docs/ReadiumCSS_docs/OEBPS/toc.ncx b/docs/ReadiumCSS_docs/OEBPS/toc.ncx index 8561b5e..33fe94e 100644 --- a/docs/ReadiumCSS_docs/OEBPS/toc.ncx +++ b/docs/ReadiumCSS_docs/OEBPS/toc.ncx @@ -767,7 +767,7 @@ - Ligatures (Arabic & Persian scripts) + Ligatures From e264e67664ef8d8ad5f05922a26ae82b9fe33b7c Mon Sep 17 00:00:00 2001 From: Jiminy Panoz Date: Tue, 4 Nov 2025 09:15:36 +0100 Subject: [PATCH 3/7] Correct font-size/zoom selectors --- .../ReadiumCSS-fontSize_pref.css | 36 +++++++++---------- .../ReadiumCSS-webPubZoom_pref.css | 34 +++++++++--------- 2 files changed, 35 insertions(+), 35 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 97e0af1..03ec2f7 100644 --- a/css/src/modules/user-settings-submodules/ReadiumCSS-fontSize_pref.css +++ b/css/src/modules/user-settings-submodules/ReadiumCSS-fontSize_pref.css @@ -10,31 +10,31 @@ zoom: var(--USER__fontSize) !important; } -:root:--iOS-patch[style*="--USER__fontSize"] body { +:root:not(:--deprecated-font-size):--iOS-patch[style*="--USER__fontSize"] body { -webkit-text-size-adjust: var(--USER__fontSize) !important; } @supports selector(figure:has(> img)) { - :root[style*="--USER__fontSize"] figure:has(> img), - :root[style*="--USER__fontSize"] figure:has(> video), - :root[style*="--USER__fontSize"] figure:has(> svg), - :root[style*="--USER__fontSize"] figure:has(> canvas), - :root[style*="--USER__fontSize"] figure:has(> iframe), - :root[style*="--USER__fontSize"] figure:has(> audio), - :root[style*="--USER__fontSize"] div:has(> img), - :root[style*="--USER__fontSize"] div:has(> video), - :root[style*="--USER__fontSize"] div:has(> svg), - :root[style*="--USER__fontSize"] div:has(> canvas), - :root[style*="--USER__fontSize"] div:has(> iframe), - :root[style*="--USER__fontSize"] div:has(> audio), - :root[style*="--USER__fontSize"] table { + :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), + :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; } - :root[style*="--USER__fontSize"] figcaption, - :root[style*="--USER__fontSize"] caption, - :root[style*="--USER__fontSize"] td, - :root[style*="--USER__fontSize"] th { + :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 { 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 a8224b8..9489c1e 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[style*="--USER__zoom"] figure:has(> img), - :root[style*="--USER__zoom"] figure:has(> video), - :root[style*="--USER__zoom"] figure:has(> svg), - :root[style*="--USER__zoom"] figure:has(> canvas), - :root[style*="--USER__zoom"] figure:has(> iframe), - :root[style*="--USER__zoom"] figure:has(> audio), - :root[style*="--USER__zoom"] div:has(> img), - :root[style*="--USER__zoom"] div:has(> video), - :root[style*="--USER__zoom"] div:has(> svg), - :root[style*="--USER__zoom"] div:has(> canvas), - :root[style*="--USER__zoom"] div:has(> iframe), - :root[style*="--USER__zoom"] div:has(> audio), - :root[style*="--USER__zoom"] table { + :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), + :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; } - :root[style*="--USER__zoom"] figcaption, - :root[style*="--USER__zoom"] caption, - :root[style*="--USER__zoom"] td, - :root[style*="--USER__zoom"] th { + :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 { zoom: var(--USER__zoom) !important; } } From 5fd06230991776a50272e80f9795aac8509fb6d7 Mon Sep 17 00:00:00 2001 From: Jiminy Panoz Date: Tue, 4 Nov 2025 09:29:31 +0100 Subject: [PATCH 4/7] Update migration doc --- docs/CSS02-quickstart.md | 3 +- docs/CSS28-migration_guide.md | 28 +++++++++++++++++- docs/ReadiumCSS_docs.epub | Bin 3686471 -> 3686925 bytes .../OEBPS/Text/Section-002.xhtml | 4 ++- .../OEBPS/Text/Section-028.xhtml | 28 ++++++++++++++++++ docs/ReadiumCSS_docs/OEBPS/Text/nav.xhtml | 6 ++++ docs/ReadiumCSS_docs/OEBPS/toc.ncx | 12 ++++++++ 7 files changed, 78 insertions(+), 3 deletions(-) diff --git a/docs/CSS02-quickstart.md b/docs/CSS02-quickstart.md index 9832a58..7d593de 100644 --- a/docs/CSS02-quickstart.md +++ b/docs/CSS02-quickstart.md @@ -118,7 +118,8 @@ Other scripts are available: - `build:ltr` for default stylesheets (Left to Right); - `build:rtl` for Right to Left stylesheets; - `build:cjk` for CJK scripts; -- `build:vertical` for CJK and the Mongolian scripts in vertical writing. +- `build:vertical` for CJK and the Mongolian scripts in vertical writing; +- `build:web` for Web Publications stylesheets. ### Additional info diff --git a/docs/CSS28-migration_guide.md b/docs/CSS28-migration_guide.md index f7a6881..04b4c38 100644 --- a/docs/CSS28-migration_guide.md +++ b/docs/CSS28-migration_guide.md @@ -231,4 +231,30 @@ The 5 following custom properties are available: - `--RS__scrollPaddingLeft` - `--RS__scrollPaddingRight` -They accept the same values as the CSS property `padding`. \ No newline at end of file +They accept the same values as the CSS property `padding`. + +## Ligatures moved to the global space + +As of version `2.0.0-beta.21`, ligatures are no longer limited to RTL (arabic and farsi scripts). The setting is now available in Latin scripts as well. + +## Experimental Web Publications stylesheet + +As of version `2.0.0-beta.21`, ReadiumCSS provides an experimental stylesheet for Web Publications. It ships with the following features: + +- font-family +- font variations (weight, width, optical-sizing) +- hyphens +- letter spacing +- ligatures +- line height +- paragraph indent +- paragraph spacing +- Ruby annotations disabling +- text alignment +- text normalization +- word spacing +- zoom + +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 diff --git a/docs/ReadiumCSS_docs.epub b/docs/ReadiumCSS_docs.epub index f2bebcae2e7dcdd4a199b751fcab42421c90c2ea..33217024a53b178aa6bacaa999dce5fac1cad55a 100644 GIT binary patch delta 13159 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 delta 12667 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:cjk for CJK scripts; -
  • build:vertical for CJK and the Mongolian scripts in vertical writing.
  • +
  • build:vertical for CJK and the Mongolian scripts in vertical writing;
  • + +
  • build:web for Web Publications stylesheets.
  • diff --git a/docs/ReadiumCSS_docs/OEBPS/Text/Section-028.xhtml b/docs/ReadiumCSS_docs/OEBPS/Text/Section-028.xhtml index f14bc26..ad25e73 100644 --- a/docs/ReadiumCSS_docs/OEBPS/Text/Section-028.xhtml +++ b/docs/ReadiumCSS_docs/OEBPS/Text/Section-028.xhtml @@ -281,6 +281,34 @@ const backgroundColor = defaultColors.RS__backgroundColor;

    They accept the same values as the CSS property padding.

    + +
    +

    Ligatures moved to the global space

    + +

    Since version 2.0.0-beta.21, ligatures are no longer limited to RTL (arabic and farsi scripts). The setting is now available in Latin scripts as well.

    +
    + +
    +

    Experimental Web Publications stylesheet

    + +

    Since version 2.0.0-beta.21, ReadiumCSS provides an experimental stylesheet for Web Publications. It ships with the following features:

    + +
      +
    • font-family
    • +
    • font variations (weight, width, optical-sizing)
    • +
    • hyphens
    • +
    • letter spacing
    • +
    • ligatures
    • +
    • line height
    • +
    • paragraph indent
    • +
    • paragraph spacing
    • +
    • Ruby annotations disabling
    • +
    + +

    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 diff --git a/docs/ReadiumCSS_docs/OEBPS/Text/nav.xhtml b/docs/ReadiumCSS_docs/OEBPS/Text/nav.xhtml index 7bfff55..75237a9 100644 --- a/docs/ReadiumCSS_docs/OEBPS/Text/nav.xhtml +++ b/docs/ReadiumCSS_docs/OEBPS/Text/nav.xhtml @@ -753,6 +753,12 @@
  • Addition of scroll-padding module
  • +
  • + Ligatures moved to the global space +
  • +
  • + Experimental Web Publications stylesheet +
  • diff --git a/docs/ReadiumCSS_docs/OEBPS/toc.ncx b/docs/ReadiumCSS_docs/OEBPS/toc.ncx index 33fe94e..4588945 100644 --- a/docs/ReadiumCSS_docs/OEBPS/toc.ncx +++ b/docs/ReadiumCSS_docs/OEBPS/toc.ncx @@ -1377,6 +1377,18 @@ + + + Ligatures moved to the global space + + + + + + Experimental Web Publications stylesheet + + + \ No newline at end of file From 16264f3925871082e11dc755c816a015e0ce58d9 Mon Sep 17 00:00:00 2001 From: JayPanoz <12599652+JayPanoz@users.noreply.github.com> Date: Tue, 4 Nov 2025 08:49:17 +0000 Subject: [PATCH 5/7] Update dist --- css/dist/ReadiumCSS-after.css | 38 ++- css/dist/ReadiumCSS-before.css | 2 +- css/dist/ReadiumCSS-default.css | 2 +- css/dist/cjk-horizontal/ReadiumCSS-after.css | 30 +- css/dist/cjk-horizontal/ReadiumCSS-before.css | 2 +- .../cjk-horizontal/ReadiumCSS-default.css | 2 +- css/dist/cjk-vertical/ReadiumCSS-after.css | 30 +- css/dist/cjk-vertical/ReadiumCSS-before.css | 2 +- css/dist/cjk-vertical/ReadiumCSS-default.css | 2 +- css/dist/rtl/ReadiumCSS-after.css | 30 +- css/dist/rtl/ReadiumCSS-before.css | 2 +- css/dist/rtl/ReadiumCSS-default.css | 2 +- css/dist/webPub/ReadiumCSS-webPub.css | 270 ++++++++++++++++++ 13 files changed, 398 insertions(+), 16 deletions(-) create mode 100644 css/dist/webPub/ReadiumCSS-webPub.css diff --git a/css/dist/ReadiumCSS-after.css b/css/dist/ReadiumCSS-after.css index 267d30b..c020661 100644 --- a/css/dist/ReadiumCSS-after.css +++ b/css/dist/ReadiumCSS-after.css @@ -1,5 +1,5 @@ /*! - * Readium CSS v.2.0.0-beta.20 + * Readium CSS v.2.0.0-beta.21 * 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. @@ -293,10 +293,36 @@ body{ zoom:var(--USER__fontSize) !important; } -:root[style*="readium-iOSPatch-on"][style*="--USER__fontSize"] body{ +:root:not([style*="readium-deprecatedFontSize-on"])[style*="readium-iOSPatch-on"][style*="--USER__fontSize"] body{ -webkit-text-size-adjust:var(--USER__fontSize) !important; } +@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"] 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; + } + + :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{ + zoom:var(--USER__fontSize) !important; + } +} + @supports not (zoom: 1){ :root[style*="--USER__fontSize"]{ @@ -362,6 +388,14 @@ body{ font-variant:none; } +:root[style*="--USER__ligatures"]{ + font-variant-ligatures:var(--USER__ligatures) !important; +} + +:root[style*="--USER__ligatures"] *{ + font-variant-ligatures:inherit !important; +} + :root[style*="--USER__fontWeight"] body{ font-weight:var(--USER__fontWeight) !important; } diff --git a/css/dist/ReadiumCSS-before.css b/css/dist/ReadiumCSS-before.css index 4934347..8345892 100644 --- a/css/dist/ReadiumCSS-before.css +++ b/css/dist/ReadiumCSS-before.css @@ -1,5 +1,5 @@ /*! - * Readium CSS v.2.0.0-beta.20 + * Readium CSS v.2.0.0-beta.21 * 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 7d2c878..f75faa1 100644 --- a/css/dist/ReadiumCSS-default.css +++ b/css/dist/ReadiumCSS-default.css @@ -1,5 +1,5 @@ /*! - * Readium CSS v.2.0.0-beta.20 + * Readium CSS v.2.0.0-beta.21 * 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 364ccd2..61e3087 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.20 + * Readium CSS v.2.0.0-beta.21 * 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. @@ -221,10 +221,36 @@ body{ zoom:var(--USER__fontSize) !important; } -:root[style*="readium-iOSPatch-on"][style*="--USER__fontSize"] body{ +:root:not([style*="readium-deprecatedFontSize-on"])[style*="readium-iOSPatch-on"][style*="--USER__fontSize"] body{ -webkit-text-size-adjust:var(--USER__fontSize) !important; } +@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"] 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; + } + + :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{ + zoom:var(--USER__fontSize) !important; + } +} + @supports not (zoom: 1){ :root[style*="--USER__fontSize"]{ diff --git a/css/dist/cjk-horizontal/ReadiumCSS-before.css b/css/dist/cjk-horizontal/ReadiumCSS-before.css index a814ea3..b14fea6 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.20 + * Readium CSS v.2.0.0-beta.21 * 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 e3922a3..f172f80 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.20 + * Readium CSS v.2.0.0-beta.21 * 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 d9fab5f..1e16084 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.20 + * Readium CSS v.2.0.0-beta.21 * 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. @@ -206,10 +206,36 @@ body{ zoom:var(--USER__fontSize) !important; } -:root[style*="readium-iOSPatch-on"][style*="--USER__fontSize"] body{ +:root:not([style*="readium-deprecatedFontSize-on"])[style*="readium-iOSPatch-on"][style*="--USER__fontSize"] body{ -webkit-text-size-adjust:var(--USER__fontSize) !important; } +@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"] 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; + } + + :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{ + zoom:var(--USER__fontSize) !important; + } +} + @supports not (zoom: 1){ :root[style*="--USER__fontSize"]{ diff --git a/css/dist/cjk-vertical/ReadiumCSS-before.css b/css/dist/cjk-vertical/ReadiumCSS-before.css index f073849..93c2b79 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.20 + * Readium CSS v.2.0.0-beta.21 * 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 ccec7c2..c007f26 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.20 + * Readium CSS v.2.0.0-beta.21 * 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 6e63902..8d8b264 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.20 + * Readium CSS v.2.0.0-beta.21 * 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. @@ -235,10 +235,36 @@ body{ zoom:var(--USER__fontSize) !important; } -:root[style*="readium-iOSPatch-on"][style*="--USER__fontSize"] body{ +:root:not([style*="readium-deprecatedFontSize-on"])[style*="readium-iOSPatch-on"][style*="--USER__fontSize"] body{ -webkit-text-size-adjust:var(--USER__fontSize) !important; } +@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"] 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; + } + + :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{ + zoom:var(--USER__fontSize) !important; + } +} + @supports not (zoom: 1){ :root[style*="--USER__fontSize"]{ diff --git a/css/dist/rtl/ReadiumCSS-before.css b/css/dist/rtl/ReadiumCSS-before.css index a814ea3..b14fea6 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.20 + * Readium CSS v.2.0.0-beta.21 * 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 a5392c7..d29dfa7 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.20 + * Readium CSS v.2.0.0-beta.21 * 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 new file mode 100644 index 0000000..5408722 --- /dev/null +++ b/css/dist/webPub/ReadiumCSS-webPub.css @@ -0,0 +1,270 @@ +/*! + * Readium CSS v.2.0.0-beta.21 + * 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. + * Core maintainer: Jiminy Panoz + * Contributors: + * Daniel Weck + * Hadrien Gardeur + * Innovimax + * L. Le Meur + * Mickaël Menu + * k_taka + */ + +:root[style*="--USER__textAlign"]{ + text-align:var(--USER__textAlign); +} + +: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"] li, +:root[style*="--USER__textAlign"] dd{ + text-align:var(--USER__textAlign) !important; + -moz-text-align-last:auto !important; + -epub-text-align-last:auto !important; + text-align-last:auto !important; +} + +:root[style*="--USER__bodyHyphens"]{ + -webkit-hyphens:var(--USER__bodyHyphens) !important; + -moz-hyphens:var(--USER__bodyHyphens) !important; + -ms-hyphens:var(--USER__bodyHyphens) !important; + -epub-hyphens:var(--USER__bodyHyphens) !important; + hyphens:var(--USER__bodyHyphens) !important; +} + +:root[style*="--USER__bodyHyphens"] body, +:root[style*="--USER__bodyHyphens"] p, +:root[style*="--USER__bodyHyphens"] li, +:root[style*="--USER__bodyHyphens"] div, +:root[style*="--USER__bodyHyphens"] dd{ + -webkit-hyphens:inherit; + -moz-hyphens:inherit; + -ms-hyphens:inherit; + -epub-hyphens:inherit; + hyphens:inherit; +} + +:root[style*="--USER__fontFamily"]{ + font-family:var(--USER__fontFamily) !important; +} + +:root[style*="--USER__fontFamily"] *{ + font-family:revert !important; +} + +:root[style*="AccessibleDfA"]{ + font-family:AccessibleDfA, Verdana, Tahoma, "Trebuchet MS", sans-serif !important; +} + +:root[style*="IA Writer Duospace"]{ + font-family:"IA Writer Duospace", Menlo, "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace !important; +} + +:root[style*="AccessibleDfA"],:root[style*="IA Writer Duospace"], +:root[style*="readium-a11y-on"]{ + font-style:normal !important; + font-weight:normal !important; +} + +:root[style*="AccessibleDfA"] body *:not(code):not(var):not(kbd):not(samp),:root[style*="IA Writer Duospace"] body *:not(code):not(var):not(kbd):not(samp), +:root[style*="readium-a11y-on"] body *:not(code):not(var):not(kbd):not(samp){ + font-family:inherit !important; + font-style:inherit !important; + font-weight:inherit !important; +} + +:root[style*="AccessibleDfA"] body *,:root[style*="IA Writer Duospace"] body *, +:root[style*="readium-a11y-on"] body *{ + text-decoration:none !important; + font-variant-caps:normal !important; + font-variant-numeric:normal !important; + font-variant-position:normal !important; +} + +:root[style*="AccessibleDfA"] sup,:root[style*="IA Writer Duospace"] sup, +:root[style*="readium-a11y-on"] sup, +:root[style*="AccessibleDfA"] sub, +:root[style*="IA Writer Duospace"] sub, +:root[style*="readium-a11y-on"] sub{ + font-size:1rem !important; + vertical-align:baseline !important; +} + +:root:not([style*="readium-iOSPatch-on"])[style*="--USER__zoom"] body{ + zoom:var(--USER__zoom) !important; +} + +:root[style*="readium-iOSPatch-on"][style*="--USER__zoom"] body{ + -webkit-text-size-adjust:var(--USER__zoom) !important; +} + +@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"] 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; + } + + :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{ + zoom:var(--USER__zoom) !important; + } +} + +:root[style*="--USER__lineHeight"]{ + line-height:var(--USER__lineHeight) !important; +} + +:root[style*="--USER__lineHeight"] body, +:root[style*="--USER__lineHeight"] p, +:root[style*="--USER__lineHeight"] li, +:root[style*="--USER__lineHeight"] div{ + line-height:inherit; +} + +:root[style*="--USER__paraSpacing"] p{ + margin-top:var(--USER__paraSpacing) !important; + margin-bottom:var(--USER__paraSpacing) !important; +} + +:root[style*="--USER__paraIndent"] p{ + text-indent:var(--USER__paraIndent) !important; +} + +:root[style*="--USER__paraIndent"] p *, +:root[style*="--USER__paraIndent"] p:first-letter{ + text-indent:0 !important; +} + +:root[style*="--USER__wordSpacing"] h1, +:root[style*="--USER__wordSpacing"] h2, +:root[style*="--USER__wordSpacing"] h3, +:root[style*="--USER__wordSpacing"] h4, +:root[style*="--USER__wordSpacing"] h5, +:root[style*="--USER__wordSpacing"] h6, +:root[style*="--USER__wordSpacing"] p, +:root[style*="--USER__wordSpacing"] li, +:root[style*="--USER__wordSpacing"] div, +:root[style*="--USER__wordSpacing"] dt, +:root[style*="--USER__wordSpacing"] dd{ + word-spacing:var(--USER__wordSpacing); +} + +:root[style*="--USER__letterSpacing"] h1, +:root[style*="--USER__letterSpacing"] h2, +:root[style*="--USER__letterSpacing"] h3, +:root[style*="--USER__letterSpacing"] h4, +:root[style*="--USER__letterSpacing"] h5, +:root[style*="--USER__letterSpacing"] h6, +:root[style*="--USER__letterSpacing"] p, +:root[style*="--USER__letterSpacing"] li, +:root[style*="--USER__letterSpacing"] div, +:root[style*="--USER__letterSpacing"] dt, +:root[style*="--USER__letterSpacing"] dd{ + letter-spacing:var(--USER__letterSpacing); + font-variant:none; +} + +:root[style*="--USER__fontWeight"] body{ + font-weight:var(--USER__fontWeight) !important; +} + +:root[style*="--USER__fontWeight"] b, +:root[style*="--USER__fontWeight"] strong{ + font-weight:bolder; +} + +:root[style*="--USER__fontWidth"] body{ + font-stretch:var(--USER__fontWidth) !important; +} + +:root[style*="--USER__fontOpticalSizing"] body{ + font-optical-sizing:var(--USER__fontOpticalSizing) !important; +} + +:root[style*="readium-noRuby-on"] body rt, +:root[style*="readium-noRuby-on"] body rp{ + display:none; +} + +:root[style*="--USER__ligatures"]{ + font-variant-ligatures:var(--USER__ligatures) !important; +} + +:root[style*="--USER__ligatures"] *{ + font-variant-ligatures:inherit !important; +} + +:root[style*="readium-iPadOSPatch-on"] body{ + -webkit-text-size-adjust:none; +} + +:root[style*="readium-iPadOSPatch-on"] p, +:root[style*="readium-iPadOSPatch-on"] h1, +:root[style*="readium-iPadOSPatch-on"] h2, +:root[style*="readium-iPadOSPatch-on"] h3, +:root[style*="readium-iPadOSPatch-on"] h4, +:root[style*="readium-iPadOSPatch-on"] h5, +:root[style*="readium-iPadOSPatch-on"] h6, +:root[style*="readium-iPadOSPatch-on"] li, +:root[style*="readium-iPadOSPatch-on"] th, +:root[style*="readium-iPadOSPatch-on"] td, +:root[style*="readium-iPadOSPatch-on"] dt, +:root[style*="readium-iPadOSPatch-on"] dd, +:root[style*="readium-iPadOSPatch-on"] pre, +:root[style*="readium-iPadOSPatch-on"] address, +:root[style*="readium-iPadOSPatch-on"] details, +:root[style*="readium-iPadOSPatch-on"] summary, +:root[style*="readium-iPadOSPatch-on"] figcaption, +:root[style*="readium-iPadOSPatch-on"] div:not(:has(p, h1, h2, h3, h4, h5, h6, li, th, td, dt, dd, pre, address, aside, details, figcaption, summary)), +:root[style*="readium-iPadOSPatch-on"] aside:not(:has(p, h1, h2, h3, h4, h5, h6, li, th, td, dt, dd, pre, address, aside, details, figcaption, summary)){ + -webkit-text-zoom:reset; +} + +:root[style*="readium-iPadOSPatch-on"] abbr, +:root[style*="readium-iPadOSPatch-on"] b, +:root[style*="readium-iPadOSPatch-on"] bdi, +:root[style*="readium-iPadOSPatch-on"] bdo, +:root[style*="readium-iPadOSPatch-on"] cite, +:root[style*="readium-iPadOSPatch-on"] code, +:root[style*="readium-iPadOSPatch-on"] dfn, +:root[style*="readium-iPadOSPatch-on"] em, +:root[style*="readium-iPadOSPatch-on"] i, +:root[style*="readium-iPadOSPatch-on"] kbd, +:root[style*="readium-iPadOSPatch-on"] mark, +:root[style*="readium-iPadOSPatch-on"] q, +:root[style*="readium-iPadOSPatch-on"] rp, +:root[style*="readium-iPadOSPatch-on"] rt, +:root[style*="readium-iPadOSPatch-on"] ruby, +:root[style*="readium-iPadOSPatch-on"] s, +:root[style*="readium-iPadOSPatch-on"] samp, +:root[style*="readium-iPadOSPatch-on"] small, +:root[style*="readium-iPadOSPatch-on"] span, +:root[style*="readium-iPadOSPatch-on"] strong, +:root[style*="readium-iPadOSPatch-on"] sub, +:root[style*="readium-iPadOSPatch-on"] sup, +:root[style*="readium-iPadOSPatch-on"] time, +:root[style*="readium-iPadOSPatch-on"] u, +:root[style*="readium-iPadOSPatch-on"] var{ + -webkit-text-zoom:normal; +} + +:root[style*="readium-iPadOSPatch-on"] p:not(:has(b, cite, em, i, q, s, small, span, strong)):first-line{ + -webkit-text-zoom:normal; +} \ No newline at end of file From cfe2f6dda1b7f848d04b2d7cd6c3b0d9df7e8c42 Mon Sep 17 00:00:00 2001 From: Jiminy Panoz Date: Thu, 6 Nov 2025 15:47:39 +0100 Subject: [PATCH 6/7] Bump version --- css/dist/ReadiumCSS-after.css | 2 +- css/dist/ReadiumCSS-before.css | 2 +- css/dist/ReadiumCSS-default.css | 2 +- css/dist/cjk-horizontal/ReadiumCSS-after.css | 2 +- css/dist/cjk-horizontal/ReadiumCSS-before.css | 2 +- css/dist/cjk-horizontal/ReadiumCSS-default.css | 2 +- css/dist/cjk-vertical/ReadiumCSS-after.css | 2 +- css/dist/cjk-vertical/ReadiumCSS-before.css | 2 +- css/dist/cjk-vertical/ReadiumCSS-default.css | 2 +- css/dist/rtl/ReadiumCSS-after.css | 2 +- css/dist/rtl/ReadiumCSS-before.css | 2 +- css/dist/rtl/ReadiumCSS-default.css | 2 +- css/dist/webPub/ReadiumCSS-webPub.css | 10 +++++++--- package-lock.json | 4 ++-- package.json | 2 +- 15 files changed, 22 insertions(+), 18 deletions(-) diff --git a/css/dist/ReadiumCSS-after.css b/css/dist/ReadiumCSS-after.css index 06d121c..57d7c3c 100644 --- a/css/dist/ReadiumCSS-after.css +++ b/css/dist/ReadiumCSS-after.css @@ -1,5 +1,5 @@ /*! - * Readium CSS v.2.0.0-beta.21 + * Readium CSS v.2.0.0-beta.22 * 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-before.css b/css/dist/ReadiumCSS-before.css index 8345892..9e205d9 100644 --- a/css/dist/ReadiumCSS-before.css +++ b/css/dist/ReadiumCSS-before.css @@ -1,5 +1,5 @@ /*! - * Readium CSS v.2.0.0-beta.21 + * Readium CSS v.2.0.0-beta.22 * 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 f75faa1..58a8139 100644 --- a/css/dist/ReadiumCSS-default.css +++ b/css/dist/ReadiumCSS-default.css @@ -1,5 +1,5 @@ /*! - * Readium CSS v.2.0.0-beta.21 + * Readium CSS v.2.0.0-beta.22 * 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 61e3087..724f104 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.21 + * Readium CSS v.2.0.0-beta.22 * 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-before.css b/css/dist/cjk-horizontal/ReadiumCSS-before.css index b14fea6..9d90c47 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.21 + * Readium CSS v.2.0.0-beta.22 * 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 f172f80..9394faa 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.21 + * Readium CSS v.2.0.0-beta.22 * 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 1e16084..4ee1db8 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.21 + * Readium CSS v.2.0.0-beta.22 * 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-before.css b/css/dist/cjk-vertical/ReadiumCSS-before.css index 93c2b79..e9b183f 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.21 + * Readium CSS v.2.0.0-beta.22 * 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 c007f26..e2c9c96 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.21 + * Readium CSS v.2.0.0-beta.22 * 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 3f715c2..ed19ada 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.21 + * Readium CSS v.2.0.0-beta.22 * 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-before.css b/css/dist/rtl/ReadiumCSS-before.css index b14fea6..9d90c47 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.21 + * Readium CSS v.2.0.0-beta.22 * 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 d29dfa7..65e4a53 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.21 + * Readium CSS v.2.0.0-beta.22 * 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 5408722..4d59b84 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.21 + * Readium CSS v.2.0.0-beta.22 * 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. @@ -76,9 +76,13 @@ font-weight:inherit !important; } +:root[style*="AccessibleDfA"] body *:not(a),:root[style*="IA Writer Duospace"] body *:not(a), +:root[style*="readium-a11y-on"] body *:not(a){ + text-decoration:none !important; +} + :root[style*="AccessibleDfA"] body *,:root[style*="IA Writer Duospace"] body *, :root[style*="readium-a11y-on"] body *{ - text-decoration:none !important; font-variant-caps:normal !important; font-variant-numeric:normal !important; font-variant-position:normal !important; @@ -143,7 +147,7 @@ margin-bottom:var(--USER__paraSpacing) !important; } -:root[style*="--USER__paraIndent"] p{ +: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)){ text-indent:var(--USER__paraIndent) !important; } diff --git a/package-lock.json b/package-lock.json index 3e171f3..b88e3bb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@readium/css", - "version": "2.0.0-beta.21", + "version": "2.0.0-beta.22", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@readium/css", - "version": "2.0.0-beta.21", + "version": "2.0.0-beta.22", "license": "BSD-3-Clause", "devDependencies": { "@daltontan/postcss-import-json": "^1.1.1", diff --git a/package.json b/package.json index a982fc8..6480c4b 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.21", + "version": "2.0.0-beta.22", "homepage": "https://github.com/readium/css", "license": "BSD-3-Clause", "keywords": [ From 6e0766f044f918c4161615193eb56239c05c53c2 Mon Sep 17 00:00:00 2001 From: Jiminy Panoz Date: Thu, 6 Nov 2025 15:49:36 +0100 Subject: [PATCH 7/7] Update docs --- docs/CSS28-migration_guide.md | 4 ++-- docs/ReadiumCSS_docs.epub | Bin 3686925 -> 3686926 bytes .../OEBPS/Text/Section-028.xhtml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/CSS28-migration_guide.md b/docs/CSS28-migration_guide.md index 04b4c38..e731dfb 100644 --- a/docs/CSS28-migration_guide.md +++ b/docs/CSS28-migration_guide.md @@ -235,11 +235,11 @@ They accept the same values as the CSS property `padding`. ## Ligatures moved to the global space -As of version `2.0.0-beta.21`, ligatures are no longer limited to RTL (arabic and farsi scripts). The setting is now available in Latin scripts as well. +As of version `2.0.0-beta.22`, ligatures are no longer limited to RTL (arabic and farsi scripts). The setting is now available in Latin scripts as well. ## Experimental Web Publications stylesheet -As of version `2.0.0-beta.21`, ReadiumCSS provides an experimental stylesheet for Web Publications. It ships with the following features: +As of version `2.0.0-beta.22`, ReadiumCSS provides an experimental stylesheet for Web Publications. It ships with the following features: - font-family - font variations (weight, width, optical-sizing) diff --git a/docs/ReadiumCSS_docs.epub b/docs/ReadiumCSS_docs.epub index 33217024a53b178aa6bacaa999dce5fac1cad55a..10579c1a2ef4688caf788ecc9e55b31f38f04603 100644 GIT binary patch delta 1107 zcmYLG3rtg27;bN&56em&x3YhiD%XrH&DWRZe?p0RIE`Xk~zm5x&^1*hB_u{W5#A!!*1^-@gz6r`_K1%|NXyn z+QH91zD;5m>%B*sVxim2CCvS`C9 zsxgd3R}v|iT0-urD$5I8O|SR*H&7L1bA9x}*5X9hK;=l(%!5G9n|ArqzH!fP!Ju#N zUyggkcg2Cg?e0^)jmJ`Vw>C%C{&V(S_a`L>4+fQrAI_tezF}2Q19i98+d6aEIs4nU z4e2A^O<`kC${o{=A!%^^oauh}RJ~GXk?;+M>vCH;5Fcg+0I660Oy zOfv6^+gx91PyKWli659WJ317V1v}eMrtBO#`c;IdNOHX7>6OURwWn<{UE3es=pL7z zx>Q4S#Lu}8ANi6DhsUQk_FfC_pqX`rPJo&HH#A-Hr<7W3#uhni{8N%#D{7yF8f}NgmJR#6BHG z;&KBLdEf7$u97Uh`1hl(Jccf?v$VJ70`&^VwAaO@@Z~&SzKLUQ-l9Htvk%tj)Gp?; zs9{ulu9!sz1@Z`46o^Mvi6Mkb5&DP)zazAc1(`bZ5nyQcJP%QqUniAoU z^+-kZ*RcnadXz()Xk%~;zSc&Gae@Iwuw60?h$M79tcr;fwK|mZSr8sCfyXUAvz=_w z;zI_M!8*r6&YoMW^NE4!@1JKeZA3ZzK3r==g~T6H?59KjG$M_lLZQV?3T*;TrkTm6 zqB&|CjWmQ=9V%k+FwJ;v_zsN<`46$mglt5=k<)!>Vsx8}xZ?Xz5!}L=vR>DU@J-`# zplmZU)_YD)x6RDxXcwoebuqddCM3rt16sK>6pIU0gzuP_L&+?Rd&el}J~65l<3bBF zZ0U9Gq|L(g)86NbpDZYs7+m6-|GLC9PqQMGpiYQzvYrXO-HM{vn`*HlQjn!Un6E?8 c_$>tz<1^OfaVHs$Ka1~Kky5x`jhLDK2c}B68~^|S delta 1106 zcmZ8e3rtg27{0d`N&zVdEtOuVMcsH53k7@c0a|ELsaThYkBC$=439NzuEUyz$b0;X zgjFSTJCQ^a2qUtQje*h<7GRJqPTa%5;-f-jnCvAiu#p(Mjh)gi%XX8Kd;b4?-+#{c zeHUP!c97KwGzfr!00;yj1c3;GAp}BU1B8JX!XW}SLL@|i1f&oRGS~z$AO{v=Ar2I< z8I%wYTVN|}gBRdMNPt90f@DxZ3Ty{8q(T~KARRJb2WW3_&w`kNj#8&5h9d_yLs9jm(~Q=gN5l&UCO@#9k2W* zENZ6jxxWtV_~iSAF_XFZDrZ`etSRP}YQEc%FsO|87!$jisssm*AKth6+MPn1bok=( z?a%G22duVEQT-2N5BuE3vghqHb>D_||6(}R7%6zOqVGcE*-7_Nt<=K?kIb}Z6dv2N zGTAVE>8mESM^^2&)p1MDgRb|by86C}l}%2?6(2d9*gD;8v9*p4JRI#TsnlR9uP78eDmI^NpgCmXuxh z<~}w#WP97D0~FdBZPNBqK14Ks;_CiR&!3ldhklyaeNrXsHWn_noQbLtzqdSe?yX_h z)PSm7d@(9pI;0L$o~fL=IoZpfp1X8V+fcg}Kr2k{3B%(CXPuS%LeJQV&G|i?hZVom zQEKt5{@SHwDQed-{8=W)Ix8o*d^XHMP8{}4Tj&Ui%EMJNJnOta%XM`y?IfAHYTlE_ zTp?p>M)=VprjqP*5;Q1e%;a=Mjw<53sbUL4=e(ifCkUCmnPPP&n*KLZ9Fm1z7SviX zorz?)-^vBy)-04P=(YPgvv$(CY(NosAq&X`*V?@8Xe`Y}60ZoHl8sma>hXa~vQd=s zzk(<#mhycx`E@sO6F%q%1j-PFc-%YS{aIi4_iUsQJYMt_IXa}Fuj4m#sDN1rS10KzTZp>6pVxtP$G($jWxN5Wo*^|+>lEMx)wjd*20VM zP%cWQ&3HZ+sl1usa03x_as-bXh^adb1b=kK&vuZC=J1#S?PWe(^ADL@BSVsmMA|7K z@(PvWSB*##Pg1pvZ}V)e6;f1&?EhY>CF|H|JY*zhlHBnfBVy?%_(vmB3QcN69RC|q CzL!e? diff --git a/docs/ReadiumCSS_docs/OEBPS/Text/Section-028.xhtml b/docs/ReadiumCSS_docs/OEBPS/Text/Section-028.xhtml index ad25e73..1db4bbf 100644 --- a/docs/ReadiumCSS_docs/OEBPS/Text/Section-028.xhtml +++ b/docs/ReadiumCSS_docs/OEBPS/Text/Section-028.xhtml @@ -285,13 +285,13 @@ const backgroundColor = defaultColors.RS__backgroundColor;

    Ligatures moved to the global space

    -

    Since version 2.0.0-beta.21, ligatures are no longer limited to RTL (arabic and farsi scripts). The setting is now available in Latin scripts as well.

    +

    Since version 2.0.0-beta.22, ligatures are no longer limited to RTL (arabic and farsi scripts). The setting is now available in Latin scripts as well.

    Experimental Web Publications stylesheet

    -

    Since version 2.0.0-beta.21, ReadiumCSS provides an experimental stylesheet for Web Publications. It ships with the following features:

    +

    Since version 2.0.0-beta.22, ReadiumCSS provides an experimental stylesheet for Web Publications. It ships with the following features:

    • font-family