W3C home > Mailing lists > Public > whatwg@whatwg.org > July 2008

[whatwg] <img> element comments

From: Matthew Paul Thomas <mpt@myrealbox.com>
Date: Wed, 30 Jul 2008 22:58:25 +0100
Message-ID: <4890E401.9030407@myrealbox.com>
Ian Hickson wrote on 30/07/08 04:08:
> 
> On Sun, 14 Oct 2007, Matthew Paul Thomas wrote:
>> 
>> On Oct 14, 2007, at 2:03 AM, Henri Sivonen wrote:
>>> 
>>> I don't think "If both attributes are specified, then the ratio of
>>> the specified width to the specified height must be the same as the
>>> ratio of the logical width to the logical height in the image file."
>>> solves any real problem given what browsers already have to
>>> implement, so I'd remove that sentence.
>> 
>> As a real-world example, Launchpad currently stretches the width of 
>> static images to produce simple bar charts of how much particular 
>> software packages have been localized. 
>> <https://translations.launchpad.net/ubuntu>
>>
>> We have to specify both width= and height= for the images, because 
>> specifying width= alone causes w3m to stretch the images vertically to 
>> maintain their aspect ratio. Meanwhile, elsewhere we're using <canvas>, 
>> so we should really be declaring our pages to be HTML 5 site-wide.
>>
>> The sentence Henri quoted would require us to choose between server-side 
>> generation of every chart image, incompatibility with w3m, or 
>> non-conformance with any HTML specification. I know w3m isn't exactly a 
>> major browser, but I don't see any good reason for having to make that 
>> choice.
> 
> As far as I'm aware, the behaviour you describe for w3m matches what
> all the UAs do.

Sorry, I was unclear there. Previously we were using markup like this:

    <img
      width="35"
      style="height: 1em;"
      title="Untranslated: 35.42 %"
      alt=" 35.42% untranslated"
      src="/@@/red-bar"
    />

That gave us the desired result in every browser we cared about, except
w3m, which obeys the width= attribute but (because it doesn't do CSS)
ignores the style= attribute.

So now we include a height= attribute as a fallback:

    <img
      width="35"
      style="height: 1em;"
      height="10"
      title="Untranslated: 35.42 %"
      alt=" 35.42% untranslated"
      src="/@@/red-bar"
    />

That works in every browser we care about, but would be non-conformant
HTML 5 according to the current draft.

> I'm not sure that this usage of <img> is one that the spec today
> considers valid. Wouldn't <canvas> be the better way to do this?

Indeed it wouldn't, because <canvas> wouldn't work in w3m at all! It
also wouldn't work when JavaScript was off in any other browser (a
serious consideration for our user base). And it seems a little
excessive to need to construct a <canvas> when all we want to do is
stretch an image horizontally.

So to reiterate Henri's point, given that browsers (I assume) have to
obey disproportionate width= and height= attributes for compatibility
with the Web anyway, I don't see the point of requiring authors to make
them match the image's proportions.

Cheers
-- 
Matthew Paul Thomas
http://mpt.net.nz/


---AV & Spam Filtering by M+Guardian - Risk Free Email (TM)---
Received on Wednesday, 30 July 2008 14:58:25 UTC

This archive was generated by hypermail 2.4.0 : Wednesday, 22 January 2020 16:59:04 UTC