W3C home > Mailing lists > Public > public-svg-wg@w3.org > April to June 2011

Re: ligature formation across text chunks

From: Tavmjong Bah <tavmjong@free.fr>
Date: Thu, 19 May 2011 21:45:36 +0200
To: Vincent Hardy <vhardy@adobe.com>
Cc: Cameron McCormack <cam@mcc.id.au>, "public-svg-wg@w3.org" <public-svg-wg@w3.org>
Message-ID: <1305834336.17950.80.camel@LeChien>

Hi all,

	As usual, my Internet provider's spam filter block's Cameron's
messages, so I'll reply to Vincent's email.

	Ligature formation was discussed as part of Last Call Issue 2332:


At the time I sent an email summarizing the issue:


and created a test:


At the time, we decided to defer to SVG 1.1F3/2.0 further consideration
of how ligatures should be treated.


On Thu, 2011-05-12 at 20:50 -0700, Vincent Hardy wrote:
> Hi Cameron,
> On May 12, 2011, at 7:53 PM, Cameron McCormack wrote:
> > The spec says that every x or y value on a <text> element starts a new
> > text chunk, and that ligatures do not get formed across text chunk
> > boundaries.  However, in http://www.w3.org/TR/SVG/text.html#TSpanElement
> > just below the attribute definitions, there is this text:
> > 
> >  The following additional rules apply to attributes ‘x’, ‘y’, ‘dx’,
> >  ‘dy’ and ‘rotate’ when they contain a list of numbers:
> >    ...
> >    * When multiple XML characters map to a single glyph (e.g., when a
> >      ligature is used) - Suppose that the i-th and (i+1)-th XML
> >      characters map to a single glyph. In this case, the i-th value for
> >      the ‘x’, ‘y’, ‘dx’, ‘dy’ and ‘rotate’ attributes all apply when
> >      rendering the glyph. The (i+1)-th values, however, for ‘x’, ‘y’
> >      and ‘rotate’ are ignored (exception: the final ‘rotate’ value in
> >      the list would still apply to subsequent characters), whereas the
> >      ‘dx’ and ‘dy’ are applied to the subsequent XML character (i.e.,
> >      the (i+2)-th character), if one exists, by translating the current
> >      text position by the given amounts before rendering the first
> >      glyph associated with that character.
> > 
> > You can never have a multiple XML characters mapping to a single glyph
> > when you have an x or y value specified for the second or subsequent XML
> > characters, because it would cause the ligature not to be formed.
> > 
> >  <text x="10 20">fi</text>
> > 
> > Even with a font that would otherwise form a ligature here, the f should
> > be painted at x = 10 and the i at x = 20.  I think the text quoted above
> > is misleading, then.
> > 
> > Can someone confirm my reading of the spec?
> (disclaimer: I had a bit of a long day, so I may not be processing this clearly enough :-)
> If I read the paragraph you quote and apply it to the example:
> a. the "f" and "i" characters map to a single 'fi' glyph (assuming the font has a ligature for the "f" + "i" character sequence). So characters at index i = 0 and i+1 = 1 map to a single glyph.
> b. for i = 0, we should apply the x value at index 0, i.e., 10.
> c. for i=1, we should ignore the value x, y and rotate, i.e., 20 is ignored.
> So I would say that the spec. says that in this case, the second x value is ignored. In implementation work I did (ok, that dates back a bit :-), I am pretty sure that is how I interpreted this.
> Cheers,
> Vincent
Received on Thursday, 19 May 2011 19:46:09 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 17:29:45 UTC