Commit 32413314 authored by Eli Zaretskii's avatar Eli Zaretskii

Support RLE/RLO/LRE/LRO for determining paragraph direction.

 src/bidi.c (bidi_paragraph_init): Support zero value of
 bidi_ignore_explicit_marks_for_paragraph_level.
parent 9fd8be00
2011-08-15 Eli Zaretskii <eliz@gnu.org>
* bidi.c (bidi_paragraph_init): Support zero value of
bidi_ignore_explicit_marks_for_paragraph_level.
* xdisp.c (move_it_in_display_line_to): Don't reset pixel
coordinates of the iterator when restoring from ppos_it.
(Bug#9296)
......
......@@ -79,6 +79,11 @@ typedef enum {
STRONG
} bidi_category_t;
/* UAX#9 says to search only for L, AL, or R types of characters, and
ignore RLE, RLO, LRE, and LRO, when determining the base paragraph
level. Yudit indeed ignores them. This variable is therefore set
by default to ignore them, but setting it to zero will take them
into account. */
extern int bidi_ignore_explicit_marks_for_paragraph_level EXTERNALLY_VISIBLE;
int bidi_ignore_explicit_marks_for_paragraph_level = 1;
......@@ -1178,10 +1183,6 @@ bidi_paragraph_init (bidi_dir_t dir, struct bidi_it *bidi_it, int no_default_p)
type = bidi_get_type (ch, NEUTRAL_DIR);
for (pos += nchars, bytepos += ch_len;
/* NOTE: UAX#9 says to search only for L, AL, or R types
of characters, and ignore RLE, RLO, LRE, and LRO.
However, I'm not sure it makes sense to omit those 4;
should try with and without that to see the effect. */
(bidi_get_category (type) != STRONG)
|| (bidi_ignore_explicit_marks_for_paragraph_level
&& (type == RLE || type == RLO
......@@ -1206,9 +1207,13 @@ bidi_paragraph_init (bidi_dir_t dir, struct bidi_it *bidi_it, int no_default_p)
pos += nchars;
bytepos += ch_len;
}
if (type == STRONG_R || type == STRONG_AL) /* P3 */
if ((type == STRONG_R || type == STRONG_AL) /* P3 */
|| (!bidi_ignore_explicit_marks_for_paragraph_level
&& (type == RLO || type == RLE)))
bidi_it->paragraph_dir = R2L;
else if (type == STRONG_L)
else if (type == STRONG_L
|| (!bidi_ignore_explicit_marks_for_paragraph_level
&& (type == LRO || type == LRE)))
bidi_it->paragraph_dir = L2R;
if (!string_p
&& no_default_p && bidi_it->paragraph_dir == NEUTRAL_DIR)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment