- From: fantasai <fantasai.lists@inkedblade.net>
- Date: Fri, 19 Mar 2010 20:07:08 -0700
- To: Bruno Fassino <fassino@gmail.com>
- CC: public-css-testsuite@w3.org
On 03/19/2010 11:53 AM, Bruno Fassino wrote:
> This test
> http://www.w3.org/Style/CSS/Test/CSS2.1/20100316/html4/margin-inline-001.htm
> has a div with a blue border including a span with orange background
> and vertical margins. It says:
> "Test passes if the top and bottom of the orange box is touching the
> inner edges of the blue box..."
> but even when the vertical margins on the span are ignored, the orange
> background and the div border may not be touching.
>
> The span background is rendered on its content area whose height is
> font dependent.
> The height of the div is based on the line-height in use, 'normal' in
> this case, and again (usually) font-dependent.
> Now for a given font, the 'normal' line-height is _not_ necessarily
> equal to the content area height. Both are usually deducted from some
> font metrics, but they may be chosen with a certain arbitrariness by
> UA.
>
> So the height of the div is not necessarily equal to the height of the
> orange background.
>
> Indeed with some combination of browser and default font, there is gap
> between the orange and the blue border, usually few pixels.
Would something like this work?
<style type="text/css">
div
{
border: solid green;
font-family: Ahem;
line-height: 1;
background: red; width: 4em;
}
span
{
background: green;
color: green;
margin: 2em 0;
}
</style>
<p>Test passes if there is a green box below and no red.</p>
<div>
<span>XXXX XXXX XXXX</span>
</div>
The spec doesn't actually specify, but using Ahem covers both suggested
methods--and it really wouldn't make sense for the UA to use a measure
that's smaller than both the em height and the ascender-descender height.
We probably also want to check what happens when line-height is normal so
<style type="text/css">
.test
{
border: solid orange 0.1em;
font-family: Ahem;
background: orange; width: 4em;
}
span
{
background: orange;
color: orange;
margin: 2em 0;
}
.indicator {
padding-top: 4.7em;
margin-bottom: -5.7em;
line-height: 1;
}
</style>
</head>
<body>
<p>Test passes if the word PASS appears below the orange box.</p>
<div class="indicator">PASS</div>
<div class="test">
<span>XXXX XXXX XXXX</span>
</div>
</body>
The word PASS will be visible as long as 'normal' line height is 1.5 or
below: given that the recommended value for 'normal' is between 1.0 and 1.2,
this should be within reasonable UA-dependent error.
~fantasai
Received on Saturday, 20 March 2010 03:07:48 UTC