[whatwg] Color attributes

On Fri, 27 Jul 2007 13:07:26 +0200, Simon Pieters <zcorpan at gmail.com>  
wrote:

> On Thu, 05 Jul 2007 23:43:55 +0200, Simon Pieters <zcorpan at gmail.com>  
> wrote:
>
>> Color attributes in HTML have special processing.
>>
>> Some tests/demos:
>>
>>      http://simon.html5.org/test/html/parsing/color-attributes/
>>
>> https://bugzilla.mozilla.org/attachment.cgi?id=188040 contains further
>> tests and an algorithm that is supposed to match what IE does. The only
>> flaw in that algorithm AFAICT is that there is a step missing before the
>> first step: match the value against the list of supported color  
>> keywords.
>>
>> For reference, the complete algorithm would be:
>>
>>     1. If the value case-insensitively matches a color keyword, use  
>> that and
>>        abort these steps. [CSS3COLOR]

ASCII-case-insensitively, even.

> "transparent" is also to be treated as a keyword, meaning transparent.  
> (It seems that IE treats transparent as black for text color, but that's  
> a CSS thing.)
>
>>     2. Trim all but the first 128 chars from the string.
>>     3. If it exists, strip the first leading #.
>>     4. Replace non-valid-hex chars with 0s.
>>     5. Lower-case the string.

ASCII-lower-case.

>>     6. Make string length a multiple of 3 and a minimum of 3 by  
>> appending 0s.
>>     7. Split the string into 3 equal segments.
>>     8. Trim all but the right-most 8 chars from each segment.
>>     9. If segment length is 1, left-pad each segment with a 0, else:
>>    10. While segment length is greater than 2 and the first char of each
>>        segment is equal to 0, trim the left-most char from each segment,
>>        then:
>>    11. Trim all but the first 2 chars from each segment.
>>    12. Join the segments and append them to a # char to create the final
>>        string.

Test cases for the algorithm:

    http://simon.html5.org/test/html/parsing/color-attributes/the-algorithm/

-- 
Simon Pieters

Received on Thursday, 23 August 2007 10:18:41 UTC