It is not a mistake that this is not an incorrect implementation of the specification; spec implies that the shadow is generated until the calculated value is something other than none . The only values ββthat can be calculated for none are none or initial .
Text shadows are drawn similar to box shadows. Because of this, most of the behavior of text shadows follows the specification for shadow fields . Nowhere in any specification does it indicate that a value with all zeros should not generate shadow. All this suggests that any property can take one of two possible values: none or a comma-separated list of one or more groups of <shadow> values, each of which corresponds to a set of values: in the case of text-shadow , it [ <length>{2,3} && <color>? ]# [ <length>{2,3} && <color>? ]# as stated in its own specification . As long as you have a value that is not equal to none , either spec assumes that the shadow will be drawn and sets all the behavior based on this assumption.
For both properties, even if you do not specify a color, both qualifiers indicate that currentColor should be used (it says in prose that it is "taken from the color property" or "the resulting color is ink, that it is shadow," the result is in the currentColor code).
Since the shadow is always drawn for a value other than none , and zero lengths lead to a shadow that is exactly the same size as the text, what happens here is probably the result of composing two or more layers of translucent pixels due to smoothing glyphs, as well as shadows (as indicated in the comments). This applies not only to text shadows, but also to box shadows, an archetypal example of which is a field with rounded corners , where only hints of smoothing at the rounded corners themselves are indicated, and not at the straight edges of the box. This also happens in all browsers, at least based on testing and previous experiences.
For all that, if you absolutely cannot accept none as a value, you can always specify transparent for the color. The shadow will still be drawn, but since it is completely transparent, you will not see it .
source share