[HarfBuzz] Ligatures

Eli Zaretskii eliz at gnu.org
Sun May 24 14:18:27 UTC 2020


> Date: Sat, 23 May 2020 21:42:24 +0100
> From: Richard Wordingham <richard.wordingham at ntlworld.com>
> 
> > As for different scripts: if the character codepoints are the same,
> > Emacs currently assigns each character to a single script.
> 
> I'll need to dig deeper.  Composition of both 'a' and Greek alpha with
> an acute accent works, which suggest that the problem isn't there for
> characters with a script property of 'inherited'.

Emacs currently leaves it up to HarfBuzz to guess the script, as it
doesn't yet have the necessary smarts.

> > Emacs 24.4 is very old, and doesn't use HarfBuzz.  Please try Emacs 27
> > instead, it has several bugs in this area fixed, and will use HarfBuzz
> > if available at build time.
> 
> The behaviour in 27.05 is the almost the same as for 24.4, but the
> breaking in item (1) is automatically repaired.  The process seems slow
> - I can see the glyph become final and then revert back to being
> medial.  I'm puzzled by not being able to step into lam-alif but being
> able to step through a series 'beh's.  The step into command for
> advancing codepoint by codepoint semiworks.  The cluster shaping
> doesn't break at the cursor - Handa gave me a C code fix so I could
> achieve that - but the number of steps into to pass through a cluster
> matches the number of codepoints.
> 
> Pressing the 'delete' key still deletes a single character, but may be
> that because it's mapped to tpu-delete-current-char.

If you press DEL (or Backspace), it will delete a single codepoint.

> So, what's not working in Arabic is that one can't move the cursor
> through ligatures.

That's a feature (you can disable it with disable-point-adjustment).

The rest of your observations seem to be too Emacs-specific to discuss
here.  You are welcome to submit an Emacs bug report if you think
something isn't working as it should, or would like to discuss
Emacs-specific details.

Thanks.


More information about the HarfBuzz mailing list