Search code examples
css.netsystem.drawing

Why is DarkGray lighter than Gray?


Simple curiosity here, tinged with some practical concerns because I get caught out by this occasionally.

How come Color.DarkGray is lighter than Color.Gray?

This behaviour is also shown in CSS where the property color: darkgrey renders #A9A9A9 and color: grey renders #808080.


Solution

  • Wikipedia has some information on the subject. It sounds like a lot of the named color definitions come from X Windows System. On X, "Gray" is actually closer to "Silver". However, the W3C defined Gray (more appropriately?) as RGB 50%.

    Here's some more Wikipedia on the subject:

    Perhaps most unusual of the color clashes between X11 and W3C is the case of "Gray" and its variants. In HTML, "Gray" is specifically reserved for the 128 triplet (50% gray). However, in X11, "gray" was assigned to the 190 triplet (74.5%), which is close to W3C "Silver" at 192 (75.3%), and had "Light Gray" at 211 (83%) and "Dark Gray" at 169 (66%) counterparts. As a result, the combined CSS 3.0 color list that prevails on the web today produces "Dark Gray" as a significantly lighter tone than plain "Gray", because "Dark Gray" was descended from X11 – for it did not exist in HTML nor CSS level 1 – while "Gray" was descended from HTML. Even in the current draft for CSS 4.0, dark gray continues to be a lighter shade than gray.

    W3C color keywords:

    DimGray    '#696969'  (105,105,105)  
    Gray       '#808080'  (128,128,128)
    DarkGray   '#A9A9A9'  (169,169,169)  //equal to X11 DarkGray
    Silver     '#C0C0C0'  (192,192,192)  //close to X11 Gray (190,190,190)
    LightGray  '#D3D3D3'  (211,211,211)  //equal to X11 LightGray
    Gainsboro  '#DCDCDC'  (220,220,220)