- From: Karl Dubost <karld@opera.com>
- Date: Sun, 12 Dec 2010 11:14:46 -0500
- To: "Tab Atkins Jr." <jackalmage@gmail.com>
- Cc: www-style@w3.org
Copying the spec content to have the context of the discusssion.
If the URL for the image ends in a file
extension (a period followed by letters) of four
ascii letters ([a-zA-Z]) or less, then the UA
may skip trying to load images whose file
extension matches an image format it knows it
does not support.
– http://dev.w3.org/csswg/css3-images/#image-notation
This is the normative statement with a MAY if I understand. Just to clarify the statement, what does it mean
"trying to load images"
Either it loads it because there is a matching extension or it doesn't, but "trying to load" is not testable.
For example, a UA that knows
it supports JPEG and GIF, but expects to
encounter many PNG and SVG images may choose to
skip over images with filenames ending in ‘.png’
or ‘.svg’ without loading them to check their
MIME type. However it must not skip over images
with filenames ending in extensions it doesn't
recognize.
– http://dev.w3.org/csswg/css3-images/#image-notation
Is "MUST" here a requirement or part of the example?
>> Plus, it ties the URL to the file format which is not a good idea.
> Theoretically, sure, but in practice the file extension is a very
> strong indicator.
There are two sides about this.
* Wether the extension is a strong indicator and we rely on it for downloading/parsing it. Then the next question becomes what is happening when the extension was wrong? Opera's MAMA data doesn't help here because Brian Wilson did exactly that.
MAMA defaulted to using an image's file
extension to judge the format type. If MAMA
could declare an image format from just this
data alone, it did not try to dig any deeper
than that. If it could not determine the
format from the file extension, MAMA would
then download the HTTP HEAD of the
referenced image and proceed to examine the
image's MIME type to detect the format. This
policy was a useful shortcut that really
helped with the analysis script's overall
performance.
– http://dev.opera.com/articles/view/mama-images-elements-and-formats/
Except that this policy gives wrong results for data (unfortunately). The extension either doesn't exist, or a GIF is served as PNG, etc.
* Second, what is happenning for all people serving their images without extension but with the right mime-type, be it from script or from static images? What would be the processing policy?
Let's say a User-Agent with Accept: image/gif, image/png (*no support for SVG*). The CSS at the domain http://example.org/ contains this rule:
background-image: image(wavy, wavy.php, wavy.svg, wavy.gif);
1. http://example.org/wavy
Content-Type: image/png
2. http://example.org/wavy.php
Content-Type: image/gif
(because it is the first in the list of user agent
Accept header, the script generates the image
dynamically depending on the user agent preferences.)
3. http://example.org/wavy.svg
Content-Type: image/svg+xml
4. http://example.org/wavy.gif
Content-Type: image/png
(a program converted some gif images into png and
added the extension but the file is served without
extensions as the first one.)
What is happening?
[1]: http://dev.opera.com/articles/view/mama-images-elements-and-formats/
--
Karl Dubost - http://dev.opera.com/
Developer Relations & Tools, Opera Software
Received on Sunday, 12 December 2010 16:15:23 UTC