[whatwg] @aria-labelledby | Re: @generator-unable-to-provide-required-alt, figure with figcaption

Ian Hickson ian at hixie.ch
Wed Jun 19 11:53:20 PDT 2013

On Wed, 19 Jun 2013, Martin Janecke wrote:
> Am 17.06.2013 um 22:58 schrieb Ian Hickson:
> > On Mon, 17 Jun 2013, Martin Janecke wrote:
> >> Am 17.06.2013 um 11:35 schrieb Steve Faulkner:
> >>> 
> >>> the restriction on figure/figcaption is only in the whawtg spec not 
> >>> the W3C HTML spec as it was not deemed a useful or practical 
> >>> restriction when reviewed by the HTML WG.
> >> 
> >> Sounds lovely, this would indeed solve my use case.
> > 
> > Could you elaborate on what your use case and why it's not handled?
> Yes. The use case begins with a markup generator that does not have a 
> suitable alt-text for images. In my case it's actually a converter 
> converting some light-weight markup to HTML, but I don't think the 
> discussion should dive into the details too deep as it applies to other 
> markup generators as well -- I named WYSIWYG editors and automatic 
> digitizers as examples. It is an established fact that there are markup 
> generators that don't have a suitable image description for the required 
> alt attribute.^[1]


> Without the required alt-attribute the generator's output is 
> non-conforming or "invalid" markup.

More importantly, it's not accessible markup. That is why it's not 

> It seems that (or at least markup generator creators seem to think that) 
> a notable amount of users prefer generators that produce output which 
> passes conformance checker tests over those which produce output that 
> gets big red error marks. This can pressure markup generator creators to 
> trick conformance checkers into thinking their output was conforming. 
> Methods to achieve this include using bogus alt-texts or empty 
> alt-texts, suggesting a purely presentational image when it's actually 
> not.

Indeed. That's why we added the non-conforming but validator-silencing 
attribute "generator-unable-to-provide-required-alt".

> These methods are in a way successful as conformance checkers today fall 
> for the tricks. However, these tricks are considered harmful for 
> accessibility.


> (a) "The img element has a title attribute with a value that is not the 
> empty string (also as described above)."^[3]
> A title attribute text is usually not available to the light-weight 
> markup converter I maintain. This applies to other markup generators as 
> well: An OCR digitizer does not find something equivalent to the typical 
> implementation of the title attribute (i.e. a mouse-over text) in a book 
> scan.
> While my markup generator usually has access to a caption for an image 
> that is immediately visible to anyone and which could theoretically be 
> included as title attribute, that would mean redundant text as in the 
> following example:
> <div><img src="tree.jpg" title="Tree in Fantasia"> Tree in 
> Fantasia</div>
> I've actually seen captions re-used for title or alt attributes like 
> this quite often in the wild. I do not consider this a desirable output. 
> Why should visually impaired persons have to read everything twice?

Indeed, this would not be good usage. That's what <figure>/<figcaption> is 
intended to avoid.

> (b) "The img element is in a figure element that …"^[3] has a figcaption
> So now to the question:
> > I don't understand why <figure> as defined in the WHATWG spec doesn't 
> > work for your case. What does the page look like?
> The problem for markup generators is that they do not understand how the 
> pages look like exactly. My light-weight markup converter has to use 
> solutions that work in many cases, favorable and less favorable ones. 
> Again, this applies to other markup generators as well. They don't 
> understand the semantics implied in the text they handle. I'll provide 
> two examples in pseudo code -- the task for the markup generator is to 
> translate it into HTML. Example 1:
> | The funny finch is a well known bird of Fantasia.
> |
> | [fig src="funny-finch.jpg"]Fig 1.: Funny finch on a fig twig[/fig]
> |
> | It frolics freely in Fantasias famous forests.
> |
> | [fig src="feeding.jpg"]Fig. 2.: Funny finch feeding a fledgling[/fig]
> |
> | The funny finch feeds on fruits and flies (fig. 2). Thanks to
> | reforestation, the funny finch population has flourished in the past
> | fourty years (fig. 3).
> |
> | [fig src="demographics.png"]Fig. 3: Finch population 1970--2010[/fig]
> |
> | The funny finch is closely related to the freaky finches of Florida.
> The figure element with a figcaption is perfectly suitable for the 
> images in example 1.

Indeed, this, apart from the lacking alternative text, is a good structure 
to use for the Web.

> Let's look at example 2:
> | The funny finch is a well known bird of Fantasia.
> |
> | [fig src="funny-finch.jpg"]Funny finch on a fig twig[/fig]
> |
> | It frolics freely in Fantasias famous forests.
> |
> | [fig src="feeding.jpg"]Funny finch feeding a fledgling[/fig]
> |
> | The funny finch feeds on fruits and flies, as shown in the photograph
> | above. Thanks to reforestation, the funny finch population has
> | flourished in the past fourty years, which the following diagram
> | illustrates.
> |
> | [fig src="demographics.png"]Finch population 1970--2010[/fig]
> |
> | The funny finch is closely related to the freaky finches of Florida.
> Example 2 is conveying the same message as example 1. They almost look 
> the same. However, while moving all the figures to the bottom of the 
> page won't break example 1, example 2 will suffer badly from it. In 
> example 2 figures are referenced by their location, whereas they are 
> referenced by tokens in example 1.


> As I understand the WHATWG HTML spec, the figure element is not suitable 
> in example 2. And hence it is not usable for any markup generators that 
> do not understand human written texts well enough to differentiate 
> between the two cases. Even some people coding HTML by hand will 
> probably have difficulties to do it always right.

That's probably true, yes.

> The reason why I think example 2 does not conform with the spec is the 
> following paragraph from WHATWG HTML spec 4.5.11:
> "The element can thus be used to annotate illustrations, diagrams, 
> photos, code listings, etc, that are referred to from the main content 
> of the document, but that could, without affecting the flow of the 
> document, be moved away from that primary content, e.g. to the side of 
> the page, to dedicated pages, or to an appendix."
> The paragraph starts with a "can", indicating options. Then it continues 
> with a "but" clause, which negates the optional character making the 
> following words normative until "e.g." again switches to listing 
> options. The normative part is that figures must be movable away from 
> the primary content without affecting the flow of the document. They 
> don't have to be moved, hence the word "could", but it must be possible 
> without breaking anything. Did I understand that correctly?


I've changed the spec to make <figure> applicable to your use case as 
well, and added more text to explain various use cases and whether they 
apply to <figure>. Let me know if the new text is still problematic for 
your use case. I agree that it would be overly restrictive to limit 
<figure> in the case you are presenting.

> (d) "The img element has a (non-conforming) 
> generator-unable-to-provide-required-alt attribute whose value is the 
> empty string."^[3]
> Well, that is an option for any use case a markup generator runs into. 
> But it seems unattractive in all its verbosity to me.

It's supposed to be a little unattractive, to discourage authors from 
using it to silent validators complaining about their hand-written pages 
(where they should just provide the fricking replacement text).

> Unfortunately -- although its verbosity is there to prevent any 
> misunderstanding for its use -- it might leave the impression that a 
> generator writing
> <img src="..." generator-unable-to-provide-required-alt="">
> is not as good as a generator writing
> <img src="..." alt="an image">

Indeed. I don't know of a way to fix that. It's always going to be the 
case that a generator doing the wrong thing in a way that is 
machine-readably indistinguishable from the right thing is more likely to 
look correct at a quick glance than a generator that is doing the wrong 
thing in a machine-detectable way. I don't know what we can do about that.

I'm open to suggestions.

> > If what you want is just an inline image followed by some text, 
> > though, you don't need <figure> or title="" -- you can just put in the 
> > image and the text, as in:
> > 
> >   <img src="the image"> <!-- FIXME: replacement text is missing -->
> >   <p>More text...
> This causes big red error messages in conformance checkers which could 
> in theory motivate users of some markup generators to learn HTML and add 
> lots of alt-attributes to fix all these errors, but in practice leads to 
> markup generators using inappropriate attributes to silence conformance 
> checkers.


> In my case it is not applicable anyway: The converter generates markup 
> for instant display -- the output is not saved to be edited.

Doesn't mean that it's not still bad that it's inaccessible, of course. :-)

Ian Hickson               U+1047E                )\._.,--....,'``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'

More information about the whatwg mailing list