+ else if (type == WEAK_BN
+ /* This condition is for the following important case:
+
+ . we are at level zero
+ . either previous strong character was L,
+ or we've seen no strong characters since sos
+ and the base paragraph direction is L2R
+ . this BN is NOT a bidi directional control
+
+ For such a situation, either this BN will be
+ converted to EN per W5, and then to L by virtue
+ of W7; or it will become ON per W6, and then L
+ because of N1/N2. So we take a shortcut here
+ and make it L right away, to avoid the
+ potentially costly loop below. This is
+ important when the buffer has a long series of
+ control characters, like binary nulls, and no
+ R2L characters at all. */
+ && new_level == 0
+ && !bidi_explicit_dir_char (bidi_it->ch)
+ && ((bidi_it->last_strong.type == STRONG_L)
+ || (bidi_it->last_strong.type == UNKNOWN_BT
+ && bidi_it->sos == L2R)))
+ type = STRONG_L;
+ else if (bidi_it->next_en_pos >= 0)