From: Kenichi Handa <handa@gnu.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 11860@debbugs.gnu.org, smias@yandex.ru
Subject: bug#11860: 24.1; Arabic - Harakat (diacritics, short vowels) don't appear
Date: Sun, 19 Aug 2012 22:20:27 +0900 [thread overview]
Message-ID: <878vdbhvc4.fsf@gnu.org> (raw)
In-Reply-To: <837gswgqpq.fsf@gnu.org> (message from Eli Zaretskii on Sat, 18 Aug 2012 18:33:21 +0300)
In article <837gswgqpq.fsf@gnu.org>, Eli Zaretskii <eliz@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@gnu.org
next prev parent reply other threads:[~2012-08-19 13:20 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-04 9:17 bug#11860: 24.1; Arabic - Harakat (diacritics, short vowels) don't appear Steffan
2012-07-04 20:22 ` Eli Zaretskii
2012-07-05 17:53 ` Steffan
2012-08-05 5:27 ` Steffan
2012-08-05 15:49 ` Eli Zaretskii
2012-08-13 0:02 ` Kenichi Handa
2012-08-18 2:45 ` Kenichi Handa
2012-08-18 7:14 ` Eli Zaretskii
2012-08-18 9:19 ` Kenichi Handa
2012-08-18 15:33 ` Eli Zaretskii
2012-08-19 7:32 ` YAMAMOTO Mitsuharu
2012-08-19 12:51 ` Kenichi Handa
2012-08-19 13:20 ` Kenichi Handa [this message]
2012-08-19 18:44 ` Eli Zaretskii
2012-08-19 18:53 ` Werner LEMBERG
2012-08-20 17:24 ` Eli Zaretskii
2012-08-19 3:02 ` Jason Rumney
2012-08-19 13:37 ` Kenichi Handa
2012-08-19 16:16 ` Jason Rumney
2012-08-19 18:54 ` Eli Zaretskii
2012-08-20 14:57 ` Kenichi Handa
2012-08-20 17:16 ` Eli Zaretskii
2012-08-21 9:20 ` Kenichi Handa
2012-08-19 18:52 ` Eli Zaretskii
2012-08-19 17:56 ` Eli Zaretskii
2012-08-19 4:34 ` YAMAMOTO Mitsuharu
2012-09-09 4:06 ` YAMAMOTO Mitsuharu
2012-09-11 14:49 ` Kenichi Handa
2012-09-11 17:48 ` Eli Zaretskii
2012-09-12 13:14 ` Kenichi Handa
2012-09-12 16:34 ` Eli Zaretskii
2012-09-13 6:07 ` Kenichi Handa
2012-09-13 17:00 ` Eli Zaretskii
2012-09-13 23:26 ` Kenichi Handa
2012-09-16 12:03 ` Kenichi Handa
2012-09-16 12:41 ` Eli Zaretskii
2012-09-16 15:43 ` Stefan Monnier
2012-09-16 15:50 ` Eli Zaretskii
2012-09-17 14:08 ` Kenichi Handa
2012-09-17 16:58 ` Stefan Monnier
2012-08-19 18:22 ` Eli Zaretskii
2012-08-21 13:16 ` Kenichi Handa
2012-08-21 17:32 ` Eli Zaretskii
2012-08-22 9:15 ` Kenichi Handa
2012-08-22 19:52 ` Steffan
2012-08-23 2:50 ` Eli Zaretskii
2012-08-22 21:40 ` Steffan
2012-08-23 2:49 ` Eli Zaretskii
2012-08-27 21:10 ` Steffan
2012-08-29 8:09 ` Kenichi Handa
2012-09-01 13:59 ` Eli Zaretskii
2012-09-03 13:55 ` Kenichi Handa
2012-09-03 15:53 ` Eli Zaretskii
2012-09-04 9:03 ` Kenichi Handa
2012-08-29 8:57 ` Steffan
2012-09-01 14:06 ` Eli Zaretskii
2012-09-03 15:31 ` Steffan
2012-09-03 16:28 ` Eli Zaretskii
2012-09-04 17:18 ` Eli Zaretskii
2012-09-03 16:24 ` Steffan
2012-09-03 17:49 ` Steffan
2012-09-06 2:09 ` YAMAMOTO Mitsuharu
2012-09-06 8:52 ` Steffan
2012-09-06 9:56 ` YAMAMOTO Mitsuharu
2012-09-06 10:47 ` Eli Zaretskii
2012-09-06 14:52 ` Steffan
2012-09-10 16:13 ` Steffan
2020-08-17 22:45 ` Stefan Kangas
2020-08-18 4:40 ` Eli Zaretskii
2020-08-18 9:47 ` Stefan Kangas
[not found] <14231341502795@web11e.yandex.ru>
2012-07-05 17:16 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=878vdbhvc4.fsf@gnu.org \
--to=handa@gnu.org \
--cc=11860@debbugs.gnu.org \
--cc=eliz@gnu.org \
--cc=smias@yandex.ru \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).