Subject: bug#11860: 24.1; Arabic - Harakat (diacritics, short vowels) don't appear

From: Eli Zaretskii <[email-masked]>
Date: Tue, 11 Sep 2012 20:48:36 +0300

> From: Kenichi Handa <[email-masked]>
> Date: Tue, 11 Sep 2012 23:49:40 +0900
> Cc: [email-masked], [email-masked]
> 
> > IMO, dividing glyphs into grapheme clusters is font backed driver's
> > task, and I don't understand why Ffont_shape_gstring merges the
> > grapheme clusters for some cases.  Could you explain?
> 
> When I designed it, I consider such a situation that
> grapheme clusters returned by a font-driver is so fine for
> Emacs' display engine that Ffont_shape_gstring must combine
> some of them into one grapheme cluster.  But, I agree that
> it's much cleaner to make a font-driver to consider such a
> thing.

AFAICS, all Ffont_shape_gstring does is modify the FROM and TO
components of the glyph-string.  For this to have any effect on the
screen, these components need to be used by the drawing routines.  But
the code in xterm.c and w32term.c that draws the composite characters
(x_draw_composite_glyph_string_foreground) doesn't seem to use these
components.  At least for w32term.c, we just draw the glyphs returned
by the shaper, one by one.

What am I missing?  Where does this "merge" of glyphs into a single
grapheme cluster come into play when displaying the glyphs?