Re: transform property on <tspan> and <textPath>
"Tab Atkins Jr." <[email protected]> Fri, 15 Jan 2016 17:08:32 -0800
| Newsgroups | gmane.comp.web.svg |
|---|---|
| Message-ID | <CAAWBYDCW67wDa2Ur6ODuKnfwmQK2oFuejq3vKp3sfTZBVH=J9Q@mail.gmail.com> |
On Fri, Jan 15, 2016 at 11:13 AM, Tavmjong Bah <[email protected]> wrote: > On Fri, 2016-01-15 at 14:35 +1100, Cameron McCormack wrote: >> In the SVG 2 draft, we allow transform on <tspan> and <textPath>. I >> realise now however that this is inconsistent with what CSS allows in >> non-SVG documents, and if we are defining SVG text layout in terms of >> CSS text layout (plus an additional layer of SVG glyph positioning), >> then we might want to reconsider. >> >> Specifically, the transform property is defined to apply only to >> “transformable elements”: >> >> https://drafts.csswg.org/css-transforms/#transformable-element >> >> Notably this doesn’t include inline elements, which is what we are >> considering <tspan> and <textPath> to be. >> >> As far as I know nobody has implemented this. > > Actually, rsvg seems to support transforms on tspan elements! > > I would have thought that transform on tspan elements would be treated > as part of the post CSS layout step. However, I don't have a strong > opinion on keeping transforms on tspan and textPath elements. CSS's issues are mostly with inlines broken across a line, as there's no good answer for what coordinate space the transforms should operate in (particularly rotates/skews). Thus our restriction to blocks and atomic inlines (like display:inline-block elements). SVG's text model is a little different, but putting the restriction on <tspan> amounts to the same thing. A <text> can span multiple lines, but it in itself is a reasonable "container", like a block in CSS. A <tspan> can contain text split across different lines, tho, which runs into the issues we had. (There is no "post-CSS layout step". Transforms are part of CSS layout, and SVG is just using an unspecified CSS layout mode which resembles forced absolute positioning.) ~TJ