According to this page, the CSS letter-spacing property has a default value of normal.
Notably, non-default values are added to the default value:
The most important point to note when using letter-spacing is that the value specified does not change the default, it is added to the default spacing the browser applies (based on the font metrics). letter-spacing also supports negative values, which will tighten the appearance of text, rather than loosening it.
According to this definition, 0 should be equivalent to the default value of normal since 0 + X = X.
1) Is it valid to use 0 as a replacement for the default value of normal? (This is for a slider implementation.)
2) Why isn't 0 the default value? Why introduce another value (i.e., normal)?
This test on CodePen also suggests a value of 0 is, indeed, equivalent to the default value of normal.
.loose {
letter-spacing: 2px;
}
.tight {
letter-spacing: -1px;
}
.zero {
letter-spacing: 0;
}
.normal {
letter-spacing: normal;
}
<p>This type has no additional letter-spacing applied.</p>
<p class="loose">This type is letter-spaced loosely at <code>2px</code>.</p>
<p class="tight">This type is letter-spaced tightly at <code>-1px</code></p>
<p class="zero">This type is letter-spaced at <code>0</code></p>
<p class="normal">This type is letter-spaced at <code>normal</code></p>