diff options
author | Eli Zaretskii <eliz@gnu.org> | 2012-09-04 20:15:45 +0300 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2012-09-04 20:15:45 +0300 |
commit | 30934d334e8a67c8992d910428758d5b93e0f04f (patch) | |
tree | 41c2a2c83cd551690bd7725d1737c90ecc18f4ba /src | |
parent | 8ce192e317f321834851e31571833f33aa332aa2 (diff) | |
download | emacs-30934d334e8a67c8992d910428758d5b93e0f04f.tar.gz |
Fix display of Arabic diacriticals on Windows, per bug #11860.
src/w32uniscribe.c (uniscribe_shape): Reverse the sign of
offsets[j].dv, since the y axis of the screen coordinates points
down, while the y axis of the font definition coordinates points
up. This fixes display of Arabic diacritics such as KASRA and
KASRATAN.
Diffstat (limited to 'src')
-rw-r--r-- | src/ChangeLog | 8 | ||||
-rw-r--r-- | src/w32uniscribe.c | 6 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index a8d6a4026a0..f905cc3b5a2 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,11 @@ +2012-09-04 Eli Zaretskii <eliz@gnu.org> + + * w32uniscribe.c (uniscribe_shape): Reverse the sign of + offsets[j].dv, since the y axis of the screen coordinates points + down, while the y axis of the font definition coordinates points + up. This fixes display of Arabic diacritics such as KASRA and + KASRATAN. (Bug#11860) + 2012-09-04 Paul Eggert <eggert@cs.ucla.edu> Be more systematic about _setjmp vs setjmp. diff --git a/src/w32uniscribe.c b/src/w32uniscribe.c index bc45e2c648c..cf99d14dc77 100644 --- a/src/w32uniscribe.c +++ b/src/w32uniscribe.c @@ -454,7 +454,11 @@ uniscribe_shape (Lisp_Object lgstring) } else ASET (vec, 0, make_number (offsets[j].du + adj_offset)); - ASET (vec, 1, make_number (offsets[j].dv)); + /* In the font definition coordinate system, the + Y coordinate points up, while in our screen + coordinates Y grows downwards. So we need to + reverse the sign of Y-OFFSET here. */ + ASET (vec, 1, make_number (-offsets[j].dv)); /* Based on what ftfont.c does... */ ASET (vec, 2, make_number (advances[j])); LGLYPH_SET_ADJUSTMENT (lglyph, vec); |