Description
If you disable all typography features the corresponding panel should completely disappear. Unfortunately for paragraph blocks this never happens.
The reason for this is that the <DropCapControl> always triggers the rendering of the panel. This comes from the fact that if you add an <InspectorControl> with a group it renders the panel even if the only content is null. So to conditionally render the control you must not even return the <InspectorControl>.
But this PR moved the check inside the <InspectorControl> dc95863#diff-6fffd1b2241c181cc9077eb4508a03fe473b7bf22078a72ba9b2b2dfebd8fb92L101-R134
This makes this a regression in WP 6.5.
Step-by-step reproduction instructions
- Disable all typography settings in
theme.json
"typography": {
"fontSizes": [],
"customFontSize": false,
"defaultFontSizes": false,
"writingMode": false,
"dropCap": false,
"textDecoration": false,
"letterSpacing": false,
"textTransform": false,
"fontWeight": false,
"fontStyle": false,
"lineHeight": false
},
You'll also be fighting against the fact that the font sizes setting doesn't fully go away. I used this workaround to fix this first:
add_filter('wp_theme_json_data_default', function($themeJson) {
$data = [
'version' => 2,
'settings' => [
'typography' => [
'fontSizes' => []
]
]
];
return $themeJson->update_with($data);
});
- Insert a paragraph in the block editor.
- You'll still see an empty "Typography" panel.
To further demonstrate that this is the problem you can use this code to trigger the same problem with any other block that would normally not show the Typography Panel if all features are disabled. I used the core/heading block in the following code:
add_action('enqueue_block_editor_assets', function () {
$script = <<<HTML
(function () {
var el = wp.element.createElement;
wp.hooks.addFilter(
"editor.BlockEdit",
"kraftner/non-empty-typography-slot",
wp.compose.createHigherOrderComponent( function( BlockEdit ) {
return function( props ) {
if(props.name !== 'core/heading'){
return el(BlockEdit, props);
}
return el(
wp.element.Fragment,
{},
el(
wp.blockEditor.InspectorControls,
{ group: "typography" },
null
),
el(BlockEdit, props),
);
};
}, 'withInspectorControls' ),
);
})();
HTML;
wp_add_inline_script('wp-blocks', $script);
});
You'll notice that I added an <InspectorControl> with only null as content but the panel still renders.
Screenshots, screen recording, code snippet

Environment info
WordPress 6.5 with and without Gutenberg 18.2.0.
Please confirm that you have searched existing issues in the repo.
Yes
Please confirm that you have tested with all plugins deactivated except Gutenberg.
Yes
Description
If you disable all typography features the corresponding panel should completely disappear. Unfortunately for paragraph blocks this never happens.
The reason for this is that the
<DropCapControl>always triggers the rendering of the panel. This comes from the fact that if you add an<InspectorControl>with a group it renders the panel even if the only content isnull. So to conditionally render the control you must not even return the<InspectorControl>.But this PR moved the check inside the
<InspectorControl>dc95863#diff-6fffd1b2241c181cc9077eb4508a03fe473b7bf22078a72ba9b2b2dfebd8fb92L101-R134This makes this a regression in WP 6.5.
Step-by-step reproduction instructions
theme.jsonYou'll also be fighting against the fact that the font sizes setting doesn't fully go away. I used this workaround to fix this first:
To further demonstrate that this is the problem you can use this code to trigger the same problem with any other block that would normally not show the Typography Panel if all features are disabled. I used the
core/headingblock in the following code:You'll notice that I added an
<InspectorControl>with onlynullas content but the panel still renders.Screenshots, screen recording, code snippet
Environment info
WordPress 6.5 with and without Gutenberg 18.2.0.
Please confirm that you have searched existing issues in the repo.
Yes
Please confirm that you have tested with all plugins deactivated except Gutenberg.
Yes