Subject: Re: bug#33729: 27.0.50; Partial glyphs not rendered for Gujarati with Harfbuzz enabled (renders fine using m17n)

From: Khaled Hosny <[email-masked]>
Date: Fri, 14 Dec 2018 13:03:16 +0200

On Fri, Dec 14, 2018 at 12:03:32PM +0200, Eli Zaretskii wrote:
> > Date: Fri, 14 Dec 2018 09:50:56 +0200
> > From: Khaled Hosny <[email-masked]>
> > Cc: Kaushal Modi <[email-masked]>, [email-masked],
> > 	[email-masked], [email-masked]
> > 
> > > Your data indicates that the m17n build performs character composition
> > > at buffer position 34, whereas the harfbuzz build does not.  The
> > > question is why.
> > 
> > See my earlier email, most likely the culprit is the broken Emacs to
> > HarfBuzz script code mapping that we discussed earlier. HarfBuzz needs
> > to know the correct script of the text to perform shaping, and it looks
> > like we are passing nonsense values for certain scripts (or rather for
> > certain scripts we are lucky that the mapping is not broken).
> 
> Thanks.
> 
> I don't yet have access to a GNU/Linux system with HarfBuzz installed,
> so I cannot myself debug it.
> 
> I hope Mohammad will be able to look into this and either fix it or
> provide more focused and detailed analysis of what is wrong, so we
> could fix it.  Or maybe you could point to the problematic code and
> tell more details.
> 
> FWIW, I looked at ftfont.c:uni_script, and I cannot find a problem
> with it; in particular looking up in char-script-table each character
> of the Gujarati welcome in HELLO yields 'gujarati', so I couldn't see
> any evident Emacs issue.  Or are you saying that hb_script_from_string
> doesn't DTRT?  Or maybe Kaushal should upgrade to a newer version of
> HarfBuzz?

There is this FIXME:

/* FIXME: from_string wants an ISO 15924 script tag here. */

As we discussed earlier, hb_script_from_string() expects ISO 15924
script tags, but char_script_table does not provide such tags (I don’t
recall what it does provide exactly). We need a way to get ISO 15924
script tags from Emacs.

Regards,
Khaled