diff --git a/DistFiles/localization/am/BloomMediumPriority.xlf b/DistFiles/localization/am/BloomMediumPriority.xlf
index 61221d938dd9..b7bb4de804a4 100644
--- a/DistFiles/localization/am/BloomMediumPriority.xlf
+++ b/DistFiles/localization/am/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/ar/BloomMediumPriority.xlf b/DistFiles/localization/ar/BloomMediumPriority.xlf
index 6675649c9a43..b7c3d48adc8e 100644
--- a/DistFiles/localization/ar/BloomMediumPriority.xlf
+++ b/DistFiles/localization/ar/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/az/BloomMediumPriority.xlf b/DistFiles/localization/az/BloomMediumPriority.xlf
index c960b1aee627..a779fc2e2eed 100644
--- a/DistFiles/localization/az/BloomMediumPriority.xlf
+++ b/DistFiles/localization/az/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/bn/BloomMediumPriority.xlf b/DistFiles/localization/bn/BloomMediumPriority.xlf
index cf8d7a95ea08..663ae2a5e099 100644
--- a/DistFiles/localization/bn/BloomMediumPriority.xlf
+++ b/DistFiles/localization/bn/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/en/BloomMediumPriority.xlf b/DistFiles/localization/en/BloomMediumPriority.xlf
index e772c774d38c..6043aaa0f316 100644
--- a/DistFiles/localization/en/BloomMediumPriority.xlf
+++ b/DistFiles/localization/en/BloomMediumPriority.xlf
@@ -784,7 +784,7 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -993,8 +993,8 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
+
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/es/BloomMediumPriority.xlf b/DistFiles/localization/es/BloomMediumPriority.xlf
index 76900d85e875..3055cc24f704 100644
--- a/DistFiles/localization/es/BloomMediumPriority.xlf
+++ b/DistFiles/localization/es/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,8 +1102,8 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
+
+ Edge to EdgeeBook de margen ceroSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/fr/BloomMediumPriority.xlf b/DistFiles/localization/fr/BloomMediumPriority.xlf
index 4526c25aeffe..88f08b5ad129 100644
--- a/DistFiles/localization/fr/BloomMediumPriority.xlf
+++ b/DistFiles/localization/fr/BloomMediumPriority.xlf
@@ -865,7 +865,7 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.Activez la mise en page à fond perdu pour l'impression. Cela active les indicateurs [Impression à fond perdu](https://en.wikipedia.org/wiki/Bleed_%28printing%29) sur toutes les mises en page. Pour plus d'informations, consultez [Mise en page à fond perdu](https://docs.bloomlibrary.org/full-bleed).BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/fuc/BloomMediumPriority.xlf b/DistFiles/localization/fuc/BloomMediumPriority.xlf
index fa7b09ec92f3..aa3cf4eb3dcb 100644
--- a/DistFiles/localization/fuc/BloomMediumPriority.xlf
+++ b/DistFiles/localization/fuc/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/ha/BloomMediumPriority.xlf b/DistFiles/localization/ha/BloomMediumPriority.xlf
index 5199f9c282c9..6bec11c0aa76 100644
--- a/DistFiles/localization/ha/BloomMediumPriority.xlf
+++ b/DistFiles/localization/ha/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/hi/BloomMediumPriority.xlf b/DistFiles/localization/hi/BloomMediumPriority.xlf
index dcc4672c33d3..01a58d5079a3 100644
--- a/DistFiles/localization/hi/BloomMediumPriority.xlf
+++ b/DistFiles/localization/hi/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/id/BloomMediumPriority.xlf b/DistFiles/localization/id/BloomMediumPriority.xlf
index eccc95428a32..5ddee3c023ba 100644
--- a/DistFiles/localization/id/BloomMediumPriority.xlf
+++ b/DistFiles/localization/id/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/km/BloomMediumPriority.xlf b/DistFiles/localization/km/BloomMediumPriority.xlf
index 1298a09873da..344e9da2d4bb 100644
--- a/DistFiles/localization/km/BloomMediumPriority.xlf
+++ b/DistFiles/localization/km/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/ksw/BloomMediumPriority.xlf b/DistFiles/localization/ksw/BloomMediumPriority.xlf
index 1a486911bef4..72f4b4cafc3f 100644
--- a/DistFiles/localization/ksw/BloomMediumPriority.xlf
+++ b/DistFiles/localization/ksw/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/kw/BloomMediumPriority.xlf b/DistFiles/localization/kw/BloomMediumPriority.xlf
index f1593086a45c..ec234999ea3e 100644
--- a/DistFiles/localization/kw/BloomMediumPriority.xlf
+++ b/DistFiles/localization/kw/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/ky/BloomMediumPriority.xlf b/DistFiles/localization/ky/BloomMediumPriority.xlf
index 7628bc42f43c..e619f14efba8 100644
--- a/DistFiles/localization/ky/BloomMediumPriority.xlf
+++ b/DistFiles/localization/ky/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/lo/BloomMediumPriority.xlf b/DistFiles/localization/lo/BloomMediumPriority.xlf
index fddd1db81e10..ac81a19078a7 100644
--- a/DistFiles/localization/lo/BloomMediumPriority.xlf
+++ b/DistFiles/localization/lo/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/mam/BloomMediumPriority.xlf b/DistFiles/localization/mam/BloomMediumPriority.xlf
index 7ef05b379017..b3900138949e 100644
--- a/DistFiles/localization/mam/BloomMediumPriority.xlf
+++ b/DistFiles/localization/mam/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/my/BloomMediumPriority.xlf b/DistFiles/localization/my/BloomMediumPriority.xlf
index 3f04fa270b36..836447d11867 100644
--- a/DistFiles/localization/my/BloomMediumPriority.xlf
+++ b/DistFiles/localization/my/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/ne/BloomMediumPriority.xlf b/DistFiles/localization/ne/BloomMediumPriority.xlf
index f8312fbc696f..98df82022158 100644
--- a/DistFiles/localization/ne/BloomMediumPriority.xlf
+++ b/DistFiles/localization/ne/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/pbu/BloomMediumPriority.xlf b/DistFiles/localization/pbu/BloomMediumPriority.xlf
index ae6291ff64a1..99d0784da6b0 100644
--- a/DistFiles/localization/pbu/BloomMediumPriority.xlf
+++ b/DistFiles/localization/pbu/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/prs/BloomMediumPriority.xlf b/DistFiles/localization/prs/BloomMediumPriority.xlf
index 6a556f72af92..eae06266d39d 100644
--- a/DistFiles/localization/prs/BloomMediumPriority.xlf
+++ b/DistFiles/localization/prs/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/pt/BloomMediumPriority.xlf b/DistFiles/localization/pt/BloomMediumPriority.xlf
index 68d309a4d87a..8121ab48598e 100644
--- a/DistFiles/localization/pt/BloomMediumPriority.xlf
+++ b/DistFiles/localization/pt/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,8 +1102,8 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
+
+ Edge to EdgeLivro Electrónico de Margem zeroSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/qaa/BloomMediumPriority.xlf b/DistFiles/localization/qaa/BloomMediumPriority.xlf
index 445fe1088213..2889335d2d17 100644
--- a/DistFiles/localization/qaa/BloomMediumPriority.xlf
+++ b/DistFiles/localization/qaa/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/quc/BloomMediumPriority.xlf b/DistFiles/localization/quc/BloomMediumPriority.xlf
index 6acc304f22c3..967de657be3c 100644
--- a/DistFiles/localization/quc/BloomMediumPriority.xlf
+++ b/DistFiles/localization/quc/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/ru/BloomMediumPriority.xlf b/DistFiles/localization/ru/BloomMediumPriority.xlf
index 47e77babe7c4..f75402b4f620 100644
--- a/DistFiles/localization/ru/BloomMediumPriority.xlf
+++ b/DistFiles/localization/ru/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/rw/BloomMediumPriority.xlf b/DistFiles/localization/rw/BloomMediumPriority.xlf
index 110a04cc70de..0992d934583d 100644
--- a/DistFiles/localization/rw/BloomMediumPriority.xlf
+++ b/DistFiles/localization/rw/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/sw/BloomMediumPriority.xlf b/DistFiles/localization/sw/BloomMediumPriority.xlf
index 44164dcce8ae..01012811ba69 100644
--- a/DistFiles/localization/sw/BloomMediumPriority.xlf
+++ b/DistFiles/localization/sw/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/ta/BloomMediumPriority.xlf b/DistFiles/localization/ta/BloomMediumPriority.xlf
index d2a2d896f16e..05396f9c1374 100644
--- a/DistFiles/localization/ta/BloomMediumPriority.xlf
+++ b/DistFiles/localization/ta/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/te/BloomMediumPriority.xlf b/DistFiles/localization/te/BloomMediumPriority.xlf
index 4cc0976c15e0..93b10a02f265 100644
--- a/DistFiles/localization/te/BloomMediumPriority.xlf
+++ b/DistFiles/localization/te/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/tg/BloomMediumPriority.xlf b/DistFiles/localization/tg/BloomMediumPriority.xlf
index 4407d5843f18..2c91f18c3ae6 100644
--- a/DistFiles/localization/tg/BloomMediumPriority.xlf
+++ b/DistFiles/localization/tg/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/th/BloomMediumPriority.xlf b/DistFiles/localization/th/BloomMediumPriority.xlf
index 9f917d834bb2..a61728448d4e 100644
--- a/DistFiles/localization/th/BloomMediumPriority.xlf
+++ b/DistFiles/localization/th/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/tl/BloomMediumPriority.xlf b/DistFiles/localization/tl/BloomMediumPriority.xlf
index ae096b8d4cf0..c2e242669fb0 100644
--- a/DistFiles/localization/tl/BloomMediumPriority.xlf
+++ b/DistFiles/localization/tl/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/tr/BloomMediumPriority.xlf b/DistFiles/localization/tr/BloomMediumPriority.xlf
index 65e8a45bd737..0f8f80436e34 100644
--- a/DistFiles/localization/tr/BloomMediumPriority.xlf
+++ b/DistFiles/localization/tr/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/uz/BloomMediumPriority.xlf b/DistFiles/localization/uz/BloomMediumPriority.xlf
index 173c7959c07e..a96ab998a11e 100644
--- a/DistFiles/localization/uz/BloomMediumPriority.xlf
+++ b/DistFiles/localization/uz/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/vi/BloomMediumPriority.xlf b/DistFiles/localization/vi/BloomMediumPriority.xlf
index 9752602ea58b..04ade7ac4316 100644
--- a/DistFiles/localization/vi/BloomMediumPriority.xlf
+++ b/DistFiles/localization/vi/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/yua/BloomMediumPriority.xlf b/DistFiles/localization/yua/BloomMediumPriority.xlf
index 499d3a91c7bf..30326b16ced3 100644
--- a/DistFiles/localization/yua/BloomMediumPriority.xlf
+++ b/DistFiles/localization/yua/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/localization/zh-CN/BloomMediumPriority.xlf b/DistFiles/localization/zh-CN/BloomMediumPriority.xlf
index 9a0cd79913de..462bf5f09853 100644
--- a/DistFiles/localization/zh-CN/BloomMediumPriority.xlf
+++ b/DistFiles/localization/zh-CN/BloomMediumPriority.xlf
@@ -865,8 +865,8 @@
BookSettings.FullBleed
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
- Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.
+ Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.BookSettings.FullBleed.Description
@@ -1102,9 +1102,9 @@
Experimental Rounded BorderAppearanceTheme.ebook-rounded-border-bottom-number -->
-
- Zero Margin Ebook
- Zero Margin Ebook
+
+ Edge to Edge
+ Edge to EdgeSee https://docs.bloomlibrary.org/page-themes-catalog
diff --git a/DistFiles/pageSizesLookup.json b/DistFiles/pageSizesLookup.json
new file mode 100644
index 000000000000..59569e7c0d0f
--- /dev/null
+++ b/DistFiles/pageSizesLookup.json
@@ -0,0 +1,500 @@
+{
+ "sizes": {
+ "A5Portrait": {
+ "width": 148,
+ "height": 210
+ },
+ "A5": {
+ "width": 148,
+ "height": 210
+ },
+ "A5Landscape": {
+ "width": 210,
+ "height": 148
+ },
+ "B5Portrait": {
+ "width": 176,
+ "height": 250
+ },
+ "B5": {
+ "width": 176,
+ "height": 250
+ },
+ "A4Landscape": {
+ "width": 297,
+ "height": 210
+ },
+ "A4": {
+ "width": 210,
+ "height": 297
+ },
+ "A4Portrait": {
+ "width": 210,
+ "height": 297
+ },
+ "A3Landscape": {
+ "width": 420,
+ "height": 297
+ },
+ "A3": {
+ "width": 297,
+ "height": 420
+ },
+ "A3Portrait": {
+ "width": 297,
+ "height": 420
+ },
+ "A6Portrait": {
+ "width": 105,
+ "height": 148
+ },
+ "A6": {
+ "width": 105,
+ "height": 148
+ },
+ "A6Landscape": {
+ "width": 148,
+ "height": 105
+ },
+ "QuarterLetterPortrait": {
+ "width": 107.94999999999999,
+ "height": 139.7
+ },
+ "QuarterLetter": {
+ "width": 107.94999999999999,
+ "height": 139.7
+ },
+ "QuarterLetterLandscape": {
+ "width": 139.7,
+ "height": 107.94999999999999
+ },
+ "HalfLetterPortrait": {
+ "width": 139.7,
+ "height": 215.89999999999998
+ },
+ "HalfLetter": {
+ "width": 139.7,
+ "height": 215.89999999999998
+ },
+ "HalfLetterLandscape": {
+ "width": 215.89999999999998,
+ "height": 139.7
+ },
+ "LetterPortrait": {
+ "width": 215.89999999999998,
+ "height": 279.4
+ },
+ "Letter": {
+ "width": 215.89999999999998,
+ "height": 279.4
+ },
+ "LetterLandscape": {
+ "width": 279.4,
+ "height": 215.89999999999998
+ },
+ "HalfFolioPortrait": {
+ "width": 165.1,
+ "height": 215.89999999999998
+ },
+ "HalfFolio": {
+ "width": 165.1,
+ "height": 215.89999999999998
+ },
+ "HalfLegalPortrait": {
+ "width": 177.79999999999998,
+ "height": 215.89999999999998
+ },
+ "HalfLegal": {
+ "width": 177.79999999999998,
+ "height": 215.89999999999998
+ },
+ "HalfLegalLandscape": {
+ "width": 215.89999999999998,
+ "height": 177.79999999999998
+ },
+ "LegalPortrait": {
+ "width": 215.89999999999998,
+ "height": 355.59999999999997
+ },
+ "Legal": {
+ "width": 215.89999999999998,
+ "height": 355.59999999999997
+ },
+ "LegalLandscape": {
+ "width": 355.59999999999997,
+ "height": 215.89999999999998
+ },
+ "Cm13Landscape": {
+ "width": 130,
+ "height": 130
+ },
+ "Cm13": {
+ "width": 130,
+ "height": 130
+ },
+ "USComicPortrait": {
+ "width": 168.27499999999998,
+ "height": 260.34999999999997
+ },
+ "USComic": {
+ "width": 168.27499999999998,
+ "height": 260.34999999999997
+ },
+ "Size6x9Portrait": {
+ "width": 152.39999999999998,
+ "height": 228.6
+ },
+ "Size6x9": {
+ "width": 152.39999999999998,
+ "height": 228.6
+ },
+ "Size6x9Landscape": {
+ "width": 228.6,
+ "height": 152.39999999999998
+ },
+ "A0": {
+ "width": 841,
+ "height": 1189
+ },
+ "A1": {
+ "width": 594,
+ "height": 841
+ },
+ "A2": {
+ "width": 420,
+ "height": 594
+ },
+ "A7": {
+ "width": 74,
+ "height": 105
+ },
+ "A8": {
+ "width": 52,
+ "height": 74
+ },
+ "A9": {
+ "width": 37,
+ "height": 52
+ },
+ "A10": {
+ "width": 26,
+ "height": 37
+ },
+ "B0": {
+ "width": 1000,
+ "height": 1414
+ },
+ "B1": {
+ "width": 707,
+ "height": 1000
+ },
+ "B2": {
+ "width": 500,
+ "height": 707
+ },
+ "B3": {
+ "width": 353,
+ "height": 500
+ },
+ "B4": {
+ "width": 250,
+ "height": 353
+ },
+ "B6": {
+ "width": 125,
+ "height": 176
+ },
+ "B7": {
+ "width": 88,
+ "height": 125
+ },
+ "B8": {
+ "width": 62,
+ "height": 88
+ },
+ "B9": {
+ "width": 44,
+ "height": 62
+ },
+ "B10": {
+ "width": 31,
+ "height": 44
+ },
+ "Cm1": {
+ "width": 10,
+ "height": 10
+ },
+ "Cm2": {
+ "width": 20,
+ "height": 20
+ },
+ "Cm3": {
+ "width": 30,
+ "height": 30
+ },
+ "Cm4": {
+ "width": 40,
+ "height": 40
+ },
+ "Cm5": {
+ "width": 50,
+ "height": 50
+ },
+ "Cm6": {
+ "width": 60,
+ "height": 60
+ },
+ "Cm7": {
+ "width": 70,
+ "height": 70
+ },
+ "Cm8": {
+ "width": 80,
+ "height": 80
+ },
+ "Cm9": {
+ "width": 90,
+ "height": 90
+ },
+ "Cm10": {
+ "width": 100,
+ "height": 100
+ },
+ "Cm11": {
+ "width": 110,
+ "height": 110
+ },
+ "Cm12": {
+ "width": 120,
+ "height": 120
+ },
+ "Cm14": {
+ "width": 140,
+ "height": 140
+ },
+ "Cm15": {
+ "width": 150,
+ "height": 150
+ },
+ "Cm16": {
+ "width": 160,
+ "height": 160
+ },
+ "Cm17": {
+ "width": 170,
+ "height": 170
+ },
+ "Cm18": {
+ "width": 180,
+ "height": 180
+ },
+ "Cm19": {
+ "width": 190,
+ "height": 190
+ },
+ "Cm20": {
+ "width": 200,
+ "height": 200
+ },
+ "Cm21": {
+ "width": 210,
+ "height": 210
+ },
+ "Cm22": {
+ "width": 220,
+ "height": 220
+ },
+ "Cm23": {
+ "width": 230,
+ "height": 230
+ },
+ "Cm24": {
+ "width": 240,
+ "height": 240
+ },
+ "Cm25": {
+ "width": 250,
+ "height": 250
+ },
+ "Cm26": {
+ "width": 260,
+ "height": 260
+ },
+ "Cm27": {
+ "width": 270,
+ "height": 270
+ },
+ "Cm28": {
+ "width": 280,
+ "height": 280
+ },
+ "Cm29": {
+ "width": 290,
+ "height": 290
+ },
+ "Cm30": {
+ "width": 300,
+ "height": 300
+ },
+ "Cm31": {
+ "width": 310,
+ "height": 310
+ },
+ "Cm32": {
+ "width": 320,
+ "height": 320
+ },
+ "Cm33": {
+ "width": 330,
+ "height": 330
+ },
+ "Cm34": {
+ "width": 340,
+ "height": 340
+ },
+ "Cm35": {
+ "width": 350,
+ "height": 350
+ },
+ "Cm36": {
+ "width": 360,
+ "height": 360
+ },
+ "Cm37": {
+ "width": 370,
+ "height": 370
+ },
+ "Cm38": {
+ "width": 380,
+ "height": 380
+ },
+ "Cm39": {
+ "width": 390,
+ "height": 390
+ },
+ "Cm40": {
+ "width": 400,
+ "height": 400
+ },
+ "Cm41": {
+ "width": 410,
+ "height": 410
+ },
+ "Cm42": {
+ "width": 420,
+ "height": 420
+ },
+ "Cm43": {
+ "width": 430,
+ "height": 430
+ },
+ "Cm44": {
+ "width": 440,
+ "height": 440
+ },
+ "Cm45": {
+ "width": 450,
+ "height": 450
+ },
+ "Cm46": {
+ "width": 460,
+ "height": 460
+ },
+ "Cm47": {
+ "width": 470,
+ "height": 470
+ },
+ "Cm48": {
+ "width": 480,
+ "height": 480
+ },
+ "Cm49": {
+ "width": 490,
+ "height": 490
+ },
+ "Cm50": {
+ "width": 500,
+ "height": 500
+ },
+ "In1": {
+ "width": 25.4,
+ "height": 25.4
+ },
+ "In2": {
+ "width": 50.8,
+ "height": 50.8
+ },
+ "In3": {
+ "width": 76.19999999999999,
+ "height": 76.19999999999999
+ },
+ "In4": {
+ "width": 101.6,
+ "height": 101.6
+ },
+ "In5": {
+ "width": 127,
+ "height": 127
+ },
+ "In6": {
+ "width": 152.39999999999998,
+ "height": 152.39999999999998
+ },
+ "In7": {
+ "width": 177.79999999999998,
+ "height": 177.79999999999998
+ },
+ "In8": {
+ "width": 203.2,
+ "height": 203.2
+ },
+ "In9": {
+ "width": 228.6,
+ "height": 228.6
+ },
+ "In10": {
+ "width": 254,
+ "height": 254
+ },
+ "In11": {
+ "width": 279.4,
+ "height": 279.4
+ },
+ "In12": {
+ "width": 304.79999999999995,
+ "height": 304.79999999999995
+ },
+ "In13": {
+ "width": 330.2,
+ "height": 330.2
+ },
+ "In14": {
+ "width": 355.59999999999997,
+ "height": 355.59999999999997
+ },
+ "In15": {
+ "width": 381,
+ "height": 381
+ },
+ "In16": {
+ "width": 406.4,
+ "height": 406.4
+ },
+ "In17": {
+ "width": 431.79999999999995,
+ "height": 431.79999999999995
+ },
+ "In18": {
+ "width": 457.2,
+ "height": 457.2
+ },
+ "In19": {
+ "width": 482.59999999999997,
+ "height": 482.59999999999997
+ },
+ "In20": {
+ "width": 508,
+ "height": 508
+ }
+ }
+}
diff --git a/NuGet.Config b/NuGet.Config
new file mode 100644
index 000000000000..3f0e003403cb
--- /dev/null
+++ b/NuGet.Config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/BloomBrowserUI/AGENTS.md b/src/BloomBrowserUI/AGENTS.md
index 0a5ec0663e44..12ee6dfb1479 100644
--- a/src/BloomBrowserUI/AGENTS.md
+++ b/src/BloomBrowserUI/AGENTS.md
@@ -82,7 +82,7 @@ Don't use timeouts in tests, that slows things down and is fragile. If a timeout
## Troubleshooting UI Problems
-Usually if you get stuck, the best thing to do is to get the component showing in a browser and use chrome-devtools-mcp to to check the DOM, the console, and if necessary a screenshot. You can add console messages that should show, then read the browser's console to test your assumptions. If you want access to chrome-devtools-mcp and don't have it, stop and ask me.
+Usually if you get stuck, the best thing to do is to get the component showing in a browser and use chrome-devtools-mcp to to check the DOM, the console, and if necessary a screenshot. You can add console messages that should show, then read the browser's console to test your assumptions. If you want access to chrome-devtools-mcp and don't have it, stop and ask me. When the backend is running, you can open http://localhost:8089/bloom/CURRENTPAGE to inspect and interact with the screen.
## Other notes
diff --git a/src/BloomBrowserUI/bookEdit/bookSettings/BookSettingsDialog.tsx b/src/BloomBrowserUI/bookEdit/bookSettings/BookSettingsDialog.tsx
index c9975a998edd..c49540bb96ad 100644
--- a/src/BloomBrowserUI/bookEdit/bookSettings/BookSettingsDialog.tsx
+++ b/src/BloomBrowserUI/bookEdit/bookSettings/BookSettingsDialog.tsx
@@ -276,7 +276,7 @@ export const BookSettingsDialog: React.FunctionComponent<{
"BookSettings.FullBleed",
);
const fullBleedDescription = useL10n(
- "Enable full bleed layout for printing. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.",
+ 'Enable full bleed layout for printing. Use with the "Edge to Edge" theme. This turns on the [Print Bleed](https://en.wikipedia.org/wiki/Bleed_%28printing%29) indicators on paper layouts. See [Full Bleed Layout](https://docs.bloomlibrary.org/full-bleed) for more information.',
"BookSettings.FullBleed.Description",
);
diff --git a/src/BloomBrowserUI/bookEdit/css/editMode.less b/src/BloomBrowserUI/bookEdit/css/editMode.less
index 064c1a701e63..f18136ee4f73 100644
--- a/src/BloomBrowserUI/bookEdit/css/editMode.less
+++ b/src/BloomBrowserUI/bookEdit/css/editMode.less
@@ -4,6 +4,14 @@
@import "../../placeHolderImages.less";
@bleed: 3mm; // Duplicated from basePage.less to remove circular dependency between BloomBrowserUI and content
+@trimCropMarkColor: #ffffff;
+@trimCropMarkThickness: 1px;
+@trimCropMarkLength: 2mm;
+@trimCropMarkCornerGap: 1mm;
+@trimCropMarkAtTrimInBleed: @bleed - @trimCropMarkThickness;
+@trimCropMarkStartFromMediaEdge: @bleed - @trimCropMarkCornerGap -
+ @trimCropMarkLength;
+@safetyAreaColor: rgba(0, 0, 0, 0.05);
@focusBorderColor: transparent; // #d6eaed; // @bloom-blue; // rgba(82, 168, 236, 0.6);
@tipLinkColor: #8e3581; // intentionally a bit darker to be legible
@@ -77,6 +85,11 @@ body {
pointer-events: auto; // start up clicks again a the next level
}
+ // Default to trim-only view in edit mode; full-bleed guides are hover affordances.
+ :not(.Device16x9Portrait):not(.Device16x9Landscape)& {
+ clip-path: inset(@bleed);
+ }
+
:not(.Device16x9Portrait):not(.Device16x9Landscape)&::before {
// show bleed area
content: "";
@@ -86,23 +99,92 @@ body {
top: 0;
bottom: 0;
- border: 3mm solid rgba(0, 0, 0, 0.8);
+ // dark bleed band plus lighter safety area strips inside trim
+ box-sizing: border-box;
+ border: @bleed solid #000000cc;
+ background-image:
+ linear-gradient(@safetyAreaColor, @safetyAreaColor),
+ linear-gradient(@safetyAreaColor, @safetyAreaColor),
+ linear-gradient(@safetyAreaColor, @safetyAreaColor),
+ linear-gradient(@safetyAreaColor, @safetyAreaColor);
+ background-size:
+ calc(100% - 2 * @bleed) @bleed,
+ @bleed calc(100% - 2 * @bleed),
+ calc(100% - 2 * @bleed) @bleed,
+ @bleed calc(100% - 2 * @bleed);
+ background-position:
+ @bleed @bleed,
+ @bleed @bleed,
+ @bleed calc(100% - @bleed),
+ calc(100% - @bleed) @bleed;
+ background-repeat: no-repeat;
+ background-origin: border-box;
+ background-clip: border-box;
+ opacity: 0;
z-index: 1;
}
:not(.Device16x9Portrait):not(.Device16x9Landscape)&:after {
- // show safety area (the area inside of the trim box that still could get cut)
+ // draw white crop marks on top so they stay fully opaque
content: "";
position: absolute;
- left: @bleed;
- right: @bleed;
- top: @bleed;
- bottom: @bleed;
- border: 3mm solid rgba(0, 0, 0, 0.05);
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ background-image:
+ linear-gradient(@trimCropMarkColor, @trimCropMarkColor),
+ linear-gradient(@trimCropMarkColor, @trimCropMarkColor),
+ linear-gradient(@trimCropMarkColor, @trimCropMarkColor),
+ linear-gradient(@trimCropMarkColor, @trimCropMarkColor),
+ linear-gradient(@trimCropMarkColor, @trimCropMarkColor),
+ linear-gradient(@trimCropMarkColor, @trimCropMarkColor),
+ linear-gradient(@trimCropMarkColor, @trimCropMarkColor),
+ linear-gradient(@trimCropMarkColor, @trimCropMarkColor);
+ background-position:
+ left @trimCropMarkStartFromMediaEdge top @trimCropMarkAtTrimInBleed,
+ left @trimCropMarkAtTrimInBleed top @trimCropMarkStartFromMediaEdge,
+ right @trimCropMarkStartFromMediaEdge top @trimCropMarkAtTrimInBleed,
+ right @trimCropMarkAtTrimInBleed top @trimCropMarkStartFromMediaEdge,
+ left @trimCropMarkStartFromMediaEdge bottom
+ @trimCropMarkAtTrimInBleed,
+ left @trimCropMarkAtTrimInBleed bottom
+ @trimCropMarkStartFromMediaEdge,
+ right @trimCropMarkStartFromMediaEdge bottom
+ @trimCropMarkAtTrimInBleed,
+ right @trimCropMarkAtTrimInBleed bottom
+ @trimCropMarkStartFromMediaEdge;
+ background-size:
+ @trimCropMarkLength @trimCropMarkThickness,
+ @trimCropMarkThickness @trimCropMarkLength,
+ @trimCropMarkLength @trimCropMarkThickness,
+ @trimCropMarkThickness @trimCropMarkLength,
+ @trimCropMarkLength @trimCropMarkThickness,
+ @trimCropMarkThickness @trimCropMarkLength,
+ @trimCropMarkLength @trimCropMarkThickness,
+ @trimCropMarkThickness @trimCropMarkLength;
+ background-repeat: no-repeat;
+ opacity: 0;
z-index: 2;
}
}
+// Show bleed/safety/crop guides only when the page itself is hovered.
+:not(.Device16x9Portrait):not(.Device16x9Landscape).bloom-mediaBox:has(
+ .bloom-page:hover
+ ) {
+ clip-path: none;
+}
+
+:not(.Device16x9Portrait):not(.Device16x9Landscape).bloom-mediaBox:has(
+ .bloom-page:hover
+ )::before,
+:not(.Device16x9Portrait):not(.Device16x9Landscape).bloom-mediaBox:has(
+ .bloom-page:hover
+ ):after {
+ opacity: 1;
+}
+
#labelAndLayoutPane {
height: @PageLabelAndChangeLayoutPaneHeight;
}
diff --git a/src/BloomBrowserUI/bookEdit/sourceBubbles/sourceBubbles.less b/src/BloomBrowserUI/bookEdit/sourceBubbles/sourceBubbles.less
index ab0a803dcdac..4b03232d2aea 100644
--- a/src/BloomBrowserUI/bookEdit/sourceBubbles/sourceBubbles.less
+++ b/src/BloomBrowserUI/bookEdit/sourceBubbles/sourceBubbles.less
@@ -204,7 +204,7 @@
display: flex;
flex-direction: row;
justify-content: end;
- margin-right: 0px; // These zero margins get the icon to line up with the content.
+ margin-right: 0px; // This no-margin spacing gets the icon to line up with the content.
margin-bottom: 0px; // (Negative margins can cause overflow and scrollbars. See BL-9394.)
.copy-transition {
margin-right: 7px;
diff --git a/src/BloomExe/Book/AppearanceSettings.cs b/src/BloomExe/Book/AppearanceSettings.cs
index df99e4bf78c8..0e63fe20fe5a 100644
--- a/src/BloomExe/Book/AppearanceSettings.cs
+++ b/src/BloomExe/Book/AppearanceSettings.cs
@@ -45,6 +45,12 @@ public AppearanceSettings()
public static string kOverrideGroupsArrayKey = "groupsToOverrideFromParent"; // e.g. "coverFields, xmatter"
public static string kUnset = "unset";
public static string kDeliberatelyInvalid = "deliberately-invalid";
+
+ // Canonical theme id used by appearance-theme-edge-to-edge.css.
+ public const string kEdgeToEdgeThemeName = "edge-to-edge";
+
+ // Legacy id still present in existing books and migration descriptors.
+ public const string kLegacyEdgeToEdgeThemeAlias = "zero-margin-ebook";
private static AppearanceMigrator _appearanceMigrator;
// A representation of the content of Appearance.json
@@ -172,14 +178,25 @@ public string FirstPossiblyOffendingCssFile
///
public string CssThemeName
{
- get { return _properties.cssThemeName; }
+ // Expose a canonical theme name so callers never need to handle aliases.
+ get { return NormalizeThemeName((string)_properties.cssThemeName); }
set
{
- _properties.cssThemeName = value;
+ // Code paths that set the theme directly also route through the same normalization.
+ _properties.cssThemeName = NormalizeThemeName(value);
SetRequiredValuesIfLegacyTheme();
}
}
+ private static string NormalizeThemeName(string themeName)
+ {
+ // Books can store either id; normalize to the canonical value everywhere.
+ if (themeName == kLegacyEdgeToEdgeThemeAlias)
+ return kEdgeToEdgeThemeName;
+
+ return themeName;
+ }
+
// Some setting's values are not allowed in legacy mode.
// REVIEW:
// This concept of forcing a value based on the legacy theme was introduced at the time coverIsImage was added.
@@ -209,17 +226,28 @@ private void SetRequiredValuesIfLegacyTheme()
private void SetProperty(KeyValuePair property)
{
+ var propertyToSet = property;
+ if (property.Key == "cssThemeName" && property.Value is string themeName)
+ {
+ // JSON/config-driven updates route through this path, so normalize here too.
+ propertyToSet = new KeyValuePair(
+ property.Key,
+ NormalizeThemeName(themeName)
+ );
+ }
+
+ // Track only effective value changes (after normalization) when deciding xmatter updates.
if (
- !Properties.ContainsKey(property.Key)
- || !Properties[property.Key].Equals(property.Value)
+ !Properties.ContainsKey(propertyToSet.Key)
+ || !Properties[propertyToSet.Key].Equals(propertyToSet.Value)
)
{
- var propDef = propertyDefinitions.FirstOrDefault(pd => pd.Name == property.Key);
+ var propDef = propertyDefinitions.FirstOrDefault(pd => pd.Name == propertyToSet.Key);
if (propDef?.RequiresXmatterUpdate == true)
PendingChangeRequiresXmatterUpdate = true;
}
- Properties[property.Key] = property.Value;
+ Properties[propertyToSet.Key] = propertyToSet.Value;
}
public bool CoverIsImage
@@ -890,7 +918,7 @@ internal void UpdateFromJson(string json)
// parse the json into an object
var x = JsonConvert.DeserializeObject(json);
- // and then for each property, copy into the Properties object.
+ // Route each property through SetProperty so all data sources share normalization and change-tracking logic.
foreach (var property in (IDictionary)x)
SetProperty(property);
@@ -972,7 +1000,13 @@ from name in names.ToArray()
private string GetLocalizedLabel(string name)
{
var key = "AppearanceTheme." + name;
- var localizedLabel = LocalizationManager.GetDynamicString("BloomMediumPriority", key, null);
+ // Provide a user-facing fallback while localized strings are still catching up.
+ var defaultLabel = name == kEdgeToEdgeThemeName ? "Edge to Edge" : null;
+ var localizedLabel = LocalizationManager.GetDynamicString(
+ "BloomMediumPriority",
+ key,
+ defaultLabel
+ );
if (String.IsNullOrEmpty(localizedLabel))
return name;
return localizedLabel;
@@ -1094,7 +1128,7 @@ private void SetPageNumberProperties()
SetProperty(
new KeyValuePair(
kPageNumberLeftMarginOverrideVar,
- "calc(var(--page-margin-left) + var(--pageNumber-full-bleed-extra-margin, 0px))"
+ "calc(var(--pageNumber-side-left-inset, var(--page-margin-left)) + var(--pageNumber-full-bleed-extra-margin, 0mm))"
)
);
SetProperty(
@@ -1118,7 +1152,7 @@ private void SetPageNumberProperties()
SetProperty(
new KeyValuePair(
kPageNumberRightMarginOverrideVar,
- "calc(var(--page-margin-right) + var(--pageNumber-full-bleed-extra-margin, 0px))"
+ "calc(var(--pageNumber-side-right-inset, var(--page-margin-right)) + var(--pageNumber-full-bleed-extra-margin, 0mm))"
)
);
SetProperty(
diff --git a/src/BloomExe/Book/SizeAndOrientation.cs b/src/BloomExe/Book/SizeAndOrientation.cs
index 4e5f413634b6..f429d291255e 100644
--- a/src/BloomExe/Book/SizeAndOrientation.cs
+++ b/src/BloomExe/Book/SizeAndOrientation.cs
@@ -17,6 +17,21 @@ namespace Bloom.Book
///
public class SizeAndOrientation
{
+ private static readonly Lazy<
+ Dictionary
+ > s_pageSizesInMillimeters = new(LoadPageSizesInMillimeters);
+
+ private class PageSizeLookupFile
+ {
+ public Dictionary sizes { get; set; }
+ }
+
+ private class PageSizeLookupItem
+ {
+ public double width { get; set; }
+ public double height { get; set; }
+ }
+
public string PageSizeName;
public bool IsLandScape { get; set; }
@@ -84,6 +99,84 @@ public bool SupportsFullBleed()
) != null;
}
+ public static bool TryGetSizeInMillimeters(
+ string sizeName,
+ out (double width, double height) size
+ )
+ {
+ size = default;
+ if (string.IsNullOrWhiteSpace(sizeName))
+ return false;
+
+ return s_pageSizesInMillimeters.Value.TryGetValue(sizeName, out size);
+ }
+
+ public static bool TryGetPaperLayoutInMillimeters(
+ string paperSizeName,
+ bool landscape,
+ out (double width, double height) size
+ )
+ {
+ size = default;
+ if (string.IsNullOrWhiteSpace(paperSizeName) || IsNonPaperLayout(paperSizeName))
+ return false;
+
+ var requestedOrientation = landscape ? "Landscape" : "Portrait";
+ var requestedKey = $"{paperSizeName}{requestedOrientation}";
+ if (TryGetSizeInMillimeters(requestedKey, out size))
+ return true;
+
+ var oppositeOrientation = landscape ? "Portrait" : "Landscape";
+ var oppositeKey = $"{paperSizeName}{oppositeOrientation}";
+ if (!TryGetSizeInMillimeters(oppositeKey, out var oppositeSize))
+ {
+ if (!TryGetSizeInMillimeters(paperSizeName, out size))
+ return false;
+
+ if (landscape && size.width < size.height)
+ size = (size.height, size.width);
+ else if (!landscape && size.width > size.height)
+ size = (size.height, size.width);
+ return true;
+ }
+
+ size = (oppositeSize.height, oppositeSize.width);
+ return true;
+ }
+
+ private static Dictionary<
+ string,
+ (double width, double height)
+ > LoadPageSizesInMillimeters()
+ {
+ var map = new Dictionary(
+ StringComparer.OrdinalIgnoreCase
+ );
+ var path = FileLocationUtilities.GetFileDistributedWithApplication(
+ "pageSizesLookup.json"
+ );
+ var json = RobustFile.ReadAllText(path);
+ var parsed = JsonConvert.DeserializeObject(json);
+ if (parsed?.sizes == null)
+ throw new ApplicationException("Could not parse pageSizesLookup.json.");
+
+ foreach (var item in parsed.sizes)
+ {
+ if (string.IsNullOrWhiteSpace(item.Key) || item.Value == null)
+ continue;
+
+ map[item.Key] = (item.Value.width, item.Value.height);
+ }
+
+ return map;
+ }
+
+ private static bool IsNonPaperLayout(string pageSizeName)
+ {
+ return pageSizeName.StartsWith("Device", StringComparison.OrdinalIgnoreCase)
+ || pageSizeName.StartsWith("PictureStory", StringComparison.OrdinalIgnoreCase);
+ }
+
public static void AddClassesForLayout(HtmlDom dom, Layout layout)
{
UpdatePageSizeAndOrientationClasses(dom.RawDom, layout);
diff --git a/src/BloomExe/Publish/Epub/EpubMaker.cs b/src/BloomExe/Publish/Epub/EpubMaker.cs
index 3226b13c05e6..3674aba7d52a 100644
--- a/src/BloomExe/Publish/Epub/EpubMaker.cs
+++ b/src/BloomExe/Publish/Epub/EpubMaker.cs
@@ -588,34 +588,15 @@ var filename in Directory.EnumerateFiles(
public static void GetPageDimensions(string pageSize, out double width, out double height)
{
- var path = FileLocationUtilities.GetFileDistributedWithApplication("pageSizes.json");
- var json = RobustFile.ReadAllText(path);
- var sizes = DynamicJson.Parse(json).sizes;
- // FirstOrDefault would be cleaner, but I can't figure out how to use it with dynamic data.
- for (int i = 0; i < sizes.Count; i++)
+ const double pixelsPerMillimeter = 96d / 25.4d;
+ if (!SizeAndOrientation.TryGetSizeInMillimeters(pageSize, out var dimensions))
{
- if (sizes[i].size == pageSize)
- {
- width = ConvertDimension(sizes[i].width);
- height = ConvertDimension(sizes[i].height);
- return;
- }
+ // Unknown: use A5Portrait.
+ SizeAndOrientation.TryGetSizeInMillimeters("A5Portrait", out dimensions);
}
- // unknown: use first (which should be A5Portrait)
- width = ConvertDimension(sizes[0].width);
- height = ConvertDimension(sizes[0].height);
- }
- // Method must parse the json input in a culture invariant manner, since the computer's culture may not match
- // the culture of the json file.
- private static double ConvertDimension(string input)
- {
- string unit = input.Substring(input.Length - 2);
- var num = Double.Parse(
- input.Substring(0, input.Length - 2),
- CultureInfo.InvariantCulture
- );
- return num * (unit == "mm" ? 96 / 25.4 : 96);
+ width = dimensions.width * pixelsPerMillimeter;
+ height = dimensions.height * pixelsPerMillimeter;
}
///
diff --git a/src/BloomExe/Publish/PDF/MakePdfUsingExternalPdfMakerProgram.cs b/src/BloomExe/Publish/PDF/MakePdfUsingExternalPdfMakerProgram.cs
index 67bb0a683918..e9ab44fc6dab 100644
--- a/src/BloomExe/Publish/PDF/MakePdfUsingExternalPdfMakerProgram.cs
+++ b/src/BloomExe/Publish/PDF/MakePdfUsingExternalPdfMakerProgram.cs
@@ -6,6 +6,7 @@
using System.Text.RegularExpressions;
using System.Windows.Forms;
using Bloom.Api;
+using Bloom.Book;
using Bloom.ToPalaso;
using Bloom.web;
using L10NSharp;
@@ -256,10 +257,6 @@ private static string GetNoDefaultPrinterErrorMessage()
const double inchesToMM = 25.4;
- const double A4PortraitHeight = 297; // mm
- private const double A4PortraitWidth = 210; // mm
- private const double A3PortraitWidth = A4PortraitHeight;
- private const double A3PortraitHeight = A4PortraitWidth * 2d;
const double bleedWidth = 3; // mm
private const double bleedExtra = bleedWidth * 2;
@@ -349,50 +346,33 @@ public static (double height, double width)? GetFullBleedPageSize(
bool landscape
)
{
- double height;
- double width;
- switch (paperSizeName.ToLowerInvariant())
- {
- case "a5":
- height = A4PortraitWidth + bleedExtra;
- // we floor because that actually gives us the 148mm that is official
- width = Math.Floor(A4PortraitHeight / 2) + bleedExtra;
- break;
- case "a4":
- height = A4PortraitHeight + bleedExtra;
- width = A4PortraitWidth + bleedExtra;
- break;
- case "a3":
- height = A3PortraitHeight + bleedExtra;
- width = A3PortraitWidth + bleedExtra;
- break;
- case "uscomic":
- height = USComicPortraitHeight + bleedExtra;
- width = USComicPortraitWidth + bleedExtra;
- break;
- case "halffolio":
- // added for consistency, but not tested.
- height = HalfFolioPortraitHeight + bleedExtra;
- width = HalfFolioPortraitWidth + bleedExtra;
- break;
- case "size6x9":
- height = Size6x9PortraitHeight + bleedExtra;
- width = Size6x9PortraitWidth + bleedExtra;
- break;
- default:
- return null; // Page size doesn't support full bleed
- }
+ if (!TryGetTrimPageSizeInMillimeters(paperSizeName, landscape, out var trimSize))
+ return null;
- if (landscape)
- {
- var temp = height;
- height = width;
- width = temp;
- }
+ var width = trimSize.width + bleedExtra;
+ var height = trimSize.height + bleedExtra;
return (height, width);
}
+ private static bool TryGetTrimPageSizeInMillimeters(
+ string paperSizeName,
+ bool landscape,
+ out (double width, double height) trimSize
+ )
+ {
+ trimSize = default;
+
+ if (string.IsNullOrWhiteSpace(paperSizeName))
+ return false;
+
+ return SizeAndOrientation.TryGetPaperLayoutInMillimeters(
+ paperSizeName,
+ landscape,
+ out trimSize
+ );
+ }
+
private static void ConfigureFullBleedPageSize(StringBuilder bldr, PdfMakingSpecs specs)
{
// We will make a non-standard page size that is 6mm bigger in each dimension than the size indicated
@@ -402,7 +382,7 @@ private static void ConfigureFullBleedPageSize(StringBuilder bldr, PdfMakingSpec
if (dimensions == null)
{
var exception = new ArgumentException(
- $"Full bleed printing of paper size '{specs.PaperSizeName}' is not yet implemented. Supported sizes are: A5, A4, A3, USComic, HalfFolio, and Size6x9."
+ $"Full bleed printing of paper size '{specs.PaperSizeName}' is not supported for this layout."
);
exception.Data["argument"] = "specs.PaperSizeName";
throw exception;
@@ -423,7 +403,7 @@ public class PdfMakingSpecs
public bool LayoutPagesForRightToLeft; // true if RTL, false if LTR layout
public bool SaveMemoryMode; // true if PDF file is to be produced using less memory (but more time)
public bool BookIsFullBleed; // True if the book is laid out for full-bleed printing (and Enterprise is enabled)
- public bool PrintWithFullBleed; // True if (BookIsFullBleed and) full bleed is requested in the PdfOptions menu and we're not making a booklet
+ public bool PrintWithFullBleed; // True if BookIsFullBleed and full bleed is requested in the PdfOptions menu
public string ColorProfile; // the name of the ICC color profile file to use, empty string if none
public int HtmlPageCount;
diff --git a/src/BloomExe/Publish/PDF/PdfMaker.cs b/src/BloomExe/Publish/PDF/PdfMaker.cs
index 5ba9b8c1fe36..1af5af2d17f4 100644
--- a/src/BloomExe/Publish/PDF/PdfMaker.cs
+++ b/src/BloomExe/Publish/PDF/PdfMaker.cs
@@ -21,6 +21,8 @@ namespace Bloom.Publish.PDF
///
public class PdfMaker
{
+ private const double kFullBleedInsetMillimeters = 3;
+
///
/// turns on crop marks and TrimBox
///
@@ -204,11 +206,43 @@ private void AddMetadataAndRemoveBlankPagesIfNecessary(PdfMakingSpecs specs)
for (int i = lastEven; i > 0; i -= 2)
pdfDoc.Pages.RemoveAt(i);
}
+
+ if (specs.PrintWithFullBleed)
+ {
+ // Ghostscript's pdfwrite pass can drop page-box metadata.
+ // Recreate full-bleed boxes here so DotImpose gets the same trim/bleed intent
+ // regardless of layouter choice (booklet and no-booklet).
+ foreach (PdfPage page in pdfDoc.Pages)
+ SetFullBleedPageBoxes(page);
+ }
+
pdfDoc.Save(specs.OutputPdfPath);
}
//Bloom.Utils.MemoryManagement.CheckMemory(true, "done checking for blank pages in full bleed PDF file", false);
}
+ private static void SetFullBleedPageBoxes(PdfPage page)
+ {
+ var bleedMargin = XUnit.FromMillimeter(kFullBleedInsetMillimeters);
+ var trimWidth = page.MediaBox.Width - (2 * bleedMargin.Point);
+ var trimHeight = page.MediaBox.Height - (2 * bleedMargin.Point);
+ if (trimWidth <= 0 || trimHeight <= 0)
+ {
+ throw new ApplicationException(
+ $"Cannot set full-bleed page boxes for MediaBox {page.MediaBox.Width}x{page.MediaBox.Height}."
+ );
+ }
+
+ var trimBox = new PdfRectangle(
+ new XPoint(bleedMargin.Point, bleedMargin.Point),
+ new XSize(trimWidth, trimHeight)
+ );
+ page.BleedBox = page.MediaBox;
+ page.CropBox = page.MediaBox;
+ page.ArtBox = trimBox;
+ page.TrimBox = trimBox;
+ }
+
public static string GetDistributedColorProfilesFolder()
{
var baseFolder = FileLocationUtilities.DirectoryOfApplicationOrSolution;
@@ -353,7 +387,9 @@ private void MakeBooklet(PdfMakingSpecs specs)
switch (specs.BooketLayoutMethod)
{
case PublishModel.BookletLayoutMethod.NoBooklet:
- method = new NullLayoutMethod(specs.PrintWithFullBleed ? 3 : 0);
+ method = new NullLayoutMethod(
+ GetNullLayoutBleedOffsetMm(specs.PrintWithFullBleed, ShowCropMarks)
+ );
break;
case PublishModel.BookletLayoutMethod.SideFold:
// To keep the GUI simple, we assume that A6 page size for booklets
@@ -410,6 +446,12 @@ private void MakeBooklet(PdfMakingSpecs specs)
);
}
+ // var toDotImposePath = Path.Combine(
+ // Path.GetTempPath(),
+ // $"toDotImpose-{Guid.NewGuid():D}.pdf"
+ // );
+ // RobustFile.Copy(incoming.Path, toDotImposePath, true);
+
var pdf = XPdfForm.FromFile(incoming.Path); //REVIEW: this whole giving them the pdf and the file too... I checked once and it wasn't wasting effort...the path was only used with a NullLayout option
method.Layout(
pdf,
@@ -421,6 +463,19 @@ private void MakeBooklet(PdfMakingSpecs specs)
);
}
}
+
+ internal static double GetNullLayoutBleedOffsetMm(
+ bool printWithFullBleed,
+ bool showCropMarks
+ )
+ {
+ if (!printWithFullBleed)
+ return 0;
+
+ // Full-bleed input pages are already trim + 3mm on each edge, so we
+ // inset trim from bleed by 3mm regardless of crop mark visibility.
+ return kFullBleedInsetMillimeters;
+ }
}
internal class CancellableNullProgress : NullProgress
diff --git a/src/BloomExe/Publish/PDF/PublishPdfApi.cs b/src/BloomExe/Publish/PDF/PublishPdfApi.cs
index d26d3b674915..d3cc2f8f73de 100644
--- a/src/BloomExe/Publish/PDF/PublishPdfApi.cs
+++ b/src/BloomExe/Publish/PDF/PublishPdfApi.cs
@@ -337,6 +337,11 @@ private void HandleCreateSimplePdf(ApiRequest request)
// that calls PublishModel.LoadBook.
public void MakePdf()
{
+ // Crop marks are automatic when print bleed is enabled.
+ // This applies to both Simple and booklet outputs.
+ _publishModel.ShowCropMarks =
+ (CurrentBook?.FullBleed ?? false) && (CurrentBook?.UserPrefs.FullBleed ?? false);
+
var message = CheckForLicenseWarning();
if (!String.IsNullOrEmpty(message))
{
diff --git a/src/BloomExe/Publish/PublishModel.cs b/src/BloomExe/Publish/PublishModel.cs
index 7b5e307b80f2..48d3a10158a0 100644
--- a/src/BloomExe/Publish/PublishModel.cs
+++ b/src/BloomExe/Publish/PublishModel.cs
@@ -386,6 +386,8 @@ private BookletLayoutMethod GetBookletLayoutMethod()
private bool GetPrintingWithFullBleed()
{
+ // Booklet layouts expect trim-sized source pages; full-bleed source pages can
+ // produce incorrect sizing in the imposed output.
return _currentlyLoadedBook.FullBleed
&& GetBookletLayoutMethod() == BookletLayoutMethod.NoBooklet
&& _currentlyLoadedBook.UserPrefs.FullBleed;
diff --git a/src/BloomTests/Book/AppearanceMigratorTests.cs b/src/BloomTests/Book/AppearanceMigratorTests.cs
index 8f4f8d0e4a77..4446c64003ad 100644
--- a/src/BloomTests/Book/AppearanceMigratorTests.cs
+++ b/src/BloomTests/Book/AppearanceMigratorTests.cs
@@ -13,7 +13,7 @@ namespace BloomTests.Book
public class AppearanceMigratorTests
{
// This must not be modified even slightly, or the checksum will not match.
- public static string cssThatTriggersEbookZeroMarginTheme =
+ public static string cssThatTriggersEbookEdgeToEdgeTheme =
@"/* Some books may need control over aspects of layout that cannot yet be adjusted
from the Bloom interface. In those cases, Bloom provides this ""under the hood"" method
of creating style rules using the underlying ""Cascading Stylesheets"" system.
@@ -134,7 +134,7 @@ .Device16x9Portrait.fullScreen .bloom-imageContainer.bloom-backgroundImage {
public void GetJsonThatSubstitutesForCustomCSS_FindsRightTheme()
{
var result = AppearanceMigrator.Instance.GetAppearanceThatSubstitutesForCustomCSS(
- cssThatTriggersEbookZeroMarginTheme
+ cssThatTriggersEbookEdgeToEdgeTheme
);
Assert.That(
result,
diff --git a/src/BloomTests/Book/AppearanceSettingsTests.cs b/src/BloomTests/Book/AppearanceSettingsTests.cs
index ca37c2f3d118..7f2611e5c61c 100644
--- a/src/BloomTests/Book/AppearanceSettingsTests.cs
+++ b/src/BloomTests/Book/AppearanceSettingsTests.cs
@@ -447,7 +447,7 @@ public class GetThemeAndSubstituteCssSuccessTests
AppearanceSettings _resultingAppearance;
private string _generatedAppearanceCss;
private string _cssOfDefaultTheme;
- private string _cssOfEbookZeroMarginTheme;
+ private string _cssOfEbookEdgeToEdgeTheme;
private string _cssOfSettingsObject;
[OneTimeSetUp]
@@ -461,11 +461,11 @@ public void OneTimeSetUp()
{
Tuple.Create(
"customBookStyles.css",
- AppearanceMigratorTests.cssThatTriggersEbookZeroMarginTheme
+ AppearanceMigratorTests.cssThatTriggersEbookEdgeToEdgeTheme
),
Tuple.Create(
"customCollectionStyles.css",
- AppearanceMigratorTests.cssThatTriggersEbookZeroMarginTheme
+ AppearanceMigratorTests.cssThatTriggersEbookEdgeToEdgeTheme
),
};
_pathToCustomCss = _settings.GetThemeAndSubstituteCss(
@@ -494,13 +494,13 @@ public void OneTimeSetUp()
var splits = _generatedAppearanceCss.Split(
new[]
{
- "from the current appearance theme, 'zero-margin-ebook'",
+ "from the current appearance theme, 'edge-to-edge'",
"/* From this book's appearance settings */",
},
StringSplitOptions.None
);
_cssOfDefaultTheme = splits[0];
- _cssOfEbookZeroMarginTheme = splits[1];
+ _cssOfEbookEdgeToEdgeTheme = splits[1];
_cssOfSettingsObject = splits[2];
}
@@ -528,7 +528,7 @@ public void ReturnsCorrectCss()
[Test]
public void GetsRightTheme()
{
- Assert.That(_resultingAppearance.CssThemeName, Is.EqualTo("zero-margin-ebook"));
+ Assert.That(_resultingAppearance.CssThemeName, Is.EqualTo("edge-to-edge"));
}
[Test]
@@ -559,7 +559,7 @@ public void UsesNewBasePage()
[Test]
public void AppearanceCss_HasDefaultSettings()
{
- // One that is not overridden in zero-margin-ebook
+ // One that is not overridden in edge-to-edge
AssertContainsButIgnoreWhitespace(
_generatedAppearanceCss,
"--cover-margin-top: var(--page-margin);"
@@ -575,11 +575,11 @@ public void SettingsCss_DoesNotHaveSettingsWithNullDefaults()
[Test]
public void AppearanceCss_HasThemeSettings()
{
- // from efl-zero-margin-ebook
+ // from edge-to-edge
Assert.That(_generatedAppearanceCss, Does.Contain("--page-margin: 3mm;"));
Assert.That(
_generatedAppearanceCss,
- Does.Contain(":not(.bloom-interactive-page).numberedPage.Device16x9Landscape")
+ Does.Contain(".numberedPage:not(.bloom-interactive-page)")
);
Assert.That(_generatedAppearanceCss, Does.Contain("--page-margin: 0mm;"));
}
@@ -587,7 +587,7 @@ public void AppearanceCss_HasThemeSettings()
[Test]
public void AppearanceCss_HasMigrationSettings()
{
- // from efl-zero-margin-ebook
+ // from edge-to-edge
Assert.That(_generatedAppearanceCss, Does.Contain("--pageNumber-show: none;"));
}
@@ -598,7 +598,7 @@ public void AppearanceCss_HasMigrationSettings()
[Test]
public void AppearanceCss_HasNoRootRules()
{
- // from efl-zero-margin-ebook
+ // from edge-to-edge
Assert.That(_generatedAppearanceCss, Does.Not.Contain(":root"));
}
@@ -652,9 +652,9 @@ public void CssOfChosenTheme_OverridesMargin()
Assert.That(_generatedAppearanceCss, Does.Contain("--page-margin: 12mm;"));
Assert.That(
_generatedAppearanceCss,
- Does.Contain(":not(.bloom-interactive-page).numberedPage.Device16x9Landscape")
+ Does.Contain(".numberedPage:not(.bloom-interactive-page)")
);
- Assert.That(_cssOfEbookZeroMarginTheme, Does.Contain("--page-margin: 0mm;"));
+ Assert.That(_cssOfEbookEdgeToEdgeTheme, Does.Contain("--page-margin: 0mm;"));
}
[Test]
diff --git a/src/BloomTests/Book/BookTests.cs b/src/BloomTests/Book/BookTests.cs
index 3ddb77471af2..0197154e6e47 100644
--- a/src/BloomTests/Book/BookTests.cs
+++ b/src/BloomTests/Book/BookTests.cs
@@ -407,11 +407,11 @@ public void CreateBookOnDiskFromTemplate_KnownConflictingCss_MigratesToKnownThem
";
var book = CreateBookWithPhysicalFile(body, bringBookUpToDate: false);
var cssPath = Path.Combine(book.FolderPath, "customBookStyles.css");
- File.WriteAllText(cssPath, AppearanceMigratorTests.cssThatTriggersEbookZeroMarginTheme);
+ File.WriteAllText(cssPath, AppearanceMigratorTests.cssThatTriggersEbookEdgeToEdgeTheme);
book.EnsureUpToDate();
var appearanceSettings = book.BookInfo.AppearanceSettings;
- Assert.That(appearanceSettings.CssThemeName, Is.EqualTo("zero-margin-ebook"));
+ Assert.That(appearanceSettings.CssThemeName, Is.EqualTo("edge-to-edge"));
AssertThatXmlIn
.Dom(book.OurHtmlDom.RawDom)
diff --git a/src/BloomTests/Publish/PDF/MakePdfUsingExternalPdfMakerProgramTests.cs b/src/BloomTests/Publish/PDF/MakePdfUsingExternalPdfMakerProgramTests.cs
new file mode 100644
index 000000000000..29988766c94b
--- /dev/null
+++ b/src/BloomTests/Publish/PDF/MakePdfUsingExternalPdfMakerProgramTests.cs
@@ -0,0 +1,67 @@
+using Bloom.Publish.PDF;
+using NUnit.Framework;
+
+namespace BloomTests.Publish.PDF
+{
+ [TestFixture]
+ public class MakePdfUsingExternalPdfMakerProgramTests
+ {
+ [TestCase("A0", false, 1195, 847)]
+ [TestCase("A6", false, 154, 111)]
+ [TestCase("B5", false, 256, 182)]
+ [TestCase("Letter", false, 285.4, 221.9)]
+ [TestCase("Legal", false, 361.6, 221.9)]
+ [TestCase("HalfLetter", false, 221.9, 145.7)]
+ [TestCase("QuarterLetter", false, 145.7, 113.95)]
+ [TestCase("USComic", false, 266.35, 174.275)]
+ [TestCase("Size6x9", false, 234.6, 158.4)]
+ [TestCase("Cm13", false, 136, 136)]
+ [TestCase("In8", false, 209, 209)]
+ public void GetFullBleedPageSize_SupportedPaperSize_ReturnsBleedDimensions(
+ string paperSize,
+ bool landscape,
+ double expectedHeightMm,
+ double expectedWidthMm
+ )
+ {
+ var dimensions = MakePdfUsingExternalPdfMakerProgram.GetFullBleedPageSize(
+ paperSize,
+ landscape
+ );
+
+ Assert.That(
+ dimensions.HasValue,
+ Is.True,
+ $"Expected {paperSize} to support full bleed"
+ );
+ Assert.That(dimensions.Value.height, Is.EqualTo(expectedHeightMm).Within(0.2));
+ Assert.That(dimensions.Value.width, Is.EqualTo(expectedWidthMm).Within(0.2));
+ }
+
+ [Test]
+ public void GetFullBleedPageSize_Landscape_SwapsDimensions()
+ {
+ var portrait = MakePdfUsingExternalPdfMakerProgram.GetFullBleedPageSize("A4", false);
+ var landscape = MakePdfUsingExternalPdfMakerProgram.GetFullBleedPageSize("A4", true);
+
+ Assert.That(portrait.HasValue, Is.True);
+ Assert.That(landscape.HasValue, Is.True);
+ Assert.That(landscape.Value.height, Is.EqualTo(portrait.Value.width).Within(0.01));
+ Assert.That(landscape.Value.width, Is.EqualTo(portrait.Value.height).Within(0.01));
+ }
+
+ [TestCase("Device16x9")]
+ [TestCase("BogusSize")]
+ [TestCase("")]
+ [TestCase(null)]
+ public void GetFullBleedPageSize_NonPaperLayout_ReturnsNull(string paperSize)
+ {
+ var dimensions = MakePdfUsingExternalPdfMakerProgram.GetFullBleedPageSize(
+ paperSize,
+ false
+ );
+
+ Assert.That(dimensions.HasValue, Is.False);
+ }
+ }
+}
diff --git a/src/BloomTests/Publish/PDF/PdfMakerTests.cs b/src/BloomTests/Publish/PDF/PdfMakerTests.cs
index f004aa81721f..2e6fcdd2b7f3 100644
--- a/src/BloomTests/Publish/PDF/PdfMakerTests.cs
+++ b/src/BloomTests/Publish/PDF/PdfMakerTests.cs
@@ -2,7 +2,12 @@
using System.IO;
using Bloom.Publish;
using Bloom.Publish.PDF;
+using DotImpose.LayoutMethods;
using NUnit.Framework;
+using PdfSharp;
+using PdfSharp.Drawing;
+using PdfSharp.Pdf;
+using PdfSharp.Pdf.IO;
using SIL.IO;
namespace BloomTests.Publish.PDF
@@ -14,6 +19,62 @@ namespace BloomTests.Publish.PDF
[NUnit.Framework.Category("RequiresUI")]
public class PdfMakerTests
{
+ [Test]
+ public void GetNullLayoutBleedOffsetMm_FullBleedWithoutCropMarks_IsJustBleedInset()
+ {
+ Assert.AreEqual(3, PdfMaker.GetNullLayoutBleedOffsetMm(true, false));
+ }
+
+ [Test]
+ public void GetNullLayoutBleedOffsetMm_FullBleedWithCropMarks_IncludesCropMargin()
+ {
+ Assert.AreEqual(3, PdfMaker.GetNullLayoutBleedOffsetMm(true, true));
+ }
+
+ [Test]
+ public void GetNullLayoutBleedOffsetMm_NotFullBleed_IsZero()
+ {
+ Assert.AreEqual(0, PdfMaker.GetNullLayoutBleedOffsetMm(false, true));
+ Assert.AreEqual(0, PdfMaker.GetNullLayoutBleedOffsetMm(false, false));
+ }
+
+ [Test]
+ public void NullLayoutMethod_FullBleedWithCropMarks_KeepsTrimAtFinalPageSize()
+ {
+ using (var input = TempFile.WithExtension("pdf"))
+ using (var output = TempFile.WithExtension("pdf"))
+ {
+ CreateSinglePagePdf(input.Path, 216, 303);
+ var method = new NullLayoutMethod(PdfMaker.GetNullLayoutBleedOffsetMm(true, true));
+
+ method.Layout(
+ XPdfForm.FromFile(input.Path),
+ input.Path,
+ output.Path,
+ new PaperTarget("A4", PageSize.A4),
+ false,
+ true
+ );
+
+ using (var outputDoc = PdfReader.Open(output.Path, PdfDocumentOpenMode.Import))
+ {
+ var trimBox = outputDoc.Pages[0].TrimBox.ToXRect();
+ Assert.AreEqual(
+ 210,
+ XUnit.FromPoint(trimBox.Width).Millimeter,
+ 0.2,
+ "Trim width should stay at final A4 width"
+ );
+ Assert.AreEqual(
+ 297,
+ XUnit.FromPoint(trimBox.Height).Millimeter,
+ 0.2,
+ "Trim height should stay at final A4 height"
+ );
+ }
+ }
+ }
+
[Test]
public void MakePdf_BookStyleIsNone_OutputsPdf()
{
@@ -230,5 +291,16 @@ PublishModel.BookletPortions portion
null
);
}
+
+ private static void CreateSinglePagePdf(string path, double widthMm, double heightMm)
+ {
+ using (var doc = new PdfDocument())
+ {
+ var page = doc.AddPage();
+ page.Width = XUnit.FromMillimeter(widthMm);
+ page.Height = XUnit.FromMillimeter(heightMm);
+ doc.Save(path);
+ }
+ }
}
}
diff --git a/src/content/appearanceMigrations/efl-ebook-1/appearance.json b/src/content/appearanceMigrations/efl-ebook-1/appearance.json
index c6c6cc1f5e3e..fe60d46b440a 100644
--- a/src/content/appearanceMigrations/efl-ebook-1/appearance.json
+++ b/src/content/appearanceMigrations/efl-ebook-1/appearance.json
@@ -5,6 +5,6 @@
// Example Book: https://bloomlibrary.org/:search:bookInstanceId%3A8d4b6844-948e-44e1-bef5-3b90bcdcfb3f
// A replacement customBookStyles.css has been generated.
{
- "cssThemeName": "zero-margin-ebook",
+ "cssThemeName": "edge-to-edge",
"pageNumber-position": "hidden"
}
diff --git a/src/content/appearanceThemes/appearance-theme-default.css b/src/content/appearanceThemes/appearance-theme-default.css
index 532dbed270cb..71024668b33a 100644
--- a/src/content/appearanceThemes/appearance-theme-default.css
+++ b/src/content/appearanceThemes/appearance-theme-default.css
@@ -45,6 +45,11 @@
--pageNumber-left-margin: auto;
--pageNumber-extra-height: 0mm;
+ /* Theme-adjustable insets used by explicit Left/Right page-number positioning. */
+ --pageNumber-side-left-inset: var(--page-margin-left);
+ --pageNumber-side-right-inset: var(--page-margin-right);
+ --pageNumber-full-bleed-extra-margin: 0mm;
+
/* Themes should set to 0 if the marginBox is a different color than the page background. This affects the text padding.
Note that we could eventually figure this out in code, and probably need to once we provide a UI for
setting the marginBox border or page background color. */
diff --git a/src/content/appearanceThemes/appearance-theme-zero-margin-ebook.css b/src/content/appearanceThemes/appearance-theme-edge-to-edge.css
similarity index 53%
rename from src/content/appearanceThemes/appearance-theme-zero-margin-ebook.css
rename to src/content/appearanceThemes/appearance-theme-edge-to-edge.css
index 2d96796458b6..5d4a8b0a3eeb 100644
--- a/src/content/appearanceThemes/appearance-theme-zero-margin-ebook.css
+++ b/src/content/appearanceThemes/appearance-theme-edge-to-edge.css
@@ -1,20 +1,38 @@
-/* replaces the pre-v6.0 "EFL Template 1" custom CSS: which had no margins, no page numbers.
-Note that hiding the page numbers is done by a setting in appearance.json, not here. */
+/* Edge-to-edge uses no margins on numbered content pages.
+Front and back matter keep a small margin for readability.
+Page-number visibility comes from appearance.json, not from this theme file. */
-[class*="Device"].bloom-frontMatter,
-[class*="Device"].bloom-backMatter {
+.bloom-frontMatter,
+.bloom-backMatter {
--page-margin: 3mm;
}
/* This statement sets the margins on the numbered content pages */
-:not(.bloom-interactive-page).numberedPage.Device16x9Landscape,
-:not(.bloom-interactive-page).numberedPage.Device16x9Portrait {
+.numberedPage:not(.bloom-interactive-page) {
--page-margin: 0mm;
/* instead of a gap, we are using padding because the text should look centered between the image and edge of the screen */
--page-verticalSplit-width: 0mm; /* we don't need this; removing it makes it simpler to just have the same spacing on left and right sides */
--page-horizontalSplit-height: 0mm;
+
+ /* Keep side-positioned page numbers aligned with top-level text from the page edge. */
+ --pageNumber-side-left-inset: calc(
+ var(--fullBleed-textBoxInset-left, 0mm) +
+ var(--topLevel-text-padding-left, 0px)
+ );
+ --pageNumber-side-right-inset: calc(
+ var(--fullBleed-textBoxInset-right, 0mm) +
+ var(--topLevel-text-padding-right, 0px)
+ );
+}
+
+.bloom-fullBleed .numberedPage:not(.bloom-interactive-page) {
+ /* Keep top-level text boxes inside the trim/safe area when full bleed scales the page. */
+ --fullBleed-textBoxInset-left: 3mm;
+ --fullBleed-textBoxInset-right: 3mm;
+ --fullBleed-textBoxInset-top: 3mm;
+ --fullBleed-textBoxInset-bottom: 3mm;
}
/* The section below controls the page number and the white circle around it. */
@@ -26,6 +44,28 @@ Note that hiding the page numbers is done by a setting in appearance.json, not h
is picture on top, text on the bottom, we need to make room for the page number */
--pageNumber-extra-height: 12mm !important;
}
+.numberedPage.side-left::after {
+ --pageNumber-left-margin: var(--pageNumber-side-left-inset);
+}
+.numberedPage.side-right::after {
+ --pageNumber-right-margin: var(--pageNumber-side-right-inset);
+}
+/* Full-bleed non-landscape layouts use the generic side-left/side-right badge selectors.
+Landscape layouts have additional overrides below for picture-side placement. */
+.bloom-fullBleed .numberedPage.side-left::after {
+ /* Full-bleed output adds trim overhang; offset the badge toward the trim box. */
+ --pageNumber-left-margin: calc(
+ var(--pageNumber-side-left-inset, 0mm) +
+ (var(--full-bleed-excess-width, 0mm) / 2)
+ );
+}
+.bloom-fullBleed .numberedPage.side-right::after {
+ /* Mirror the full-bleed offset for right-side page numbers. */
+ --pageNumber-right-margin: calc(
+ var(--pageNumber-side-right-inset, 0mm) +
+ (var(--full-bleed-excess-width, 0mm) / 2)
+ );
+}
.bloom-fullBleed .Device16x9Landscape.numberedPage {
/* On full-bleed pages we want the page number positioned based on the ideal place where
the page should be trimmed, not the actual edge of the page. Only the left (or right)
@@ -43,28 +83,28 @@ Note that hiding the page numbers is done by a setting in appearance.json, not h
border-radius: 50%;
--pageNumber-background-color: #ffffff;
--pageNumber-background-width: 33px;
- --pageNumber-always-left-margin: var(--page-margin-left);
+ --pageNumber-always-left-margin: var(--pageNumber-side-left-inset);
--pageNumber-right-margin: deliberately-invalid; /* prevents right being set at all. unset does not work. Prevent centering for this layout */
}
.bloom-fullBleed
.Device16x9Landscape.numberedPage.pictureOnRight.pictureOnRight::after {
/* Adjust the page number position for full bleed pages (BL-15611) */
--pageNumber-right-margin: calc(
- var(--page-margin-right, 0mm) +
+ var(--pageNumber-side-right-inset, 0mm) +
(var(--full-bleed-excess-width, 0mm) / 2)
);
}
.Device16x9Landscape.numberedPage.pictureOnRight.pictureOnRight::after {
- --pageNumber-right-margin: var(--page-margin-right);
+ --pageNumber-right-margin: var(--pageNumber-side-right-inset);
--pageNumber-left-margin: deliberately-invalid; /* prevents left being set at all. unset does not work. Prevent centering for this layout */
--pageNumber-always-left-margin: deliberately-invalid; /* prevents left being set at all. unset does not work. Prevent centering for this layout */
}
/* using "where:" so that the user's custom appearance can override the theme if specified */
-.numberedPage:where([class*="Device"]:not(.bloom-interactive-page)) {
+.numberedPage:where(:not(.bloom-interactive-page)) {
--topLevel-text-padding: 0.5em;
}
-[class*="Device"].numberedPage:not(.bloom-interactive-page) {
- /* move so that page number doesn't it hide it if the text box is in the lower left */
+.numberedPage:not(.bloom-interactive-page) {
+ /* Keep the format button clear of the page-number badge in lower-left text layouts. */
--formatButton-pageNumber-dodge: 20px;
}
diff --git a/src/content/bookLayout/basePage.less b/src/content/bookLayout/basePage.less
index 441859122dbc..da73c7e2cf00 100644
--- a/src/content/bookLayout/basePage.less
+++ b/src/content/bookLayout/basePage.less
@@ -827,13 +827,36 @@ The buffer would be absent if the marginBox had a border or the page has a backg
var(--totalBottomMargin) *
var(--page-and-marginBox-are-same-color-multiplicand)
);
-
padding-bottom: calc(
var(--topLevel-text-padding-bottom) -
var(--amountOfVisualPaddingProvidedByBottomMargin)
);
}
+.mixinLeftTgInset {
+ --tgOuterInset-left: var(--fullBleed-textBoxInset-left);
+}
+
+.mixinRightTgInset {
+ --tgOuterInset-right: var(--fullBleed-textBoxInset-right);
+}
+
+.mixinTopTgInset {
+ --tgOuterInset-top: var(--fullBleed-textBoxInset-top);
+}
+
+.mixinBottomTgInset {
+ --tgOuterInset-bottom: var(--fullBleed-textBoxInset-bottom);
+}
+
+.mixinApplyTgInsetFrame {
+ margin-left: var(--tgOuterInset-left);
+ margin-top: var(--tgOuterInset-top);
+ box-sizing: border-box;
+ width: calc(100% - var(--tgOuterInset-left) - var(--tgOuterInset-right));
+ height: calc(100% - var(--tgOuterInset-top) - var(--tgOuterInset-bottom));
+}
+
// Our style system uses margin-bottom to put space bewtween pararaphs.
// A typical rule is .Bubble-style > p {margin-bottom:1.25em!important;}
// Adding this extra space after the last paragraph looks strange (and can mess up
@@ -856,10 +879,19 @@ The buffer would be absent if the marginBox had a border or the page has a backg
// has been split
& > .split-pane > .split-pane-component > .split-pane-component-inner {
& > .bloom-translationGroup {
+ --tgOuterInset-left: 0mm;
+ --tgOuterInset-right: 0mm;
+ --tgOuterInset-top: 0mm;
+ --tgOuterInset-bottom: 0mm;
.mixinLeftTgPadding;
.mixinRightTgPadding;
.mixinTopTgPadding;
.mixinBottomTgPadding;
+ .mixinLeftTgInset;
+ .mixinRightTgInset;
+ .mixinTopTgInset;
+ .mixinBottomTgInset;
+ .mixinApplyTgInsetFrame;
}
// if the textbox has a special background color (only gray is offered for now),
// then visually the margin doesn't matter. We need the padding.
@@ -877,6 +909,7 @@ The buffer would be absent if the marginBox had a border or the page has a backg
> .split-pane-component-inner
> .bloom-translationGroup {
padding-top: var(--topLevel-text-padding-top);
+ --tgOuterInset-top: 0mm;
}
&
> .split-pane.horizontal-percent
@@ -884,6 +917,7 @@ The buffer would be absent if the marginBox had a border or the page has a backg
> .split-pane-component-inner
> .bloom-translationGroup {
padding-bottom: var(--topLevel-text-padding-bottom);
+ --tgOuterInset-bottom: 0mm;
}
&
> .split-pane.vertical-percent
@@ -891,6 +925,7 @@ The buffer would be absent if the marginBox had a border or the page has a backg
> .split-pane-component-inner
> .bloom-translationGroup {
padding-right: var(--topLevel-text-padding-right);
+ --tgOuterInset-right: 0mm;
}
&
> .split-pane.vertical-percent
@@ -898,6 +933,7 @@ The buffer would be absent if the marginBox had a border or the page has a backg
> .split-pane-component-inner
> .bloom-translationGroup {
padding-left: var(--topLevel-text-padding-left);
+ --tgOuterInset-left: 0mm;
}
// And now some special cases where we DO want it on blocks that are more deeply nested.
@@ -922,10 +958,18 @@ The buffer would be absent if the marginBox had a border or the page has a backg
> .bloom-translationGroup
//, ENHANCE: could put other patterns in here too that give you the same layout visually
{
+ --tgOuterInset-left: 0mm;
+ --tgOuterInset-right: 0mm;
+ --tgOuterInset-top: 0mm;
+ --tgOuterInset-bottom: 0mm;
padding-top: var(--topLevel-text-padding-top);
.mixinLeftTgPadding;
.mixinRightTgPadding;
.mixinBottomTgPadding;
+ .mixinLeftTgInset;
+ .mixinRightTgInset;
+ .mixinBottomTgInset;
+ .mixinApplyTgInsetFrame;
}
// Start with image on top, split the image to have text above it. (visually the same as picture-in-middle)
@@ -936,10 +980,18 @@ The buffer would be absent if the marginBox had a border or the page has a backg
> .split-pane-component.position-top
> .split-pane-component-inner
> .bloom-translationGroup {
+ --tgOuterInset-left: 0mm;
+ --tgOuterInset-right: 0mm;
+ --tgOuterInset-top: 0mm;
+ --tgOuterInset-bottom: 0mm;
.mixinTopTgPadding;
.mixinLeftTgPadding;
.mixinRightTgPadding;
padding-bottom: var(--topLevel-text-padding-bottom);
+ .mixinTopTgInset;
+ .mixinLeftTgInset;
+ .mixinRightTgInset;
+ .mixinApplyTgInsetFrame;
}
// This one handles the text box at the bottom left of a Big Video Diglot.
@@ -954,10 +1006,17 @@ The buffer would be absent if the marginBox had a border or the page has a backg
> .split-pane-component.position-bottom
> .split-pane-component-inner
> .bloom-translationGroup {
+ --tgOuterInset-left: 0mm;
+ --tgOuterInset-right: 0mm;
+ --tgOuterInset-top: 0mm;
+ --tgOuterInset-bottom: 0mm;
padding-top: var(--topLevel-text-padding-top);
padding-right: var(--topLevel-text-padding-right);
.mixinLeftTgPadding;
.mixinBottomTgPadding;
+ .mixinLeftTgInset;
+ .mixinBottomTgInset;
+ .mixinApplyTgInsetFrame;
}
// This one handles the text box at the bottom right of a Big Picture Diglot.
&
@@ -968,10 +1027,17 @@ The buffer would be absent if the marginBox had a border or the page has a backg
> .split-pane-component.position-bottom
> .split-pane-component-inner
> .bloom-translationGroup {
+ --tgOuterInset-left: 0mm;
+ --tgOuterInset-right: 0mm;
+ --tgOuterInset-top: 0mm;
+ --tgOuterInset-bottom: 0mm;
padding-top: var(--topLevel-text-padding-top);
padding-left: var(--topLevel-text-padding-left);
.mixinRightTgPadding;
.mixinBottomTgPadding;
+ .mixinRightTgInset;
+ .mixinBottomTgInset;
+ .mixinApplyTgInsetFrame;
}
// This one handles the text box at the top right of a Big Picture Diglot Text Over Video.
&
@@ -982,10 +1048,17 @@ The buffer would be absent if the marginBox had a border or the page has a backg
> .split-pane-component.position-top
> .split-pane-component-inner
> .bloom-translationGroup {
+ --tgOuterInset-left: 0mm;
+ --tgOuterInset-right: 0mm;
+ --tgOuterInset-top: 0mm;
+ --tgOuterInset-bottom: 0mm;
padding-bottom: var(--topLevel-text-padding-bottom);
padding-left: var(--topLevel-text-padding-left);
.mixinRightTgPadding;
.mixinTopTgPadding;
+ .mixinRightTgInset;
+ .mixinTopTgInset;
+ .mixinApplyTgInsetFrame;
}
}
@@ -1003,4 +1076,10 @@ The buffer would be absent if the marginBox had a border or the page has a backg
--topLevel-text-padding-bottom: var(--topLevel-text-padding);
--topLevel-text-padding-right: var(--topLevel-text-padding);
--topLevel-text-padding-left: var(--topLevel-text-padding);
+
+ // Optional edge-aware inset for top-level text boxes.
+ --fullBleed-textBoxInset-left: 0mm;
+ --fullBleed-textBoxInset-right: 0mm;
+ --fullBleed-textBoxInset-top: 0mm;
+ --fullBleed-textBoxInset-bottom: 0mm;
}
diff --git a/src/content/bookLayout/pageBoxesSizing.less b/src/content/bookLayout/pageBoxesSizing.less
index 72670a02d333..d47378e2000e 100644
--- a/src/content/bookLayout/pageBoxesSizing.less
+++ b/src/content/bookLayout/pageBoxesSizing.less
@@ -26,7 +26,7 @@
// Page numbers need to adjust for full-bleed if they're showing.
// This assumes that page numbers are at the bottom of the page,
// which they normally are in our layouts and themes. (BL-13685)
- --pageNumber-bottom: calc(var(--pageNumber-bottom) + @bleed);
+ --pageNumber-full-bleed-bottom-adjustment: @bleed;
}
}
}
diff --git a/src/content/bookLayout/pageNumbers.less b/src/content/bookLayout/pageNumbers.less
index 254a9ca3a3e6..084ca7de4e5f 100644
--- a/src/content/bookLayout/pageNumbers.less
+++ b/src/content/bookLayout/pageNumbers.less
@@ -19,7 +19,10 @@
fit-content
); // for when we need to have a colored background, e.g. a circle.
height: var(--pageNumber-background-width);
- bottom: var(--pageNumber-bottom);
+ bottom: calc(
+ var(--pageNumber-bottom) +
+ var(--pageNumber-full-bleed-bottom-adjustment, 0mm)
+ );
top: var(--pageNumber-top);
background-color: var(--pageNumber-background-color);
border-radius: var(--pageNumber-border-radius);
diff --git a/src/content/pageSizes.ts b/src/content/pageSizes.ts
index cb64a87321c3..fb2f06a49029 100644
--- a/src/content/pageSizes.ts
+++ b/src/content/pageSizes.ts
@@ -1,20 +1,198 @@
import { writeFileSync, readFileSync } from "fs";
// This file implements the package.json command build:pageSizes, which creates
-// bookLayout/page-size-mixin.less from a DistFiles/pageSizes.json
+// bookLayout/page-size-mixin.less and DistFiles/pageSizesLookup.json from DistFiles/pageSizes.json.
interface PageSize {
size: string;
width: string;
height: string;
}
-var input = readFileSync("../../DistFiles/pageSizes.json", "utf8");
-var sizes = JSON.parse(input);
-var data = "";
-for (var item of sizes.sizes) {
- const pageSize: PageSize = item as PageSize;
- data += "@" + pageSize.size + "-Height: " + pageSize.height + ";\n";
- data += "@" + pageSize.size + "-Width: " + pageSize.width + ";\n";
+interface PageSizesFile {
+ sizes: PageSize[];
}
-writeFileSync("bookLayout/page-size-mixin.less", data);
+interface PageSizeLookupEntry {
+ width: number;
+ height: number;
+}
+
+interface PageSizeLookupFile {
+ sizes: Record;
+}
+
+const sourcePath = "../../DistFiles/pageSizes.json";
+const lessOutputPath = "bookLayout/page-size-mixin.less";
+const lookupOutputPath = "../../DistFiles/pageSizesLookup.json";
+const inchesToMillimeters = 25.4;
+
+/**
+ * Reads the canonical page size list from DistFiles.
+ */
+function readConfiguredPageSizes(): PageSize[] {
+ const input = readFileSync(sourcePath, "utf8");
+ const parsed = JSON.parse(input) as PageSizesFile;
+ return parsed.sizes;
+}
+
+/**
+ * Converts a CSS-style dimension string (e.g. "148mm", "8.5in") to millimeters.
+ */
+function convertDimensionToMillimeters(value: string): number {
+ if (value.endsWith("mm")) {
+ return Number.parseFloat(value.substring(0, value.length - 2));
+ }
+
+ if (value.endsWith("in")) {
+ const inches = Number.parseFloat(value.substring(0, value.length - 2));
+ return inches * inchesToMillimeters;
+ }
+
+ throw new Error(`Unsupported page-size unit in '${value}'.`);
+}
+
+/**
+ * Returns true when the layout is a printable paper layout (not a device/story preset).
+ */
+function isPaperLayout(sizeName: string): boolean {
+ return (
+ !sizeName.startsWith("Device") && !sizeName.startsWith("PictureStory")
+ );
+}
+
+/**
+ * Returns the base paper name for oriented sizes (e.g. A4Portrait -> A4).
+ */
+function getBaseSizeName(sizeName: string): string | undefined {
+ for (const suffix of ["Portrait", "Landscape"]) {
+ if (sizeName.endsWith(suffix)) {
+ return sizeName.slice(0, -suffix.length);
+ }
+ }
+
+ return undefined;
+}
+
+/**
+ * Builds the less variable content consumed by the layout stylesheets.
+ * Each size produces @{size}-Height and @{size}-Width variables.
+ */
+function buildLessPageSizeVariables(configuredSizes: PageSize[]): string {
+ let data = "";
+ for (const pageSize of configuredSizes) {
+ data += `@${pageSize.size}-Height: ${pageSize.height};\n`;
+ data += `@${pageSize.size}-Width: ${pageSize.width};\n`;
+ }
+
+ return data;
+}
+
+/**
+ * Adds configured page sizes and oriented aliases (A4Portrait/A4Landscape => A4) to the lookup.
+ * If both orientations exist, Portrait is preferred for the base key (e.g. A4).
+ */
+function addConfiguredSizesToLookup(
+ configuredSizes: PageSize[],
+ lookup: Record,
+): void {
+ for (const item of configuredSizes) {
+ if (!isPaperLayout(item.size)) {
+ continue;
+ }
+
+ const width = convertDimensionToMillimeters(item.width);
+ const height = convertDimensionToMillimeters(item.height);
+ lookup[item.size] = { width, height };
+
+ const baseName = getBaseSizeName(item.size);
+ if (!baseName) {
+ continue;
+ }
+
+ const shouldPreferThisAsBase =
+ item.size.endsWith("Portrait") || lookup[baseName] === undefined;
+ if (shouldPreferThisAsBase) {
+ lookup[baseName] = { width, height };
+ }
+ }
+}
+
+/**
+ * Adds ISO A/B series sizes (A0-A10, B0-B10) to the lookup.
+ */
+function addIsoSeriesSizes(lookup: Record): void {
+ addIsoSeries(lookup, "A", 841, 1189);
+ addIsoSeries(lookup, "B", 1000, 1414);
+}
+
+/**
+ * Adds one ISO series by repeatedly halving the long edge and rotating.
+ */
+function addIsoSeries(
+ lookup: Record,
+ series: string,
+ startWidth: number,
+ startHeight: number,
+): void {
+ let width = startWidth;
+ let height = startHeight;
+ for (let index = 0; index <= 10; index++) {
+ const key = `${series}${index}`;
+ if (lookup[key] === undefined) {
+ lookup[key] = { width, height };
+ }
+
+ const nextWidth = Math.floor(height / 2);
+ height = width;
+ width = nextWidth;
+ }
+}
+
+/**
+ * Adds common square aliases like Cm13/In8 so runtime logic can use data lookups.
+ * Covers Cm1-Cm50 and In1-In20.
+ */
+function addSquareAliases(lookup: Record): void {
+ for (let centimeters = 1; centimeters <= 50; centimeters++) {
+ const key = `Cm${centimeters}`;
+ if (lookup[key] === undefined) {
+ const side = centimeters * 10;
+ lookup[key] = { width: side, height: side };
+ }
+ }
+
+ for (let inches = 1; inches <= 20; inches++) {
+ const key = `In${inches}`;
+ if (lookup[key] === undefined) {
+ const side = inches * inchesToMillimeters;
+ lookup[key] = { width: side, height: side };
+ }
+ }
+}
+
+/**
+ * Creates the mm lookup file used by C# runtime code.
+ */
+function buildLookupFile(configuredSizes: PageSize[]): PageSizeLookupFile {
+ const lookup: Record = {};
+ addConfiguredSizesToLookup(configuredSizes, lookup);
+ addIsoSeriesSizes(lookup);
+ addSquareAliases(lookup);
+ return { sizes: lookup };
+}
+
+/**
+ * Generates both build artifacts derived from pageSizes.json.
+ */
+function main(): void {
+ const configuredSizes = readConfiguredPageSizes();
+
+ // Output 1: less variables used by page layout stylesheets.
+ writeFileSync(lessOutputPath, buildLessPageSizeVariables(configuredSizes));
+
+ // Output 2: mm lookup used by C# runtime page-size code.
+ const lookup = buildLookupFile(configuredSizes);
+ writeFileSync(lookupOutputPath, JSON.stringify(lookup, null, 4) + "\n");
+}
+
+main();
diff --git a/src/content/templates/template books/Paper Comic Book/Paper Comic Book.less b/src/content/templates/template books/Paper Comic Book/Paper Comic Book.less
index c5b15a35fe6b..7786a0485d0d 100644
--- a/src/content/templates/template books/Paper Comic Book/Paper Comic Book.less
+++ b/src/content/templates/template books/Paper Comic Book/Paper Comic Book.less
@@ -9,7 +9,7 @@
max-width: unset; // device.less sets this, presumably expecting a margin
}
.marginBox {
- // Set zero margins in legacy mode.
+ // Set no margins in legacy mode.
left: 0 !important;
top: 0 !important;
height: 100% !important;
diff --git a/src/content/templates/template books/Playground/appearance.json b/src/content/templates/template books/Playground/appearance.json
index bf8691df41b7..67323557ed40 100644
--- a/src/content/templates/template books/Playground/appearance.json
+++ b/src/content/templates/template books/Playground/appearance.json
@@ -1,3 +1,3 @@
{
- "cssThemeName": "zero-margin-ebook"
+ "cssThemeName": "edge-to-edge"
}
diff --git a/src/content/templates/template books/eBook/appearance.json b/src/content/templates/template books/eBook/appearance.json
index bf8691df41b7..67323557ed40 100644
--- a/src/content/templates/template books/eBook/appearance.json
+++ b/src/content/templates/template books/eBook/appearance.json
@@ -1,3 +1,3 @@
{
- "cssThemeName": "zero-margin-ebook"
+ "cssThemeName": "edge-to-edge"
}