- From: Cameron McCormack <cam@mcc.id.au>
- Date: Fri, 16 Mar 2012 15:55:44 +1100
- To: SVG public list <www-svg@w3.org>
Consider the following document:
<svg xmlns="http://www.w3.org/2000/svg">
<text x="100 200" y="100"> ab</text>
</svg>
SVG currently requires glyph positioning to be applied to characters
after white space transformation for xml:space="". What that means is
that the above document should render with the "a" at x=100 and the "b"
at x=200.
In my proposal for reworking SVG text layout
http://www.w3.org/Graphics/SVG/WG/wiki/Proposals/Text_layout I propose
something different -- namely that the glyph positioning numbers
correspond to the Unicode characters before any processing is done on
the character (although including the inclusion of <tref>-referenced
text). So that would mean the above would result in the following
positioning:
char x
======= ================
(space) 100
a 200
b 200 + advance(a)
I argue that which characters glyph positions correspond to should at
least not change based on the styles that apply to the elements -- just
like they aren't affected by ligatures or other clusterisation that
happens in the text run. xml:space="" isn't style yet, but we might
make it so in the future. I would like xml:space="default" to be the
same thing as white-space:normal (which I don't think I explicitly said
in the other thread either), so really I would like to consider the
white space collapsing that goes on in the above example to be as a
result of white-space.
I think this makes more sense and is simpler (the glyph positioning
assignment can be done independently of white space collapsing), but I'd
like to hear what other people think. Particularly because the current
behaviour seems to have pretty good interop. I can't see any tests in
the test suite for positioning applied to collapsed-away white space,
with a quick grep.
(The current behaviour is more difficult to implement, being that I want
to utilise existing CSS text layout code, because it means I need to
first compute which white space characters will be collapsed due to the
white-space property on the SVG side, use that to decide which glyphs
get the positioning values, and then invoke the CSS text layout which
will do its own white collapsing.)
Note that this doesn't affect simpler usages of glyph positioning, such as
<text x="100"> abc</text>
<text x="100">
some line of text
<tspan x="100" y="200">a second line of text</tspan>
</text>
because the first non-collapsed-away glyph in each line would still get
placed at x=100.
Received on Friday, 16 March 2012 04:56:16 UTC