[HarfBuzz] Setting initial cluster value
Khaled Hosny
khaledhosny at eglug.org
Sat Jun 25 17:39:54 UTC 2016
On Sat, Jun 25, 2016 at 01:06:27PM -0400, Kelvin Ma wrote:
> > > > > Don’t you
> > > > need
> > > > > context to be ignored if the boundaries of the text you want to shape
> > > > fall
> > > > > inside a cluster? Like in the string 'af[fluency s]tate' where only
> > the
> > > > > 'fluency s' is supposed to be shaped?
> > > >
> > > > Depends on why you are shaping “fluency s” alone, if it is because of,
> > > > say, font change, then you need HarfBuzz to know the context otherwise
> > > > you get broken Arabic shaping.
> > >
> > > Well font change would produce a separate run that wouldn’t know about
> > the
> > > other runs so context can only be within a same-direction, same-font run.
> >
> > This is wrong, font change shouldn’t break Arabic shaping, so you have
> > to pass the context even in this case.
> >
>
> If the text consists of text strings separated by formating objects, each
> text string doesn’t know about what’s around it. Because that’s at a much
> higher level in the code and harfbuzz can only handle a single font in a
> single run at a time. To artificially jam in the neighboring runs for each
> shaping attempt would involve an inordinate amount of string concatenation
> and searching on the fly.
One can always fix his code to not do wrong assumptions. When doing text
layout you always need the full paragraph, and you should have it around
after itemisation. Itemisation does not have to be done by splitting
text, you can just store run start indices and lengths.
Regards,
Khaled
More information about the HarfBuzz
mailing list