[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