[HarfBuzz] Setting initial cluster value

Behdad Esfahbod behdad.esfahbod at gmail.com
Sat Jun 25 20:27:21 UTC 2016


On Jun 25, 2016 12:33 PM, <kelvinsthirteen at gmail.com> wrote:
>
>
>
> > On Jun 25, 2016, at 1:39 PM, Khaled Hosny <khaledhosny at eglug.org> wrote:
> >
> > 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.
>
> No, meaning font styling is created by inline styling objects. They’re
like inline images except they have zero width. So a font change is really
stored as a special character in between the two sections. This character
is not understood by harfbuzz, which is why it does not make sense to pass
anything containing it into the shaper.

That's your design's limitation.  You still can fix it by using custom
Unicode funcs with HarfBuzz, that returns a "default-ignorable" Unicode
property for your placeholder codepoints.  I just checked and it wouldn't
work right now; I'll fix that.  What placeholder character do you use?  Can
you change that?
>
> >
> > Regards,
> > Khaled
> _______________________________________________
> HarfBuzz mailing list
> HarfBuzz at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/harfbuzz
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/harfbuzz/attachments/20160625/050300aa/attachment.html>


More information about the HarfBuzz mailing list