unsigned j;
unsigned i;
- if (last_space > (signed) line_start)
+ if (k != visual_len && last_space > (signed) line_start)
k = last_space;
+ else if (k != visual_len && line_start == 0 && startwidth != 0)
+ {
+ k = 0;
+ last_space_width = startwidth;
+ }
else
- line_width -= last_width;
+ last_space_width = line_width - last_width;
for (i = line_start; i < k; i++)
{
if (is_mirrored (visual[i].base) && levels[i])
visual[i].attributes |= GRUB_UNICODE_GLYPH_ATTRIBUTE_MIRROR;
+ grub_memcpy (outptr, &visual[line_start],
+ (k - line_start) * sizeof (visual[0]));
outptr += k - line_start;
if (k != visual_len)
{
grub_memset (visual_ptr, 0, sizeof (visual_ptr[0]));
visual_ptr->base = '\n';
visual_ptr++;
+ line_start++;
}
}
}
grub_print_spaces (term, margin_left - ((term->getxy () >> 8) & 0xff));
startwidth = ((term->getxy () >> 8) & 0xff) - margin_left;
- startwidth = 0;
if ((term->flags & GRUB_TERM_CODE_TYPE_MASK)
== GRUB_TERM_CODE_TYPE_UCS4_VISUAL
if (line_width > max_width && last_space > line_start)
ptr = last_space;
+ else if (line_width > max_width
+ && line_start == str && startwidth != 0)
+ {
+ ptr = str;
+ lastspacewidth = startwidth;
+ }
else
lastspacewidth = line_width - last_width;