[wp-trac] [WordPress Trac] #60263: Fluid typography: PHP division by zero error when theme.json min and max viewport widths are equal

WordPress Trac noreply at wordpress.org
Tue Jan 16 05:49:07 UTC 2024


#60263: Fluid typography: PHP division by zero error when theme.json min and max
viewport widths are equal
-------------------------------------------------+-------------------------
 Reporter:  ramonopoly                           |       Owner:  (none)
     Type:  defect (bug)                         |      Status:  new
 Priority:  normal                               |   Milestone:  Awaiting
                                                 |  Review
Component:  Editor                               |     Version:  trunk
 Severity:  normal                               |  Resolution:
 Keywords:  has-patch has-unit-tests gutenberg-  |     Focuses:
  merge                                          |
-------------------------------------------------+-------------------------
Description changed by ramonopoly:

Old description:

> When the same value is provided for min and max viewport widths in
> theme.json fluid typography config, PHP will throw a
> `DivisionByZeroError`.
>
> This is because fluid typography calculates the linear scale denominator
> using `minViewportWidth - maxViewportWidth`.
>
> See the two `1640px` values:
>

> {{{
> {
>         "$schema": "https://schemas.wp.org/trunk/theme.json",
>         "version": 2,
>         "settings": {
>
>                 "typography": {
>                         "fluid": {
>                                 "minFontSize": "16px",
>                                 "maxViewportWidth": "1640px",
>                                 "minViewportWidth": "1640px"
>                         }
>                 }
>         }
> }
> }}}
>

>

> To avoid dividing by zero values, I propose falling back to the default
> linear scale factor of `1` when `minViewportWidth - maxViewportWidth` is
> zero or some other falsy.
>
> The fluid typography clamp rule needs valid max and min viewport
> constraints.
>
> Alternatives to this approach:
>
> 1. We could provide a fallback from the
> [https://github.com/WordPress/gutenberg/blob/29cf213ee3a6a5ef39e768ec6de3e20873355d15/lib
> /block-supports/typography.php#L474-L474 default values] in
> gutenberg_get_typography_font_size_value(), e.g., 1600 - 320.
> 2. Not calculate fluid typography values and return null.

New description:

 When the same value is provided for min and max viewport widths in
 theme.json fluid typography config, PHP will throw a
 `DivisionByZeroError`.

 This is because fluid typography calculates the linear scale denominator
 using `minViewportWidth - maxViewportWidth`.

 See the two `1640px` values:


 {{{
 {
         "$schema": "https://schemas.wp.org/trunk/theme.json",
         "version": 2,
         "settings": {

                 "typography": {
                         "fluid": {
                                 "minFontSize": "16px",
                                 "maxViewportWidth": "1640px",
                                 "minViewportWidth": "1640px"
                         }
                 }
         }
 }
 }}}




 To avoid dividing by zero values, I propose returning `null` when
 `minViewportWidth - maxViewportWidth` is zero or some other falsey.

 The consequence is that fluid font sizes will not be calculated.

 The fluid typography clamp rule needs valid max and min viewport
 constraints.

 Alternatives to this approach:

 1. We could provide a fallback from the
 [https://github.com/WordPress/gutenberg/blob/29cf213ee3a6a5ef39e768ec6de3e20873355d15/lib
 /block-supports/typography.php#L474-L474 default values] in
 gutenberg_get_typography_font_size_value(), e.g., 1600 - 320.

--

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/60263#comment:4>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list