Bug 501938 – Arabic shaping broken with vertical layout with
authorBehdad Esfahbod <behdad@gnome.org>
Thu, 6 Dec 2007 01:41:18 +0000 (01:41 +0000)
committerBehdad Esfahbod <behdad@src.gnome.org>
Thu, 6 Dec 2007 01:41:18 +0000 (01:41 +0000)
2007-12-05  Behdad Esfahbod  <behdad@gnome.org>

        Bug 501938 – Arabic shaping broken with vertical layout with
        vertical-hint=line

        * modules/arabic/arabic-fc.c (arabic_engine_shape): Take gravity into
        equation when deciding whether to shape visually or logically.

svn path=/trunk/; revision=2516

ChangeLog
modules/arabic/arabic-fc.c

index e29e182..65b166c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2007-12-05  Behdad Esfahbod  <behdad@gnome.org>
 
+       Bug 501938 – Arabic shaping broken with vertical layout with
+       vertical-hint=line
+
+       * modules/arabic/arabic-fc.c (arabic_engine_shape): Take gravity into
+       equation when deciding whether to shape visually or logically.
+
+2007-12-05  Behdad Esfahbod  <behdad@gnome.org>
+
        * pango-view/viewer-pangocairo.c (render_callback): Fix assertion
        in pango_gravity_get_rotation().
 
index 5765982..023f629 100644 (file)
@@ -96,6 +96,7 @@ arabic_engine_shape (PangoEngineShape *engine,
   const char *p;
   int cluster = 0;
   gboolean rtl = analysis->level % 2 != 0;
+  gboolean reverse;
   int i;
 
   g_return_if_fail (font != NULL);
@@ -115,7 +116,8 @@ arabic_engine_shape (PangoEngineShape *engine,
   wcs = g_utf8_to_ucs4_fast (text, length, &n_chars);
   properties = g_new0 (gulong, n_chars);
 
-  Arabic_Assign_Properties (wcs, properties, n_chars, !rtl);
+  reverse = !rtl ^ (analysis->gravity == PANGO_GRAVITY_NORTH || analysis->gravity == PANGO_GRAVITY_WEST);
+  Arabic_Assign_Properties (wcs, properties, n_chars, reverse);
 
   g_free (wcs);