On Wed, 15 Feb 2012 19:42:39 +0100, Simon Pieters <[email protected]> wrote:

I have changed the spec for hashless hex color and unitless length to be closer to reality (I hope). I have limited the them to the properties in CSS2.1 that have colors or lengths but aren't in the list above. I made "support hashless hex colors" match IE instead of the other browsers, since IE was stricter (even in compat view). I still haven't figured out 'font', but I'll get to it.

I did some quick and dirty research on dotnetdotcom's web200904 data, and based on my findings, I removed outline-color, background-position, border-spacing, bottom, font, max-height, max-width, min-height, min-width, text-indent and vertical-align from the spec.

outline-color and font I found *no* occurrences that needed these quirks (although I didn't run through the whole file when searching for 'font'). For the others, I applied an arbitrary threshold of usage and made cut-off to make the list of properties a bit shorter.

Now follows the scripts I used and some notes.


$ grep -iaPo "([a-z]+-)?color\s*:\s*[0-9a-f]{3}([0-9a-f]{3})?(\s|\"|\'|;|$)" web200904
color.txt

f = open('color.txt', 'r')
props = {}
for line in f:
        prop = line.split(':')[0].rstrip().lower()
        if prop in props:
                props[prop] += 1
        else:
                props[prop] = 1
f.close()
for prop in props:
        print prop + ':' + str(props[prop])
:28
border-color:2515
color:40731
backgound-color:1
backgroun-color:13
dshadow-color:1
nbackground-color:6
000000;:1
shadow-color:242
face-color:230
text-color:2
dlight-color:216
bottom-color:543
tbackground-color:1
highlight-color:239
arrow-color:228
right-color:326
top-color:304
track-color:272
left-color:330
background-color:8658
font-color:73
darkshadow-color:217
base-color:85
light-color:15

Obviously I made a mistake in the regexp and so e.g. border-right-color shows up as right-color. Other than typos and scrollbar-* properties, the ones that are used are the ones that are specced.
In particular, outline-color did not show up at all.



$ grep -iaPo "([a-z]+-)*(position|spacing|width|bottom|clip|size|height|left|right|top|bottom|margin|padding|indent|align|width|end|start|columns|border|shadow)\s*:\s*([1-9][0-9]*(\.[0-9]+)?|[0-9]?\.[0-9]+)(\s|\"|\'|;|$|\/|>)" web200904 > lengths.txt
^C

(see script in hex color quirk section)
:315
x-start:2
3.00":1
pagging-left:8
min-height:38
border-top:842
v-text-spacing:1
                2:1
scrollbar-size:2
line-width:1
               24;:1
border-right:1100
columns:5
border-bottom:1725
border-spacing:7
                                                                                
                                                                21:1
shadow:3
text-align:8
                            1/:1
e-height:1
8.75":1
                                    750:1
xxpadding-top:2
marging-bottom:2
line-spacing:7
x-archive-position:1
line-height:7209
5":1
font-size:35296
right:1226
cell-spacing:2
              100:1
                              908:1
word-spacing:381
mso-columns:2
padding-top:8168
border-left-size:1
scrollbar-border:2
bottom:101
fp-font-size:362
mmargin-left:1
padding-right:9159
7:1
text-size:2
spacing:243
xxpadding-left:2
tab-width:8
max-width:285
30":1
paddin-top:1
content-size:1
border-right-width:1891
y-position:1
w:1
padding-left:16898
1.50":1
6':1
border-bottom-width:3505
height:31132
max-height:95
margin-right:8283
border-top-width:2438
size:5022
left-margin:1
start:49
bottom-margin:1
top:10483
border-width:5602
min-width:219
width:46530
background-position:135
border-left:887
padding:18278
        2:1
border-height:31
                              5:1
margin:5331
border-left-width:2384
letter-spacing:874
vertical-align:47
clip:5
0.0:1
margin-left:11565
padding-bottom:5279
week-end:1
border:4664
end:68
installed-size:1
margin-bottom:11898
lin-height:12
                                                                                
                                                                102:1
4":1
nfont-size:10
z-position:1
text-indent:378
midlet-jar-size:1
one-day-left:1
margin-top:11393
position:80
left:9219


Forgot to include "-" before the number in the regex (e.g. text-indent accepts negative values).

$ grep -iaPo "([a-z]+-)*(position|spacing|width|bottom|clip|size|height|left|right|top|bottom|margin|padding|indent|align|width|end|start|columns|border|shadow)\s*:\s*-([1-9][0-9]*(\.[0-9]+)?|[0-9]?\.[0-9]+)(\s|\"|\'|;|$|\/|>)" web200904 > negative-lengths.txt
^C

(see script in hex color quirk section)
:1
letter-spacing:31
right:3
bottom:2
top:56
margin-right:4
padding-left:1
margin-bottom:33
word-spacing:1
margin-top:68
margin-left:61
padding-top:1
size:2
margin:6
left:16


'clip'

$ grep -iaPo "clip\s*:\s*rect\([^\)]+\)" web200904 > clip.txt
^C

Looks like 'clip' is used with and without commas, with and without units.


'font'

$ grep -iaPo "font\s*:\s*[^;\}>]+" web200904 > font.txt
^C

I appended a ";" after each line, removed all " and ' (which shouldn't affect the font-size thing) and put the whole thing in a ruleset and loaded it in a quirks mode doc vs a standards mode doc in Firefox to see what was logged to the error console. There were 120465 lines, supposedly 'font' declarations. 157+4+6+1+1+1 errors in the console in both quirks mode and standards mode. This means none of them had unitless font-size. Most common error seemed to be to omit the font-size and/or font-family. This may need more research, but maybe we don't need this quirk for 'font'.

--
Simon Pieters
Opera Software

Reply via email to