X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fdraw.c;h=bc302b181b156125d35004b9143bd2e107750d60;hb=e59ec4c9ffac82a229db2504bcba7061ba348371;hp=f5b23cf2fb1302c9081604e7ee9457a504c7650c;hpb=15a6499fb848caba6a48d2051f868d0844fbc88e;p=m17n%2Fm17n-lib.git diff --git a/src/draw.c b/src/draw.c index f5b23cf..bc302b1 100644 --- a/src/draw.c +++ b/src/draw.c @@ -109,7 +109,7 @@ analyse_bidi_level (MGlyphString *gstring) MGlyph *g; int i; #ifdef HAVE_FRIBIDI - FriBidiCharType base = bidi_sensitive ? FRIBIDI_TYPE_RTL : FRIBIDI_TYPE_LTR; + FriBidiParType base = bidi_sensitive ? FRIBIDI_TYPE_RTL : FRIBIDI_TYPE_LTR; FriBidiChar *logical = alloca (sizeof (FriBidiChar) * len); FriBidiLevel *levels; FriBidiStrIndex *indices; @@ -225,9 +225,10 @@ visual_order (MGlyphString *gstring) for (i = 1; i < gstring->used - 1; i++) { MGlyph *g = gstring->glyphs + i; + int level = g->bidi_level; for (j = i; g->g.from == gstring->glyphs[j + 1].g.from; j++); - if (j > i) + if ((level % 2) && j > i) { memcpy (glyphs + i, gstring->glyphs + i, sizeof (MGlyph) * (j - i + 1));