diff --git a/backport-changelog/6.6/6616.md b/backport-changelog/6.6/6616.md
index 91261f78fb5c7a..33cbf5e2bd9917 100644
--- a/backport-changelog/6.6/6616.md
+++ b/backport-changelog/6.6/6616.md
@@ -2,4 +2,5 @@ https://github.com/WordPress/wordpress-develop/pull/6616
 
 * https://github.com/WordPress/gutenberg/pull/58409
 * https://github.com/WordPress/gutenberg/pull/61328
-* https://github.com/WordPress/gutenberg/pull/61842
\ No newline at end of file
+* https://github.com/WordPress/gutenberg/pull/61842
+* https://github.com/WordPress/gutenberg/pull/62252
diff --git a/docs/how-to-guides/themes/global-settings-and-styles.md b/docs/how-to-guides/themes/global-settings-and-styles.md
index a5c3e828a2d661..f71bd67bfaf2ec 100644
--- a/docs/how-to-guides/themes/global-settings-and-styles.md
+++ b/docs/how-to-guides/themes/global-settings-and-styles.md
@@ -310,20 +310,21 @@ There's one special setting property, `appearanceTools`, which is a boolean and
 
 To retain backward compatibility, the existing `add_theme_support` declarations that configure the block editor are retrofit in the proper categories for the top-level section. For example, if a theme uses `add_theme_support('disable-custom-colors')`, it'll be the same as setting `settings.color.custom` to `false`. If the `theme.json` contains any settings, these will take precedence over the values declared via `add_theme_support`. This is the complete list of equivalences:
 
-| add_theme_support           | theme.json setting                                        |
-| --------------------------- | --------------------------------------------------------- |
-| `custom-line-height`        | Set `typography.lineHeight` to `true`.              |
-| `custom-spacing`            | Set `spacing.padding` to `true`.                    |
-| `custom-units`              | Provide the list of units via `spacing.units`.            |
-| `disable-custom-colors`     | Set `color.custom` to `false`.                            |
-| `disable-custom-font-sizes` | Set `typography.customFontSize` to `false`.               |
-| `disable-custom-gradients`  | Set `color.customGradient` to `false`.                    |
-| `editor-color-palette`      | Provide the list of colors via `color.palette`.           |
-| `editor-font-sizes`         | Provide the list of font size via `typography.fontSizes`. |
-| `editor-gradient-presets`   | Provide the list of gradients via `color.gradients`.      |
-| `appearance-tools`          | Set `appearanceTools` to `true`.                          |
-| `border`                    | Set `border: color, radius, style, width` to `true`.      |
-| `link-color `               | Set `color.link` to `true`.                               |
+| add_theme_support           | theme.json setting                                            |
+| --------------------------- | ------------------------------------------------------------- |
+| `custom-line-height`        | Set `typography.lineHeight` to `true`.                        |
+| `custom-spacing`            | Set `spacing.padding` to `true`.                              |
+| `custom-units`              | Provide the list of units via `spacing.units`.                |
+| `disable-custom-colors`     | Set `color.custom` to `false`.                                |
+| `disable-custom-font-sizes` | Set `typography.customFontSize` to `false`.                   |
+| `disable-custom-gradients`  | Set `color.customGradient` to `false`.                        |
+| `editor-color-palette`      | Provide the list of colors via `color.palette`.               |
+| `editor-font-sizes`         | Provide the list of font size via `typography.fontSizes`.     |
+| `editor-gradient-presets`   | Provide the list of gradients via `color.gradients`.          |
+| `editor-spacing-sizes`      | Provide the list of spacing sizes via `spacing.spacingSizes`. |
+| `appearance-tools`          | Set `appearanceTools` to `true`.                              |
+| `border`                    | Set `border: color, radius, style, width` to `true`.          |
+| `link-color `               | Set `color.link` to `true`.                                   |
 
 #### Presets
 
diff --git a/lib/class-wp-theme-json-gutenberg.php b/lib/class-wp-theme-json-gutenberg.php
index ad4e2fe105b0c3..86905005efdfed 100644
--- a/lib/class-wp-theme-json-gutenberg.php
+++ b/lib/class-wp-theme-json-gutenberg.php
@@ -3630,6 +3630,13 @@ public static function get_from_editor_settings( $settings ) {
 			$theme_settings['settings']['spacing']['padding'] = $settings['enableCustomSpacing'];
 		}
 
+		if ( isset( $settings['spacingSizes'] ) ) {
+			if ( ! isset( $theme_settings['settings']['spacing'] ) ) {
+				$theme_settings['settings']['spacing'] = array();
+			}
+			$theme_settings['settings']['spacing']['spacingSizes'] = $settings['spacingSizes'];
+		}
+
 		return $theme_settings;
 	}
 
diff --git a/lib/class-wp-theme-json-resolver-gutenberg.php b/lib/class-wp-theme-json-resolver-gutenberg.php
index 84f999e4e9d020..28121cf1b8c8a0 100644
--- a/lib/class-wp-theme-json-resolver-gutenberg.php
+++ b/lib/class-wp-theme-json-resolver-gutenberg.php
@@ -220,6 +220,7 @@ protected static function has_same_registered_blocks( $origin ) {
 	 * @since 5.8.0
 	 * @since 5.9.0 Theme supports have been inlined and the `$theme_support_data` argument removed.
 	 * @since 6.0.0 Added an `$options` parameter to allow the theme data to be returned without theme supports.
+	 * @since 6.6.0 Add support for 'default-font-sizes' and 'default-spacing-sizes' theme supports.
 	 *
 	 * @param array $deprecated Deprecated. Not used.
 	 * @param array $options {
@@ -291,7 +292,7 @@ public static function get_theme_data( $deprecated = array(), $options = array()
 		 * So we take theme supports, transform it to theme.json shape
 		 * and merge the static::$theme upon that.
 		 */
-		$theme_support_data = WP_Theme_JSON_Gutenberg::get_from_editor_settings( get_classic_theme_supports_block_editor_settings() );
+		$theme_support_data = WP_Theme_JSON_Gutenberg::get_from_editor_settings( gutenberg_get_classic_theme_supports_block_editor_settings() );
 		if ( ! wp_theme_has_theme_json() ) {
 			if ( ! isset( $theme_support_data['settings']['color'] ) ) {
 				$theme_support_data['settings']['color'] = array();
@@ -317,6 +318,32 @@ public static function get_theme_data( $deprecated = array(), $options = array()
 			}
 			$theme_support_data['settings']['color']['defaultGradients'] = $default_gradients;
 
+			if ( ! isset( $theme_support_data['settings']['typography'] ) ) {
+				$theme_support_data['settings']['typography'] = array();
+			}
+			$default_font_sizes = false;
+			if ( current_theme_supports( 'default-font-sizes' ) ) {
+				$default_font_sizes = true;
+			}
+			if ( ! isset( $theme_support_data['settings']['typography']['fontSizes'] ) ) {
+				// If the theme does not have any font sizes, we still want to show the core one.
+				$default_font_sizes = true;
+			}
+			$theme_support_data['settings']['typography']['defaultFontSizes'] = $default_font_sizes;
+
+			if ( ! isset( $theme_support_data['settings']['spacing'] ) ) {
+				$theme_support_data['settings']['spacing'] = array();
+			}
+			$default_spacing_sizes = false;
+			if ( current_theme_supports( 'default-spacing-sizes' ) ) {
+				$default_spacing_sizes = true;
+			}
+			if ( ! isset( $theme_support_data['settings']['spacing']['spacingSizes'] ) ) {
+				// If the theme does not have any spacing sizes, we still want to show the core one.
+				$default_spacing_sizes = true;
+			}
+			$theme_support_data['settings']['spacing']['defaultSpacingSizes'] = $default_spacing_sizes;
+
 			if ( ! isset( $theme_support_data['settings']['shadow'] ) ) {
 				$theme_support_data['settings']['shadow'] = array();
 			}
diff --git a/lib/compat/wordpress-6.6/block-editor.php b/lib/compat/wordpress-6.6/block-editor.php
new file mode 100644
index 00000000000000..6253f6a0adca4f
--- /dev/null
+++ b/lib/compat/wordpress-6.6/block-editor.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * Block Editor API.
+ *
+ * @package Gutenberg
+ * @subpackage Editor
+ */
+
+/**
+ * Returns the classic theme supports settings for block editor.
+ *
+ * @since 6.2.0
+ * @since 6.6.0 Add support for custom spacing sizes.
+ *
+ * @return array The classic theme supports settings.
+ */
+function gutenberg_get_classic_theme_supports_block_editor_settings() {
+	$theme_settings = array(
+		'disableCustomColors'    => get_theme_support( 'disable-custom-colors' ),
+		'disableCustomFontSizes' => get_theme_support( 'disable-custom-font-sizes' ),
+		'disableCustomGradients' => get_theme_support( 'disable-custom-gradients' ),
+		'disableLayoutStyles'    => get_theme_support( 'disable-layout-styles' ),
+		'enableCustomLineHeight' => get_theme_support( 'custom-line-height' ),
+		'enableCustomSpacing'    => get_theme_support( 'custom-spacing' ),
+		'enableCustomUnits'      => get_theme_support( 'custom-units' ),
+	);
+
+	// Theme settings.
+	$color_palette = current( (array) get_theme_support( 'editor-color-palette' ) );
+	if ( false !== $color_palette ) {
+		$theme_settings['colors'] = $color_palette;
+	}
+
+	$font_sizes = current( (array) get_theme_support( 'editor-font-sizes' ) );
+	if ( false !== $font_sizes ) {
+		$theme_settings['fontSizes'] = $font_sizes;
+	}
+
+	$gradient_presets = current( (array) get_theme_support( 'editor-gradient-presets' ) );
+	if ( false !== $gradient_presets ) {
+		$theme_settings['gradients'] = $gradient_presets;
+	}
+
+	$spacing_sizes = current( (array) get_theme_support( 'editor-spacing-sizes' ) );
+	if ( false !== $spacing_sizes ) {
+		$theme_settings['spacingSizes'] = $spacing_sizes;
+	}
+
+	return $theme_settings;
+}
diff --git a/lib/load.php b/lib/load.php
index 23985f9c8a92e9..d7a324f78435e1 100644
--- a/lib/load.php
+++ b/lib/load.php
@@ -132,6 +132,7 @@ function gutenberg_is_experiment_enabled( $name ) {
 // WordPress 6.6 compat.
 require __DIR__ . '/compat/wordpress-6.6/admin-bar.php';
 require __DIR__ . '/compat/wordpress-6.6/blocks.php';
+require __DIR__ . '/compat/wordpress-6.6/block-editor.php';
 require __DIR__ . '/compat/wordpress-6.6/compat.php';
 require __DIR__ . '/compat/wordpress-6.6/resolve-patterns.php';
 require __DIR__ . '/compat/wordpress-6.6/block-bindings/pattern-overrides.php';
diff --git a/packages/core-data/src/entity-types/theme.ts b/packages/core-data/src/entity-types/theme.ts
index 761c6461d4aca8..75826c9110b652 100644
--- a/packages/core-data/src/entity-types/theme.ts
+++ b/packages/core-data/src/entity-types/theme.ts
@@ -129,6 +129,10 @@ declare module './base-entity-records' {
 			 * Custom font sizes if defined by the theme.
 			 */
 			'editor-font-sizes': boolean | FontSize[];
+			/**
+			 * Custom spacing sizes if defined by the theme.
+			 */
+			'editor-spacing-sizes': boolean | SpacingSize[];
 			/**
 			 * Custom gradient presets if defined by the theme.
 			 */
@@ -212,6 +216,12 @@ declare module './base-entity-records' {
 			slug: string;
 		}
 
+		export interface SpacingSize {
+			name: string;
+			size: number;
+			slug: string;
+		}
+
 		export interface GradientPreset {
 			name: string;
 			gradient: string;
diff --git a/phpunit/class-wp-theme-json-test.php b/phpunit/class-wp-theme-json-test.php
index 549898b3c8773c..bcf0d238400a08 100644
--- a/phpunit/class-wp-theme-json-test.php
+++ b/phpunit/class-wp-theme-json-test.php
@@ -3161,7 +3161,7 @@ public function test_get_editor_settings_blank() {
 
 	public function test_get_editor_settings_custom_units_can_be_disabled() {
 		add_theme_support( 'custom-units', array() );
-		$actual = WP_Theme_JSON_Gutenberg::get_from_editor_settings( get_classic_theme_supports_block_editor_settings() );
+		$actual = WP_Theme_JSON_Gutenberg::get_from_editor_settings( gutenberg_get_classic_theme_supports_block_editor_settings() );
 		remove_theme_support( 'custom-units' );
 
 		$expected = array(
@@ -3174,7 +3174,7 @@ public function test_get_editor_settings_custom_units_can_be_disabled() {
 
 	public function test_get_editor_settings_custom_units_can_be_enabled() {
 		add_theme_support( 'custom-units' );
-		$actual = WP_Theme_JSON_Gutenberg::get_from_editor_settings( get_classic_theme_supports_block_editor_settings() );
+		$actual = WP_Theme_JSON_Gutenberg::get_from_editor_settings( gutenberg_get_classic_theme_supports_block_editor_settings() );
 		remove_theme_support( 'custom-units' );
 
 		$expected = array(
@@ -3187,7 +3187,7 @@ public function test_get_editor_settings_custom_units_can_be_enabled() {
 
 	public function test_get_editor_settings_custom_units_can_be_filtered() {
 		add_theme_support( 'custom-units', 'rem', 'em' );
-		$actual = WP_Theme_JSON_Gutenberg::get_from_editor_settings( get_classic_theme_supports_block_editor_settings() );
+		$actual = WP_Theme_JSON_Gutenberg::get_from_editor_settings( gutenberg_get_classic_theme_supports_block_editor_settings() );
 		remove_theme_support( 'custom-units' );
 
 		$expected = array(