Introduction of situation
There are a lot of colors you can see at the monitor today.
Browser supports 224(16777216) colors. Some of them have normal names, such as red, yellow, green, the others have the names you cannot imagine and remember. If you read those color names you cannot understand what for a color was determined with this name because the normal language does not contain those names.
The normal and usual color names were formed at the times when people did not have RGB displays and could not imagine the full gamma. Some languages had no words to differ the green and blue colors, the red and orange colors and there are not any normal natural language with the names of 16777216 colors.
Early displays had only 2 colors (black and white) or some shadows of gray.
The color displays could have 4 colors(red, green, blue and green) been coded with 2 bits (for example 01, 11, 10, 10).
More powerful ones had 8 colors where each bit was determining one of color channel of (red, green, blue)
The full list is
000 | black |
001 | blue |
010 | green |
011 | cyan |
100 | red |
101 | pink |
110 | yellow |
111 | white |
This table contains a lot of colors but does not contains for example brown or gray.
The more powerful way is to add the «brightness» bit to this color table;
0000 | black |
0001 | blue |
0010 | green |
0011 | cyan |
0100 | red |
0101 | pink |
0110 | yellow |
0111 | white |
1000 | light black |
1001 | light blue |
1010 | light green |
1011 | light cyan |
1100 | light red |
1101 | light pink |
1110 | light yellow |
1111 | light white |
Here the brightness bit for ‘black color’ is useless so it is but the code ‘1000’ can be used to code one more color so ‘1000’ is ‘light gray’ and ‘0111’ is gray for example;
The 16 colors is quite enough to determine all commonday colors a normal human uses during his life.
But the more powerfull coding system is to use 2 bits for coding each color lightness the table of this codes is below (but without the color names). 64 new strings if each color would be given a string, but it would not be given.
000 | 005 | 00a | 00f | 050 | 055 | 05a | 05f | 0a0 | 0a5 | 0aa | 0af | 0f0 | 0f5 | 0fa | 0ff |
500 | 505 | 50a | 50f | 550 | 555 | 55a | 55f | 5a0 | 5a5 | 5aa | 5af | 5f0 | 5f5 | 5fa | 5ff |
a00 | a05 | a0a | a0f | a50 | a55 | a5a | a5f | aa0 | aa5 | aaa | aaf | af0 | af5 | afa | aff |
f00 | f05 | f0a | f0f | f50 | f55 | f5a | f5f | fa0 | fa5 | faa | faf | ff0 | ff5 | ffa | fff |
So you are just a human. Can you name all these colors? Do you know the name of all of them?
It is 64 colors in which each channel of red, green and blue has 4 brightness levels. But the browser allows to set 255 brightness level for each color!!
Maybe if you are a designer or a painter you can know 64 color names.
But the color names give no information about the brighness of each channel
The word ‘red’ cannot give the data that gives the string ‘#F00’ or ‘#E00’ or ‘#300’ or ‘rgb(200,0,0)’ because the language was formed in the conditions RGB paradigm was not known.
So sometimes people can use the codes to determine the color. For example one human can say to another
I have used RGB(F,0,0)(it sounds like adzhibi ef-zero-zero)
But what is the difference between RGB(255,0,0) and RGB(254, 0, 0) or RGB(128, 0, 0)?
It is the same color! But with different brightness.
You can get RGB(128, 0, 0) from RGB(255,0,0) with decreasing the screen brightness physically!
But if you have the color of RGB(255, 128, 0) it is the same with RGB(191, 96, 0)? The only difference is than the second has the brighness 75% of first;
The full row of 16 levels of color codes where the brighness of green is 50% of the red color brighness is
rgb(0,0,0) | rgb(17,8,0) | rgb(34,17,0) | rgb(51,25,0) | rgb(68,34,0) | rgb(85,42,0) | rgb(102,51,0) | rgb(119,59,0) | rgb(136,68,0) | rgb(153,76,0) | rgb(170,85,0) | rgb(187,93,0) | rgb(204,102,0) | rgb(221,110,0) | rgb(238,119,0) | rgb(255,127,0) |
So can you say when the brown ends and the ‘light-brown’ or ‘orange’ starts?
And the first color with the codes of RGB(0,0,0) is really black!
And RGB(17,8,0) is BLACK;
Only rgb(51,25,0) is something like BROWN;
brown…
But the brown is css is rgb(165, 42, 42);
Do you feel the diffenence of css brown and
rgb(170,85,0)
You can see the ‘web colors’ on Wikipedia
Or w3scool.com site
You can find there some colors similar to rgb(170,85,0):
SaddleBrown(rgb(139, 69, 19))
Sienna(rgb(160, 82, 45))
But it is not truly the color we determined. But do you feel difference?
And do you know why Sienna is named Sienna?
What color is rebeccapurple? Why rebecca?
What is the difference between fuchsia and magenta
You can read the last specification there
So what it principles of naming «forestgreen» and «darkgreen»???
It is total useless and senseless!!!
Most of sites and developers does not use this color names…
The standard has 141 named codes of color…
When you read the color ‘turquoise’ you cannot imagine that it is #40e0d0
It is not the right way to name the codes.
The right way for a language is to code the names.
…So how to code the names?
For example the word ‘red’ should code the red, green and blue channels.
It can mean that
- ‘r’ codes the ‘true’ or 255 of 255 for red channel
- ‘e’ codes the ‘false’ or 0 of 255 for green channel
- ‘d’ codes the ‘false’ or 0 of 255 for blue channel
So there are the pairs of ‘r’-‘z’, ‘e’-‘o’, ‘d’-‘m’ the colors will sound as below
zed |
zem |
zod |
zom |
red |
rem |
rod |
rom |
Now the colors are really coded by words
*If you think ‘rod’ is to similar to ‘rom’ you can add the code protection
For example the first two letters can be only ‘ze’, ‘zo’, ‘re’, ‘ro’;
It is able to add the second variant of ‘va’, ‘vi’, ‘na’, ‘ni’ for example and use them instead of the third letter that codes the ‘blue’ channel’
So we had:
zed, zem, zod, zom, red, rem, rod, rom
And we get:
zed, vam, zod, vim, red, nam, rod, nim
Also it is possible to have two variants of the ‘blue’ code ‘l’ as equivalent of ‘d’ and ‘s’ as equivalent of ‘m’;
zel, vas, zod, vim, red, nam, rol, nis
so we have all colours coded and named right way.
But we alwars have the first letter ‘r’ when the red channel is set;
The second way is not to code the channel by a letter but use the codeset of to channels to get a letter. First letter for example is set by the code of green and blue, and the second letter by the codes of red and blue and the third letter by the code of blue and green;
for example
- first letter can be ‘rkzv’
- second letter can be ‘aoey’
- third letter can be ‘vldm’
rav | kov | zal | vol | red | kyd | zem | vym |
It is also able to set four combinations for ‘false’ channel state and ‘true’ channel state’ and get the situation where each element is used only once.
nav | polt | haul | teunt | red | kyst | zeym | vyuft |
If is is necessary to code 16 combinations it can be performed with the prefix or suffix meaning ‘light’ or ‘dark’
But how to create the words to code 2^12 colors?
It means each channel has 4 variations. We have already given 4 letter combination for each symbol but we used it only to go away from similar sounding of color names (we didn’t have ever two colors starting with one letter).
The simpliest way according to modern language situation is to name a color is the way mentioned above just call RBG(F,0,0) using «ef-zero-zero» and call RGB(F,A,8) using «ef-ei-eitsh».
Of course we can construct the words using the algorithms described above, but those words a not understandable for people that did not learn them. But RGB naming system is clear enough.