Skip to content

Conversation

@jorgefilipecosta
Copy link
Member

Part of the solution to #72219.
When fit text is on the font size is dynamically computed based on the available space, and changing font size values has no impact at all.
The font size attribute is still kept so if the user disables fit text things go back to how they were before.

This PR hides the font size picker when fit text is on.

Screenshots or screencast

Screen.Recording.2025-10-20.at.13.56.53.mov

Testing

  • Add a paragraph
  • Choose some font size.
  • Enabled fit text, verify font size picker disappears.
  • Disable fit text, verify font size appears with the value previously set.
  • Repeat the test for heading.

@github-actions
Copy link

github-actions bot commented Oct 20, 2025

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.

Co-authored-by: jorgefilipecosta <[email protected]>
Co-authored-by: mcsf <[email protected]>
Co-authored-by: aduth <[email protected]>
Co-authored-by: mirka <[email protected]>
Co-authored-by: t-hamano <[email protected]>

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

@jorgefilipecosta jorgefilipecosta added [Type] Enhancement A suggestion for improvement. [Feature] Typography Font and typography-related issues and PRs labels Oct 20, 2025
@github-actions
Copy link

github-actions bot commented Oct 20, 2025

Size Change: +59 B (0%)

Total Size: 2.17 MB

Filename Size Change
build/block-editor/index.min.js 296 kB +21 B (+0.01%)
build/components/index.min.js 271 kB +38 B (+0.01%)
ℹ️ View Unchanged
Filename Size
build-module/a11y/index.min.js 355 B
build-module/block-editor/utils/fit-text-frontend.min.js 551 B
build-module/block-library/accordion/view.min.js 520 B
build-module/block-library/file/view.min.js 346 B
build-module/block-library/form/view.min.js 528 B
build-module/block-library/image/view.min.js 1.64 kB
build-module/block-library/navigation/view.min.js 1.03 kB
build-module/block-library/query/view.min.js 518 B
build-module/block-library/search/view.min.js 497 B
build-module/interactivity-router/full-page.min.js 451 B
build-module/interactivity-router/index.min.js 11.6 kB
build-module/interactivity/debug.min.js 18.5 kB
build-module/interactivity/index.min.js 14.9 kB
build-module/latex-to-mathml/index.min.js 56.5 kB
build-module/latex-to-mathml/loader.min.js 131 B
build/a11y/index.min.js 1.06 kB
build/annotations/index.min.js 2.38 kB
build/api-fetch/index.min.js 2.83 kB
build/autop/index.min.js 2.18 kB
build/blob/index.min.js 631 B
build/block-directory/index.min.js 8.04 kB
build/block-directory/style-rtl.css 1.05 kB
build/block-directory/style.css 1.05 kB
build/block-editor/content-rtl.css 4.81 kB
build/block-editor/content.css 4.8 kB
build/block-editor/default-editor-styles-rtl.css 224 B
build/block-editor/default-editor-styles.css 224 B
build/block-editor/style-rtl.css 16.2 kB
build/block-editor/style.css 16.2 kB
build/block-library/accordion-heading/style-rtl.css 340 B
build/block-library/accordion-heading/style.css 340 B
build/block-library/accordion-item/style-rtl.css 213 B
build/block-library/accordion-item/style.css 213 B
build/block-library/accordion-panel/style-rtl.css 99 B
build/block-library/accordion-panel/style.css 99 B
build/block-library/archives/editor-rtl.css 61 B
build/block-library/archives/editor.css 61 B
build/block-library/archives/style-rtl.css 90 B
build/block-library/archives/style.css 90 B
build/block-library/audio/editor-rtl.css 149 B
build/block-library/audio/editor.css 151 B
build/block-library/audio/style-rtl.css 132 B
build/block-library/audio/style.css 132 B
build/block-library/audio/theme-rtl.css 134 B
build/block-library/audio/theme.css 134 B
build/block-library/avatar/editor-rtl.css 115 B
build/block-library/avatar/editor.css 115 B
build/block-library/avatar/style-rtl.css 104 B
build/block-library/avatar/style.css 104 B
build/block-library/breadcrumbs/style-rtl.css 203 B
build/block-library/breadcrumbs/style.css 203 B
build/block-library/button/editor-rtl.css 265 B
build/block-library/button/editor.css 265 B
build/block-library/button/style-rtl.css 554 B
build/block-library/button/style.css 554 B
build/block-library/buttons/editor-rtl.css 291 B
build/block-library/buttons/editor.css 291 B
build/block-library/buttons/style-rtl.css 349 B
build/block-library/buttons/style.css 349 B
build/block-library/calendar/style-rtl.css 239 B
build/block-library/calendar/style.css 239 B
build/block-library/categories/editor-rtl.css 132 B
build/block-library/categories/editor.css 131 B
build/block-library/categories/style-rtl.css 152 B
build/block-library/categories/style.css 152 B
build/block-library/classic-rtl.css 179 B
build/block-library/classic.css 179 B
build/block-library/code/editor-rtl.css 53 B
build/block-library/code/editor.css 53 B
build/block-library/code/style-rtl.css 139 B
build/block-library/code/style.css 139 B
build/block-library/code/theme-rtl.css 122 B
build/block-library/code/theme.css 122 B
build/block-library/columns/editor-rtl.css 108 B
build/block-library/columns/editor.css 108 B
build/block-library/columns/style-rtl.css 421 B
build/block-library/columns/style.css 421 B
build/block-library/comment-author-avatar/editor-rtl.css 124 B
build/block-library/comment-author-avatar/editor.css 124 B
build/block-library/comment-author-name/style-rtl.css 72 B
build/block-library/comment-author-name/style.css 72 B
build/block-library/comment-content/style-rtl.css 120 B
build/block-library/comment-content/style.css 120 B
build/block-library/comment-date/style-rtl.css 65 B
build/block-library/comment-date/style.css 65 B
build/block-library/comment-edit-link/style-rtl.css 70 B
build/block-library/comment-edit-link/style.css 70 B
build/block-library/comment-reply-link/style-rtl.css 71 B
build/block-library/comment-reply-link/style.css 71 B
build/block-library/comment-template/style-rtl.css 191 B
build/block-library/comment-template/style.css 191 B
build/block-library/comments-pagination-numbers/editor-rtl.css 122 B
build/block-library/comments-pagination-numbers/editor.css 121 B
build/block-library/comments-pagination/editor-rtl.css 168 B
build/block-library/comments-pagination/editor.css 168 B
build/block-library/comments-pagination/style-rtl.css 201 B
build/block-library/comments-pagination/style.css 201 B
build/block-library/comments-title/editor-rtl.css 75 B
build/block-library/comments-title/editor.css 75 B
build/block-library/comments/editor-rtl.css 842 B
build/block-library/comments/editor.css 842 B
build/block-library/comments/style-rtl.css 637 B
build/block-library/comments/style.css 637 B
build/block-library/common-rtl.css 1.11 kB
build/block-library/common.css 1.11 kB
build/block-library/cover/editor-rtl.css 631 B
build/block-library/cover/editor.css 631 B
build/block-library/cover/style-rtl.css 1.7 kB
build/block-library/cover/style.css 1.69 kB
build/block-library/details/editor-rtl.css 65 B
build/block-library/details/editor.css 65 B
build/block-library/details/style-rtl.css 86 B
build/block-library/details/style.css 86 B
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
build/block-library/editor-rtl.css 11.6 kB
build/block-library/editor.css 11.6 kB
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/embed/editor-rtl.css 331 B
build/block-library/embed/editor.css 331 B
build/block-library/embed/style-rtl.css 419 B
build/block-library/embed/style.css 419 B
build/block-library/embed/theme-rtl.css 133 B
build/block-library/embed/theme.css 133 B
build/block-library/file/editor-rtl.css 324 B
build/block-library/file/editor.css 324 B
build/block-library/file/style-rtl.css 278 B
build/block-library/file/style.css 278 B
build/block-library/footnotes/style-rtl.css 198 B
build/block-library/footnotes/style.css 197 B
build/block-library/form-input/editor-rtl.css 229 B
build/block-library/form-input/editor.css 229 B
build/block-library/form-input/style-rtl.css 366 B
build/block-library/form-input/style.css 366 B
build/block-library/form-submission-notification/editor-rtl.css 344 B
build/block-library/form-submission-notification/editor.css 341 B
build/block-library/form-submit-button/style-rtl.css 69 B
build/block-library/form-submit-button/style.css 69 B
build/block-library/freeform/editor-rtl.css 2.59 kB
build/block-library/freeform/editor.css 2.59 kB
build/block-library/gallery/editor-rtl.css 615 B
build/block-library/gallery/editor.css 616 B
build/block-library/gallery/style-rtl.css 1.84 kB
build/block-library/gallery/style.css 1.84 kB
build/block-library/gallery/theme-rtl.css 108 B
build/block-library/gallery/theme.css 108 B
build/block-library/group/editor-rtl.css 335 B
build/block-library/group/editor.css 335 B
build/block-library/group/style-rtl.css 103 B
build/block-library/group/style.css 103 B
build/block-library/group/theme-rtl.css 79 B
build/block-library/group/theme.css 79 B
build/block-library/heading/style-rtl.css 188 B
build/block-library/heading/style.css 188 B
build/block-library/html/editor-rtl.css 357 B
build/block-library/html/editor.css 358 B
build/block-library/image/editor-rtl.css 763 B
build/block-library/image/editor.css 763 B
build/block-library/image/style-rtl.css 1.6 kB
build/block-library/image/style.css 1.59 kB
build/block-library/image/theme-rtl.css 137 B
build/block-library/image/theme.css 137 B
build/block-library/index.min.js 266 kB
build/block-library/latest-comments/style-rtl.css 355 B
build/block-library/latest-comments/style.css 354 B
build/block-library/latest-posts/editor-rtl.css 139 B
build/block-library/latest-posts/editor.css 138 B
build/block-library/latest-posts/style-rtl.css 520 B
build/block-library/latest-posts/style.css 520 B
build/block-library/list/style-rtl.css 107 B
build/block-library/list/style.css 107 B
build/block-library/loginout/style-rtl.css 61 B
build/block-library/loginout/style.css 61 B
build/block-library/media-text/editor-rtl.css 321 B
build/block-library/media-text/editor.css 320 B
build/block-library/media-text/style-rtl.css 543 B
build/block-library/media-text/style.css 542 B
build/block-library/more/editor-rtl.css 393 B
build/block-library/more/editor.css 393 B
build/block-library/navigation-link/editor-rtl.css 625 B
build/block-library/navigation-link/editor.css 628 B
build/block-library/navigation-link/style-rtl.css 190 B
build/block-library/navigation-link/style.css 188 B
build/block-library/navigation-submenu/editor-rtl.css 295 B
build/block-library/navigation-submenu/editor.css 294 B
build/block-library/navigation/editor-rtl.css 2.24 kB
build/block-library/navigation/editor.css 2.24 kB
build/block-library/navigation/style-rtl.css 2.27 kB
build/block-library/navigation/style.css 2.25 kB
build/block-library/nextpage/editor-rtl.css 392 B
build/block-library/nextpage/editor.css 392 B
build/block-library/page-list/editor-rtl.css 356 B
build/block-library/page-list/editor.css 356 B
build/block-library/page-list/style-rtl.css 192 B
build/block-library/page-list/style.css 192 B
build/block-library/paragraph/editor-rtl.css 251 B
build/block-library/paragraph/editor.css 251 B
build/block-library/paragraph/style-rtl.css 341 B
build/block-library/paragraph/style.css 340 B
build/block-library/post-author-biography/style-rtl.css 74 B
build/block-library/post-author-biography/style.css 74 B
build/block-library/post-author-name/style-rtl.css 69 B
build/block-library/post-author-name/style.css 69 B
build/block-library/post-author/style-rtl.css 188 B
build/block-library/post-author/style.css 189 B
build/block-library/post-comments-count/style-rtl.css 72 B
build/block-library/post-comments-count/style.css 72 B
build/block-library/post-comments-form/editor-rtl.css 96 B
build/block-library/post-comments-form/editor.css 96 B
build/block-library/post-comments-form/style-rtl.css 525 B
build/block-library/post-comments-form/style.css 525 B
build/block-library/post-comments-link/style-rtl.css 71 B
build/block-library/post-comments-link/style.css 71 B
build/block-library/post-content/style-rtl.css 61 B
build/block-library/post-content/style.css 61 B
build/block-library/post-date/style-rtl.css 62 B
build/block-library/post-date/style.css 62 B
build/block-library/post-excerpt/editor-rtl.css 71 B
build/block-library/post-excerpt/editor.css 71 B
build/block-library/post-excerpt/style-rtl.css 155 B
build/block-library/post-excerpt/style.css 155 B
build/block-library/post-featured-image/editor-rtl.css 719 B
build/block-library/post-featured-image/editor.css 717 B
build/block-library/post-featured-image/style-rtl.css 347 B
build/block-library/post-featured-image/style.css 347 B
build/block-library/post-navigation-link/style-rtl.css 215 B
build/block-library/post-navigation-link/style.css 214 B
build/block-library/post-template/style-rtl.css 414 B
build/block-library/post-template/style.css 414 B
build/block-library/post-terms/style-rtl.css 96 B
build/block-library/post-terms/style.css 96 B
build/block-library/post-time-to-read/style-rtl.css 70 B
build/block-library/post-time-to-read/style.css 70 B
build/block-library/post-title/style-rtl.css 162 B
build/block-library/post-title/style.css 162 B
build/block-library/preformatted/style-rtl.css 125 B
build/block-library/preformatted/style.css 125 B
build/block-library/pullquote/editor-rtl.css 133 B
build/block-library/pullquote/editor.css 133 B
build/block-library/pullquote/style-rtl.css 365 B
build/block-library/pullquote/style.css 365 B
build/block-library/pullquote/theme-rtl.css 176 B
build/block-library/pullquote/theme.css 176 B
build/block-library/query-pagination-numbers/editor-rtl.css 121 B
build/block-library/query-pagination-numbers/editor.css 118 B
build/block-library/query-pagination/editor-rtl.css 154 B
build/block-library/query-pagination/editor.css 154 B
build/block-library/query-pagination/style-rtl.css 237 B
build/block-library/query-pagination/style.css 237 B
build/block-library/query-title/style-rtl.css 64 B
build/block-library/query-title/style.css 64 B
build/block-library/query-total/style-rtl.css 64 B
build/block-library/query-total/style.css 64 B
build/block-library/query/editor-rtl.css 438 B
build/block-library/query/editor.css 438 B
build/block-library/quote/style-rtl.css 238 B
build/block-library/quote/style.css 238 B
build/block-library/quote/theme-rtl.css 233 B
build/block-library/quote/theme.css 236 B
build/block-library/read-more/style-rtl.css 131 B
build/block-library/read-more/style.css 131 B
build/block-library/reset-rtl.css 472 B
build/block-library/reset.css 472 B
build/block-library/rss/editor-rtl.css 126 B
build/block-library/rss/editor.css 126 B
build/block-library/rss/style-rtl.css 284 B
build/block-library/rss/style.css 283 B
build/block-library/search/editor-rtl.css 199 B
build/block-library/search/editor.css 199 B
build/block-library/search/style-rtl.css 665 B
build/block-library/search/style.css 666 B
build/block-library/search/theme-rtl.css 113 B
build/block-library/search/theme.css 113 B
build/block-library/separator/editor-rtl.css 100 B
build/block-library/separator/editor.css 100 B
build/block-library/separator/style-rtl.css 248 B
build/block-library/separator/style.css 248 B
build/block-library/separator/theme-rtl.css 195 B
build/block-library/separator/theme.css 195 B
build/block-library/shortcode/editor-rtl.css 286 B
build/block-library/shortcode/editor.css 286 B
build/block-library/site-logo/editor-rtl.css 773 B
build/block-library/site-logo/editor.css 770 B
build/block-library/site-logo/style-rtl.css 218 B
build/block-library/site-logo/style.css 218 B
build/block-library/site-tagline/editor-rtl.css 87 B
build/block-library/site-tagline/editor.css 87 B
build/block-library/site-tagline/style-rtl.css 65 B
build/block-library/site-tagline/style.css 65 B
build/block-library/site-title/editor-rtl.css 85 B
build/block-library/site-title/editor.css 85 B
build/block-library/site-title/style-rtl.css 143 B
build/block-library/site-title/style.css 143 B
build/block-library/social-link/editor-rtl.css 314 B
build/block-library/social-link/editor.css 314 B
build/block-library/social-links/editor-rtl.css 339 B
build/block-library/social-links/editor.css 338 B
build/block-library/social-links/style-rtl.css 1.51 kB
build/block-library/social-links/style.css 1.51 kB
build/block-library/spacer/editor-rtl.css 346 B
build/block-library/spacer/editor.css 346 B
build/block-library/spacer/style-rtl.css 48 B
build/block-library/spacer/style.css 48 B
build/block-library/style-rtl.css 15.6 kB
build/block-library/style.css 15.6 kB
build/block-library/table-of-contents/style-rtl.css 83 B
build/block-library/table-of-contents/style.css 83 B
build/block-library/table/editor-rtl.css 394 B
build/block-library/table/editor.css 394 B
build/block-library/table/style-rtl.css 641 B
build/block-library/table/style.css 640 B
build/block-library/table/theme-rtl.css 152 B
build/block-library/table/theme.css 152 B
build/block-library/tag-cloud/editor-rtl.css 92 B
build/block-library/tag-cloud/editor.css 92 B
build/block-library/tag-cloud/style-rtl.css 248 B
build/block-library/tag-cloud/style.css 248 B
build/block-library/template-part/editor-rtl.css 368 B
build/block-library/template-part/editor.css 368 B
build/block-library/template-part/theme-rtl.css 113 B
build/block-library/template-part/theme.css 113 B
build/block-library/term-count/style-rtl.css 63 B
build/block-library/term-count/style.css 63 B
build/block-library/term-description/style-rtl.css 126 B
build/block-library/term-description/style.css 126 B
build/block-library/term-name/style-rtl.css 62 B
build/block-library/term-name/style.css 62 B
build/block-library/term-template/editor-rtl.css 225 B
build/block-library/term-template/editor.css 225 B
build/block-library/term-template/style-rtl.css 114 B
build/block-library/term-template/style.css 114 B
build/block-library/text-columns/editor-rtl.css 95 B
build/block-library/text-columns/editor.css 95 B
build/block-library/text-columns/style-rtl.css 165 B
build/block-library/text-columns/style.css 165 B
build/block-library/theme-rtl.css 715 B
build/block-library/theme.css 719 B
build/block-library/verse/style-rtl.css 98 B
build/block-library/verse/style.css 98 B
build/block-library/video/editor-rtl.css 413 B
build/block-library/video/editor.css 414 B
build/block-library/video/style-rtl.css 202 B
build/block-library/video/style.css 202 B
build/block-library/video/theme-rtl.css 134 B
build/block-library/video/theme.css 134 B
build/block-serialization-default-parser/index.min.js 1.16 kB
build/block-serialization-spec-parser/index.min.js 3.08 kB
build/blocks/index.min.js 56.7 kB
build/commands/index.min.js 17.4 kB
build/commands/style-rtl.css 999 B
build/commands/style.css 1 kB
build/components/style-rtl.css 14 kB
build/components/style.css 14 kB
build/compose/index.min.js 13.8 kB
build/core-commands/index.min.js 4.1 kB
build/core-data/index.min.js 85.1 kB
build/customize-widgets/index.min.js 12.3 kB
build/customize-widgets/style-rtl.css 1.44 kB
build/customize-widgets/style.css 1.44 kB
build/data-controls/index.min.js 793 B
build/data/index.min.js 9.61 kB
build/date/index.min.js 23.6 kB
build/deprecated/index.min.js 755 B
build/dom-ready/index.min.js 476 B
build/dom/index.min.js 4.91 kB
build/edit-post/classic-rtl.css 426 B
build/edit-post/classic.css 427 B
build/edit-post/index.min.js 15.8 kB
build/edit-post/style-rtl.css 3.33 kB
build/edit-post/style.css 3.33 kB
build/edit-site/index.min.js 260 kB
build/edit-site/posts-rtl.css 9.95 kB
build/edit-site/posts.css 9.95 kB
build/edit-site/style-rtl.css 15.9 kB
build/edit-site/style.css 15.9 kB
build/edit-widgets/index.min.js 20 kB
build/edit-widgets/style-rtl.css 4.59 kB
build/edit-widgets/style.css 4.59 kB
build/editor/index.min.js 138 kB
build/editor/style-rtl.css 9.96 kB
build/editor/style.css 9.96 kB
build/element/index.min.js 5.19 kB
build/escape-html/index.min.js 586 B
build/format-library/index.min.js 10.6 kB
build/format-library/style-rtl.css 308 B
build/format-library/style.css 308 B
build/hooks/index.min.js 1.83 kB
build/html-entities/index.min.js 494 B
build/i18n/index.min.js 2.46 kB
build/is-shallow-equal/index.min.js 568 B
build/keyboard-shortcuts/index.min.js 1.57 kB
build/keycodes/index.min.js 1.53 kB
build/latex-to-mathml/index.min.js 56.7 kB
build/list-reusable-blocks/index.min.js 2.44 kB
build/list-reusable-blocks/style-rtl.css 1.02 kB
build/list-reusable-blocks/style.css 1.02 kB
build/media-utils/index.min.js 3.96 kB
build/notices/index.min.js 1.11 kB
build/nux/index.min.js 1.88 kB
build/nux/style-rtl.css 622 B
build/nux/style.css 618 B
build/patterns/index.min.js 8.63 kB
build/patterns/style-rtl.css 703 B
build/patterns/style.css 703 B
build/plugins/index.min.js 2.14 kB
build/preferences-persistence/index.min.js 2.15 kB
build/preferences/index.min.js 3.3 kB
build/preferences/style-rtl.css 415 B
build/preferences/style.css 415 B
build/primitives/index.min.js 1.01 kB
build/priority-queue/index.min.js 1.61 kB
build/private-apis/index.min.js 1.03 kB
build/react-i18n/index.min.js 832 B
build/react-refresh-entry/index.min.js 9.44 kB
build/react-refresh-runtime/index.min.js 3.59 kB
build/redux-routine/index.min.js 3.36 kB
build/reusable-blocks/index.min.js 2.92 kB
build/reusable-blocks/style-rtl.css 275 B
build/reusable-blocks/style.css 275 B
build/rich-text/index.min.js 12.9 kB
build/router/index.min.js 5.96 kB
build/server-side-render/index.min.js 1.9 kB
build/shortcode/index.min.js 1.58 kB
build/style-engine/index.min.js 2.31 kB
build/token-list/index.min.js 740 B
build/undo-manager/index.min.js 915 B
build/url/index.min.js 3.98 kB
build/vendors/react-dom.min.js 43 kB
build/vendors/react-jsx-runtime.min.js 691 B
build/vendors/react.min.js 4.27 kB
build/viewport/index.min.js 1.22 kB
build/warning/index.min.js 454 B
build/widgets/index.min.js 7.83 kB
build/widgets/style-rtl.css 1.17 kB
build/widgets/style.css 1.18 kB
build/wordcount/index.min.js 1.04 kB

compressed-size-action

settings,
panelId,
defaultControls = DEFAULT_CONTROLS,
fitText = false,
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

An alternative solution to avoid passing a new prop here, would be to on the typography hook packages/block-editor/src/hooks/typography.js change the settings passed when fit text is on. But will add more code without any specific advantage. I'm happy to change if someone prefers the other approach.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My only hesitation here is what to do about the Site Editor screens: ScreenBlock and ScreenTypographyElement. Will we support fit-text for site-wide elements? What about when setting typography styles for all Paragraphs?

That said, for the purpose of releasing this in 6.9, I'm good.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My only hesitation here is what to do about the Site Editor screens: ScreenBlock and ScreenTypographyElement. Will we support fit-text for site-wide elements?

There are no plans to support fit-text in global styles, I don't think it makes sense to globally target elements with fit text from global styles (it is not even a css property so technically it would be complex). I expect fit text to be enabled per block when needed.
This component is also used by global styles but the property has a default so it should have no impact for the global styles use case.

settings,
panelId,
defaultControls = DEFAULT_CONTROLS,
fitText = false,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My only hesitation here is what to do about the Site Editor screens: ScreenBlock and ScreenTypographyElement. Will we support fit-text for site-wide elements? What about when setting typography styles for all Paragraphs?

That said, for the purpose of releasing this in 6.9, I'm good.

@github-actions
Copy link

github-actions bot commented Oct 20, 2025

Flaky tests detected in 72fec2e.
Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/18655870133
📝 Reported issues:

@mcsf
Copy link
Contributor

mcsf commented Oct 20, 2025

@jorgefilipecosta: per #72219 (comment), what if we just disabled the control? How does it feel in practice?

@jorgefilipecosta
Copy link
Member Author

jorgefilipecosta commented Oct 20, 2025

Hi @mcsf, unfortunately font size picker did not had a disabled prop, I added a very simple disable prop (it can benefit from some enhancements) but I think it works ok for now, combined with a help text could be a good solution. I added a commit with this approach.

Copy link
Contributor

@mcsf mcsf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jorgefilipecosta: thanks for trying the disabled route. Currently:

  • The visual representation of that state is very poor. Only the toggle button between size presets and custom size changes, as well as the colour of the size unit ("px").
  • The size presets still change the cursor to pointer.


export type FontSizePickerSelectProps = Pick<
FontSizePickerProps,
'value' | 'size'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you intend to propagate the prop?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Exactly the idea was to propagate the disable to the components bellow.

@jorgefilipecosta
Copy link
Member Author

@jorgefilipecosta: thanks for trying the disabled route. Currently:

  • The visual representation of that state is very poor. Only the toggle button between size presets and custom size changes, as well as the colour of the size unit ("px").
  • The size presets still change the cursor to pointer.

Hi @mcsf, I missed the stage & commit to the propagation of the disabled 😔 I was added, I think things should be much better with the latest commit.

@jorgefilipecosta
Copy link
Member Author

jorgefilipecosta commented Oct 20, 2025

This is what I'm seeing now:

Screenshot 2025-10-20 at 16 55 30 Screenshot 2025-10-20 at 16 55 10 Screenshot 2025-10-20 at 16 58 03

@jorgefilipecosta
Copy link
Member Author

It may make sense to divide this PR in two if we agree with its direction (one for the addition of disable in FontSizePicker, a pure component enhancement), another one for for the fit text related change.

@mcsf
Copy link
Contributor

mcsf commented Oct 20, 2025

Thanks, this looks much better. As far as the UX is concerned, this has my approval.

However, I'd like the opinion of someone with more authority on Components before we commit to extending all these surfaces.

@mcsf
Copy link
Contributor

mcsf commented Oct 20, 2025

This is what I'm seeing now:

Screenshot 2025-10-20 at 16 55 30 Screenshot 2025-10-20 at 16 55 10 Screenshot 2025-10-20 at 16 58 03

Btw, the last one here is the only one that I think needs improvement, no?

@mcsf mcsf changed the title Update: Hide font size picker when fit text is on. Update: Disable font size picker when fit text is on. Oct 20, 2025
@mcsf mcsf changed the title Update: Disable font size picker when fit text is on. Disable font size picker when fit text is on. Oct 20, 2025
@jorgefilipecosta
Copy link
Member Author

Btw, the last one here is the only one that I think needs improvement, no?

Yes the last one is where disabled state is not very noticeable (the border just gets a little lighter), but it is also not completely wrong as interaction with the component gets correctly disabled and clicking does nothing.

@aduth
Copy link
Member

aduth commented Oct 20, 2025

@jorgefilipecosta: per #72219 (comment), what if we just disabled the control? How does it feel in practice?

Do we have a consistent pattern for this? Consulting external resources, I'm not convinced disabling is the right path.

There's also some prior art for toggles controlling visibility of other fields in settings:

  • In Cover block, "Fixed background" setting toggles visibility of the "Focal point" field
  • In Group block, "Inner blocks use content width" setting toggles visibility of "Content width" and other settings
  • The post Status "Password protected" setting toggles visibility of the "Password" field

Although one important caveat is that in those examples, the fields come after the toggle, with an implied connection between the toggle and the availability of those fields.

As far as whether it makes sense for CustomSelectControl and FontSizePicker to support disabled props, I think it's a reasonable expectation that most fields should support a disabled prop. FontSizePicker is a bit unique in how it's composed from many different underlying controls, where I'd expect the disabled to cascade (as it does here).

@mirka
Copy link
Member

mirka commented Oct 21, 2025

I'd be happy to review PRs if we need disabled props supported on more components.

The only one that's not straightforward is ToggleGroupControl (used in FontSizePicker) which currently doesn't support disabled on the entire control (only supports disabled items) #57862. The immediate blocker here is actually the visual design, not the prop passing. We have a new design ready, and I'm planning to update the component soon.

@mcsf
Copy link
Contributor

mcsf commented Oct 21, 2025

Although one important caveat is that in those examples, the fields come after the toggle, with an implied connection between the toggle and the availability of those fields.

I think this is probably the most salient point here. I'd love us to better integrate fit-text into the font-size controls, but as they stand they are a bit detached from one another, and for this reason alone I'm slightly (but only ever so slightly) leaning towards disabling rather than hiding.

@jorgefilipecosta
Copy link
Member Author

The article shared by @aduth is interesting https://www.smashingmagazine.com/2024/05/hidden-vs-disabled-ux/. To the question "Will a given user ever be able to interact with this element?" given that the user just needs to disable fit text to interact with the element the answerer here is yes, so I guess disabling may be a good option. In this case in practical terms given that fit text is bellow it avoids the jump so it has a slightly better us.

@t-hamano
Copy link
Contributor

t-hamano commented Oct 21, 2025

I would like to avoid shipping enhancements such as adding new properties to components beyond the 6.9 Beta1 release if possible.

What do you think about the following behavior?

  • Toggle off fit text when a font size is selected.
  • Clear the font size selection when fit text is toggled on.

@mcsf
Copy link
Contributor

mcsf commented Oct 21, 2025

I would like to avoid shipping enhancements such as adding new properties to components beyond the 6.9 Beta1 release if possible.

That's fair.

What do you think about the following behavior?

  • Toggle off fit text when a font size is selected.
  • Clear the font size selection when fit text is toggled on.

I'm not opposed to it. :)

@jorgefilipecosta
Copy link
Member Author

I would like to avoid shipping enhancements such as adding new properties to components beyond the 6.9 Beta1 release if possible.

What do you think about the following behavior?

  • Toggle off fit text when a font size is selected.
  • Clear the font size selection when fit text is toggled on.

Thank you for the suggestion @t-hamano I'm trying it out.

@jorgefilipecosta
Copy link
Member Author

@t-hamano suggestion is available for testing at #72533. It seems to work well and provide a nice experience. cc: @mcsf

@jorgefilipecosta
Copy link
Member Author

Closing in favor of #72533.

@github-project-automation github-project-automation bot moved this from 🔎 Needs Review to ✅ Done in WordPress 6.9 Editor Tasks Oct 22, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

[Feature] Typography Font and typography-related issues and PRs [Type] Enhancement A suggestion for improvement.

Projects

Development

Successfully merging this pull request may close these issues.

6 participants