[css-text] Allow letter-spacing to have unitless values like line-height · Issue #2165 · w3c/csswg-drafts (original) (raw)
Problem
There is often a need to set the letter spacing of an element to a fraction of its font size to reproduce a given design, and have it propagate down as it should (like most text-related properties, letter-spacing
is inherited). That can be done with an em
value, but unfortunately it breaks when the font size changes in a descendant element, because the value is computed using the font-size
that is used where the letter-spacing
is set.
Example:
.rich-text { font-size: 16px; line-height: 1.5; letter-spacing: 0.1em; }
.rich-text h1 { font-size: 32px; }
(JSBin here: https://jsbin.com/gupekikena/edit?html,css,output)
In this example, we want the letter spacing to be 0.1 times the font size. This is the equivalent of setting the "tracking" in Photoshop to 100 since "Tracking and kerning are both measured in 1/1000 em" (source: https://helpx.adobe.com/photoshop/using/line-character-spacing.html). However, that value is computed directly in .rich-text
and becomes a fixed 1.6px
, so in an h1
, even though we set the font-size
to 32px
, the letter spacing is still 1.6px
and not 3.2px
like we'd expect. We have to duplicate the letter-spacing: 0.1em;
rule every time we change the font size in a descendant to have the result we want.
Proposed solution
Introduce a new unitless value option for letter-spacing
that works like line-height
's unitless values. Notice in the example above, the line height is set to 1.5 times the font size, and it properly propagates down to h1
and any other descendant that changes the font size. I believe a unitless value for letter-spacing
should work exactly like that. We would simply have to remove the em
in the example above and it would work.
I'm aware that we can achieve this with custom properties (https://stackoverflow.com/questions/39692615/is-it-possible-to-have-letter-spacing-relative-to-the-font-size-and-inherit-prop), but I feel like it's still worth adding.
Related to #1814