/* draw.c -- drawing module.
- Copyright (C) 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H15PRO112
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;
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));
font.rfont = rfont;
mflt_font_id = font_id;
mflt_iterate_otf_feature = rfont->driver->iterate_otf_feature;
+ mflt_try_otf = rfont->driver->try_otf;
for (i = 0; i < 3; i++)
{
to = mflt_run (&flt_gstr, from, to, &font.font, flt);
break;
}
}
+ if (this_script == Minherited || this_script == Mcommon)
+ this_script = (MSymbol) mchar_get_prop (c, Mblock);
}
pos = g->g.from;
for (g++;
(g->type == GLYPH_CHAR
- && g->g.from != gstring->control.cursor_pos
&& g->rface->layouter == this->rface->layouter
&& (g->rface->rfont == this->rface->rfont
|| (g->category == GLYPH_CATEGORY_FORMATTER
M_kinsoku_bol = msymbol ("kb");
M_kinsoku_eol = msymbol ("ke");
+ mflt_enable_new_feature = 1;
+
return 0;
}