Re: [whatwg] Inline SVG: Embedded vs. Metadata Content Distinction (Was: Fwd: Allow Select SVG Elements In head)

2015-08-28 Thread Tab Atkins Jr.
On Sat, Aug 29, 2015 at 12:51 AM, Hugh Guiney hugh.gui...@gmail.com wrote:
 Bueller...? Bueller...?

 This request is almost 5 years old now, but it is even more relevant today,
 now that web developers are increasingly embracing SVG for purposes of
 responsive design and accommodating HiDPI displays.

 Putting SVG defs and other metadata-related elements in HTML's head
 seems like an obvious choice from a semantic standpoint. But it is currently
 illegal in the HTML spec because SVG does not distinguish between embedded
 and metadata content models for its elements, which Hixie has requested so
 that the HTML spec can simply point to the SVG spec's definitions. (Please
 see quoted text.)

 Again, is this something the SVG WG is willing to do?

This isn't even something for the SVGWG to decide; it's simply
impossible to add new elements to HTML's head.  head autocloses
when it sees any element that's not title, meta, link, script,
or style, and people depend on this behavior - there's definitely
pages out there where an svg element is the first content and needs
to be displayed.

Just put a defs-only svg in the body.  Its location doesn't
actually matter, it's fine.

~TJ


[whatwg] Inline SVG: Embedded vs. Metadata Content Distinction (Was: Fwd: Allow Select SVG Elements In head)

2015-08-28 Thread Hugh Guiney
Bueller...? Bueller...?

This request is almost 5 years old now, but it is even more relevant today,
now that web developers are increasingly embracing SVG for purposes of
responsive design and accommodating HiDPI displays.

Putting SVG defs and other metadata-related elements in HTML's head
seems like an obvious choice from a semantic standpoint. But it is
currently illegal in the HTML spec because SVG does not distinguish between
embedded and metadata content models for its elements, which Hixie has
requested so that the HTML spec can simply point to the SVG spec's
definitions. (Please see quoted text.)

Again, is this something the SVG WG is willing to do?

Thank you,
Hugh

On Thu, Dec 22, 2011 at 7:28 AM, Hugh Guiney hugh.gui...@gmail.com wrote:

 Cameron McCormack forwarded this proposal to public-svg-wg a year ago
 (thanks, Cameron!) but no one commented on it, so I'm reposting it
 here. Is this something the SVG WG is willing to do?

 Thanks!
 -Hugh

 -- Forwarded message --
 From: Ian Hickson i...@hixie.ch
 Date: Mon, Dec 6, 2010 at 9:35 PM
 Subject: Re: [whatwg] Allow Select SVG Elements In head
 To: Hugh Guiney hugh.gui...@gmail.com
 Cc: whatwg wha...@whatwg.org


 On Fri, 27 Aug 2010, Hugh Guiney wrote:
 
  I'm authoring an XHTML host document with namespaced inline SVG and
  XLink. I have vector images that recur throughout the site. I'd like to
  implement SVG's defs and use to reduce the file size of the document
  and keep style separate from content, as with CSS.
 
  If I put an SVG tree with defs anywhere in the XHTML document, other
  trees with use xlink:href will correctly reference it, as tested in
  the latest public release Gecko, Webkit, and Opera. So the question
  becomes, where do I put it? The most obvious answer seems to be head,
  since, like CSS definitions, this is metadata being defined for use
  elsewhere in the document. The only problem is, Validator.nu doesn't
  like it:
 
  Error: SVG element svg not allowed as child of XHTML element head in
  this context. (Suppressing further errors from this subtree.)
 
  Same error when ditching the root svg and including only defs, the
  result of which still works in all but Opera.
 
  This error can be avoided if the defs tree is put in the XHTML body,
  but then there is blank space the size of the defined shapes at the top
  of the document in all 3 engines. A workaround is to give svg a @width
  and @height both of 0. But leaving the definitions in the body when
  they technically don't represent contextual content strikes me as
  non-semantic.
 
  My proposition would be to simply spec a subset of SVG consisting only
  of metadata elements as valid in HTML's head context. This could be
  just defs—I'm unsure if there are any other elements that fit this
  definition since I am relatively new to SVG; but in either case it'd aid
  semantics and is already supported in today's SVG-capable browsers.

 This is an interesting idea. I would recommend approaching the SVG working
 group and suggesting that they define the content model of svg and other
 SVG elements such that there's two ways to use it: one where svg is
 considered embedded content, and one where it's considered metadata
 content, with appropriate restrictions on the latter. With such a set of
 definitions in place, the HTML spec's model would just work (it already
 refers to the content model of head as just metadata content, for
 instance).

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