From 894dbaea7f87f6bbf688014b8030192db0707b46 Mon Sep 17 00:00:00 2001 From: Hadrien Gardeur Date: Wed, 26 Jun 2024 11:01:13 +0200 Subject: [PATCH 1/3] Added the concept of meaningful spread Dropped appendix for examples now that we have better examples in the spec --- profiles/divina.md | 128 +++++++++--------- .../extensions/divina/properties.schema.json | 5 + 2 files changed, 68 insertions(+), 65 deletions(-) diff --git a/profiles/divina.md b/profiles/divina.md index a633913..a6ff0c4 100644 --- a/profiles/divina.md +++ b/profiles/divina.md @@ -159,6 +159,67 @@ Reading systems are strongly encouraged to let the user decide if they prefer re - paginated or scrolled - with or without spreads (for example, with spreads in landscape mode but without spreads in portrait mode) +Some publications may contain spreads where the user needs to navigate back and forth between both pages of the spread to read through the publication. + +In order to convey this information, this profile introduces a new property for Link Objects: + +
+
meaningful-spread
+
Hint that the current resource should be presented in a spread to fully convey the meaning of its content.
+
+ +*Example 4: Meaningful spread in a manga* + +```json +{ + "metadata": { + "title": "Kawaii Nekko", + "identifier": "https://example.com/kawaii-nekko", + "conformsTo": "https://readium.org/webpub-manifest/profiles/divina", + "readingProgression": "rtl" + }, + "readingOrder": [ + { + "href": "cover.jpg", + "type": "image/jpeg", + "properties": { + "page": "center" + } + }, + { + "href": "page1.jpg", + "type": "image/jpeg", + "properties": { + "page": "right" + } + }, + { + "href": "page2.jpg", + "type": "image/jpeg", + "properties": { + "page": "left" + } + }, + { + "href": "page3.jpg", + "type": "image/jpeg", + "properties": { + "page": "right", + "meaningful-spread": true + } + }, + { + "href": "page4.jpg", + "type": "image/jpeg", + "properties": { + "page": "left", + "meaningful-spread": true + } + } + ] +} +``` + ### 4.2. Scrolled publications For publications where a single continuous scroll is required to properly display the publication (such as webtoons for example), content creators should use the [`layout`](../contexts/default/README.md#layout-and-reading-progression) property with the `scrolled` value. @@ -170,7 +231,7 @@ In order to override the default behaviour of displaying all images from the `re
Specifies that an item in the reading order should break the current continuous scroll and start a new one.
-*Example 4: A scrolled publication with a break in its continuous scroll* +*Example 5: A scrolled publication with a break in its continuous scroll* ```json { @@ -226,70 +287,7 @@ As an alternative, the manifest may also be included in: - an EPUB 3 publication, as specified in the [Readium Packaging Format](./packaging.md#6-hybrid-epub-3--rpf-packages) specification - or dedicated formats for comics such as CBZ/CBR - -## Appendix A. Examples - -*Example 5: A manga is a Divina where the reading progression is right-to-left* - - -```json -{ - "metadata": { - "title": "Manga", - "identifier": "https://example.com/manga", - "conformsTo": "https://readium.org/webpub-manifest/profiles/divina", - "readingProgression": "rtl" - }, - "readingOrder": [ - { - "rel": "cover", - "href": "cover.jpg", - "type": "image/jpeg", - "properties": { "page": "center" } - }, - { - "href": "page1.jpg", - "type": "image/jpeg", - "properties": { "page": "right" } - }, - { - "href": "page2.jpg", - "type": "image/jpeg", - "properties": { "page": "left" } - } - ] -} -``` - -*Example 6: A continuously scrolled publication (a "webtoon") is a Divina where images are displayed in a single continuous strip of content* - - -```json -{ - "metadata": { - "title": "Webtoon", - "identifier": "https://example.com/webtoon", - "conformsTo": "https://readium.org/webpub-manifest/profiles/divina", - "layout": "scrolled" - }, - "readingOrder": [ - { - "href": "image1.jpg", - "type": "image/jpeg" - }, - { - "href": "image2.jpg", - "type": "image/jpeg" - }, - { - "href": "image3.jpg", - "type": "image/jpeg" - } - ] -} -``` - -## Appendix B. JSON Schema +## Appendix A. JSON Schema The following JSON Schemas for this profile is available under version control: diff --git a/schema/extensions/divina/properties.schema.json b/schema/extensions/divina/properties.schema.json index da4c9c9..df936ae 100644 --- a/schema/extensions/divina/properties.schema.json +++ b/schema/extensions/divina/properties.schema.json @@ -8,6 +8,11 @@ "description": "Specifies that an item in the reading order should break the current continuous scroll and start a new one.", "type": "boolean", "default": false + }, + "meaningful-spread": { + "description": "Hint that the current resource should be presented in a spread to fully convey the meaning of its content.", + "type": "boolean", + "default": false } } } From 4deda7e607d56f64c2c06e0e1b662071bc96fe9a Mon Sep 17 00:00:00 2001 From: Hadrien Gardeur Date: Thu, 4 Jul 2024 16:32:56 +0200 Subject: [PATCH 2/3] Updated new properties to camel case --- profiles/divina.md | 10 +++++----- properties.md | 4 +++- schema/extensions/divina/properties.schema.json | 4 ++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/profiles/divina.md b/profiles/divina.md index a6ff0c4..04826b2 100644 --- a/profiles/divina.md +++ b/profiles/divina.md @@ -164,7 +164,7 @@ Some publications may contain spreads where the user needs to navigate back and In order to convey this information, this profile introduces a new property for Link Objects:
-
meaningful-spread
+
meaningfulSpread
Hint that the current resource should be presented in a spread to fully convey the meaning of its content.
@@ -205,7 +205,7 @@ In order to convey this information, this profile introduces a new property for "type": "image/jpeg", "properties": { "page": "right", - "meaningful-spread": true + "meaningfulSpread": true } }, { @@ -213,7 +213,7 @@ In order to convey this information, this profile introduces a new property for "type": "image/jpeg", "properties": { "page": "left", - "meaningful-spread": true + "meaningfulSpread": true } } ] @@ -227,7 +227,7 @@ For publications where a single continuous scroll is required to properly displa In order to override the default behaviour of displaying all images from the `readingOrder` in a single continuous scroll, this profile also introduces a new property for Link Objects:
-
break-scroll-before
+
breakScrollBefore
Specifies that an item in the reading order should break the current continuous scroll and start a new one.
@@ -258,7 +258,7 @@ In order to override the default behaviour of displaying all images from the `re "href": "episode2-image1.jpg", "type": "image/jpeg", "properties": { - "break-scroll-before": true + "breakScrollBefore": true } }, { diff --git a/properties.md b/properties.md index 0725902..d6cdf12 100644 --- a/properties.md +++ b/properties.md @@ -42,9 +42,11 @@ The `page` property is meant to provide a hint to reading systems that rely on s | Key | Semantics | Type | Values | Reference | | ----- | --------- | -------- | --------- | --------- | +| [`breakScrollBefore`](/profiles/divina.md#42-scrolled-publications) | Hint that the current resource should be presented in a spread to fully convey the meaning of its content. | Boolean | Defaults to `false` | [Divina Profile](/profiles/divina.md) | | [`contains`](/profiles/epub.md#contains) | Indentifies content contained in the linked resource, that cannot be strictly identified using a media type. | Array | `mathml`, `onix`, `remote-resources`, `js`, `svg` or `xmp` | [EPUB Profile](/profiles/epub.md#properties) | -| [`layout`](/profiles/epub.md#layout) | Hint about the nature of the layout for the linked resources. | String | `fixed` or `reflowable` | [EPUB Profile](/profiles/epub.md#properties) | | [`encrypted`](/modules/encryption.md) | Indicates how a given resource has been encrypted or obfuscated. | [Encryption Object](/modules/encryption.md#encryption-object) | See the definition of the Encryption Object | [Encryption Module](/modules/encryption.md) | +| [`layout`](/profiles/epub.md#layout) | Hint about the nature of the layout for the linked resources. | String | `fixed` or `reflowable` | [EPUB Profile](/profiles/epub.md#properties) | +| [`meaningfulSpread`](/profiles/divina.md#41-fixed-layout) | Specifies that an item in the reading order should break the current continuous scroll and start a new one. | Boolean | Defaults to `false` | [Divina Profile](/profiles/divina.md) | ## OPDS 2.0 diff --git a/schema/extensions/divina/properties.schema.json b/schema/extensions/divina/properties.schema.json index df936ae..ab0d450 100644 --- a/schema/extensions/divina/properties.schema.json +++ b/schema/extensions/divina/properties.schema.json @@ -4,12 +4,12 @@ "title": "Divina Profile - Link Properties", "type": "object", "properties": { - "break-scroll-before": { + "breakScrollBefore": { "description": "Specifies that an item in the reading order should break the current continuous scroll and start a new one.", "type": "boolean", "default": false }, - "meaningful-spread": { + "meaningfulSpread": { "description": "Hint that the current resource should be presented in a spread to fully convey the meaning of its content.", "type": "boolean", "default": false From ccce801f8efd3669ed7fd078b5f8eca7a79ba2ad Mon Sep 17 00:00:00 2001 From: Hadrien Gardeur Date: Sat, 14 Dec 2024 22:44:17 +0100 Subject: [PATCH 3/3] Fixed definitions in registry --- properties.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/properties.md b/properties.md index d6cdf12..ffb84e7 100644 --- a/properties.md +++ b/properties.md @@ -42,11 +42,11 @@ The `page` property is meant to provide a hint to reading systems that rely on s | Key | Semantics | Type | Values | Reference | | ----- | --------- | -------- | --------- | --------- | -| [`breakScrollBefore`](/profiles/divina.md#42-scrolled-publications) | Hint that the current resource should be presented in a spread to fully convey the meaning of its content. | Boolean | Defaults to `false` | [Divina Profile](/profiles/divina.md) | +| [`breakScrollBefore`](/profiles/divina.md#42-scrolled-publications) | Specifies that an item in the reading order should break the current continuous scroll and start a new one. | Boolean | Defaults to `false` | [Divina Profile](/profiles/divina.md) | | [`contains`](/profiles/epub.md#contains) | Indentifies content contained in the linked resource, that cannot be strictly identified using a media type. | Array | `mathml`, `onix`, `remote-resources`, `js`, `svg` or `xmp` | [EPUB Profile](/profiles/epub.md#properties) | | [`encrypted`](/modules/encryption.md) | Indicates how a given resource has been encrypted or obfuscated. | [Encryption Object](/modules/encryption.md#encryption-object) | See the definition of the Encryption Object | [Encryption Module](/modules/encryption.md) | | [`layout`](/profiles/epub.md#layout) | Hint about the nature of the layout for the linked resources. | String | `fixed` or `reflowable` | [EPUB Profile](/profiles/epub.md#properties) | -| [`meaningfulSpread`](/profiles/divina.md#41-fixed-layout) | Specifies that an item in the reading order should break the current continuous scroll and start a new one. | Boolean | Defaults to `false` | [Divina Profile](/profiles/divina.md) | +| [`meaningfulSpread`](/profiles/divina.md#41-fixed-layout) | Hint that the current resource should be presented in a spread to fully convey the meaning of its content. | Boolean | Defaults to `false` | [Divina Profile](/profiles/divina.md) | ## OPDS 2.0