Why is DarkGray lighter than Gray?

.Netsystem.drawing

.Net Problem Overview


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?

.Net Solutions


Solution 1 - .Net

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)

Solution 2 - .Net

W3C Grays
Nine assigned names where the R, G, and B values are numerically equal:

enter image description here

Solution 3 - .Net

I would like to quote Tim Sneath's discussion regarding that,

> These colours don't actually originate in HTML` - they date still further back than that to the X Window System that originated on UNIX systems. The HTML specification defines sixteen named colours that map onto the basic sixteen colours present in the EGA palette, but the earliest browsers such as Mosaic also supported any of the other X11 named colours, based on their colour representation as defined on X. Unfortunately, some of the original sixteen named colours have different representations to the X11 equivalents, for example Green is represented in X11 in this colour, whereas in HTML it's represented in this colour. The unfortunate result is that Gray is defined as #808080 in HTML, but DarkGray is represented as #A9A9A9, meaning that they're the wrong way around. Since WPF allows the same named colours as HTML for compatibility, the result is that the same idiosyncrasies carry forward. (You can find more information on the full set of X11 colour names and their representations in Wikipedia).

That's why the author also states that it is better to use the hex or scRGB to represent colors.

> My recommendation therefore is in general to use the hex or scRGB colour representations wherever possible, or you might be surprised by the colours that you pick not matching your expectations!

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionBenjolView Question on Stackoverflow
Solution 1 - .NetPeterView Answer on Stackoverflow
Solution 2 - .NetGlenn SlaydenView Answer on Stackoverflow
Solution 3 - .NetCary BondocView Answer on Stackoverflow