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

From: Kenichi Handa <[email-masked]>
Date: Sun, 19 Aug 2012 22:37:29 +0900

In article <[email-masked]>, Jason Rumney <[email-masked]> writes:

>>> > So, apparently Emacs on Windows and GNU/Linux uses the
>>> > different metrics of glyphs.

> Right, but adding the offsets to the corresponding metrics, we get the
> same result with both the Windows and GNU/Linux cases,

?? I don't understand what you mean.

> except for the
> total height of the font, which I think is because Windows counts
> inter-line spacing, while on GNU/Linux, that is separate.

I'm not sure, but currently, y-axis metrics are not the problem.

> > For Hebrew too, on Windows, I see the same problem as what
> > Steffan <[email-masked]> reported:

> If you are seeing something different than Eli for Hebrew with the same
> font, then I suspect the cause is linked with the version of Uniscribe
> that is installed. Maybe diacritic handling for Hebrew and Arabic is a
> more recent addition to Uniscribe than the basic support for those
> languages.

Perhaps.  I tested it on Windows 7, and the tested version
of Emacs was 24.0.?, not the latest one.  I'm now
downloading the latest Windows binary of Emacs.

>>> > For instance, in the above case, we may have to render glyphs in
>>> > this order (diacritical mark first):
>>> > 
>>> >   [0 1 1593 760 0 3 6 12 4 [1 -2 0]]
>>> >   [0 1 1593 969 8 1 8 12 4 nil]

> I'm curious as to how we ended up with the same C entry in those
> vectors.  Could this be causing us problems later on?

I don't think so.  As far as I remember, the C entries in a
glyphs string is not used after being shaped.

> The glyph index
> is correct (comparing to the GNU/Linux version), but I wonder if
> Uniscribe is referring back to the character at some point and tripping
> up because it has been changed.

I have no idea about that.

> > The comment refer to "clusters".  I don't know what it
> > exactly means in uniscribe, but I guess it relates to
> > grapheme cluster, and if so, this part seems to relates to
> > the ordering of glyphs in this kind of grapheme clauster:
> >
> >   [0 1 1593 969 8 1 8 12 4 nil]
> >   [0 1 1593 760 0 3 6 12 4 [1 -2 0]]

> That seems to be correct.

Why?  As the xadvance of the first glyph is 8, and
the xoffset of the second glyph is 1, the second glyph is
never drawn at the same column as the first glyph.

> Maybe this is the code that is changing the
> character code to 1593.  I seem to recall that something like this was
> required for Indic languages to let Emacs know which characters had been
> linked back into one glyph.

Is that Windows specific?

---
Kenichi Handa
[email-masked]