GNU bug report logs -
#11860
24.1; Arabic - Harakat (diacritics, short vowels) don't appear
Previous Next
Reported by: Steffan <smias <at> yandex.ru>
Date: Wed, 4 Jul 2012 18:43:12 UTC
Severity: normal
Found in version 24.1
Done: Stefan Kangas <stefan <at> marxist.se>
Bug is archived. No further changes may be made.
Full log
Message #50 received at 11860 <at> debbugs.gnu.org (full text, mbox):
In article <837gswgqpq.fsf <at> gnu.org>, Eli Zaretskii <eliz <at> gnu.org> writes:
> > * ScriptPlace -- perhaps for glyph positioning (GPOS features of opentype)
> >
> > So at first please check the documentation of ScriptShape
> > and figure out how it works for bidi script; i.e. what order
> > does it expect for input, and what order does it produce.
> From the above page:
> If fLogicalOrder is set to TRUE in the SCRIPT_ANALYSIS structure, the
> function always generates glyphs in the same order as the original
> Unicode characters. If fLogicalOrder is set to FALSE, the function
> generates right-to-left items in reverse order so that ScriptTextOut
> does not have to reverse them before calling ExtTextOut.
> And w32uniscribe.c sets that flag to TRUE a few lines before it calls
> ScriptShape, because Emacs itself reorders characters:
I see, so the output ScriptShape is still in logical order,
and that explains this glyph order (the glyph code 969 is
for consonant and 760 is for vowel).
[0 1 1593 969 8 1 8 12 4 nil]
[0 1 1593 760 0 3 6 12 4 [1 -2 0]]
But, then...
> If fLogicalOrder is set to FALSE, the function
> generates right-to-left items in reverse order so that ScriptTextOut
> does not have to reverse them before calling ExtTextOut.
Doesn't it mean that, if fLogicalOrder is TRUE, ScriptPlace
generates xadvance and left/right bearing while expecting
that the glyphs are re-ordered before actually rendered?
> You can find some details here:
> http://msdn.microsoft.com/en-us/library/windows/desktop/dd317792%28v=vs.85%29.aspx
> I hope this will allow you to understand the meaning of the above
> code, by looking at how the results are used in the calls to
> LGLYPH_SET_* macros right below the above snippet.
Thank you for the pointer. I have questions in the section
"Display Text Using Uniscribe" in that page. The step 2
says:
1. Extract an array of bidirectional embedding levels,
one per range. The embedding level is given by
(SCRIPT_ITEM) si.(SCRIPT_ANALYSIS) a. (SCRIPT_STATE)
s.uBidiLevel.
From what and how to extract that array?
2. Pass this array to ScriptLayout to generate a map of
visual positions to logical positions.
There's no place in Emacs that calls ScriptLayout. Isn't it
a problem?
---
Kenichi Handa
handa <at> gnu.org
This bug report was last modified 4 years and 274 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.