[HarfBuzz] Ligatures

Eli Zaretskii eliz at gnu.org
Mon May 25 15:30:37 UTC 2020


> Date: Sun, 24 May 2020 20:27:26 +0100
> From: Richard Wordingham <richard.wordingham at ntlworld.com>
> Cc: harfbuzz at lists.freedesktop.org
> 
> It seems to me that Emacs knows what script a cluster is in; perhaps
> it just hasn't united the concepts.

It's a kind of coincidence: different scripts almost always require
different fonts, and Emacs only composes characters displayed in the
same font.

> Users may have written some weird clustering combinations, and I can
> imagine some weird combinations in the Private Use Areas.  I should
> investigate.

Don't expect anything about PUA, Emacs doesn't assign any useful
properties to them.

> > That's a feature (you can disable it with disable-point-adjustment).
> 
> Is this documented in info, or does one have to trawl the code to find
> out what it does?

Every variable in Emacs has a doc string, and you can search them with
several apropos commands.  We don't describe in the manual every
obscure variable, there are too many of them.

> It seems that Emacs needs several levels of movement
> - by codepoints, by grapheme cluster, by akshara (will be the same as
> grapheme cluster in many cases) and by HarfBuzz cluster, or whatever
> is used to make access into lam-alif impossible.

I have no idea which one Emacs uses, not in these terms.  All I can
say is that, in HarfBuzz terms, we get the number of "elements" from
hb_buffer_get_length, and then index the arrays returned by
hb_buffer_get_glyph_infos.  Each "element" thus indexed is a separate
"thing" for display purposes, and Emacs by default won't let you
"enter" such a "thing", it will move across it in its entirety in one
go.


More information about the HarfBuzz mailing list