diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp index cb1c4bd2bd..f37e6780d1 100644 --- a/src/TextMetrics.cpp +++ b/src/TextMetrics.cpp @@ -803,7 +803,7 @@ void TextMetrics::breakRow(Row & row, int const right_margin, pit_type const pit // the width available for the row. int const width = max_width_ - row.right_margin; - if (pos >= end || row.width() > width) { + if (pos >= end) { row.endpos(end); return; } @@ -828,7 +828,7 @@ void TextMetrics::breakRow(Row & row, int const right_margin, pit_type const pit // or the end of the par, then build a representation of the row. pos_type i = pos; FontIterator fi = FontIterator(*this, par, pit, pos); - while (i < end && row.width() <= width) { + do { char_type c = par.getChar(i); // The most special cases are handled first. if (par.isInset(i)) { @@ -893,7 +893,7 @@ void TextMetrics::breakRow(Row & row, int const right_margin, pit_type const pit ++i; ++fi; - } + } while (i < end && row.width() <= width); row.finalizeLast(); row.endpos(i); diff --git a/src/frontends/qt4/GuiFontMetrics.cpp b/src/frontends/qt4/GuiFontMetrics.cpp index fdb8c73bc6..eade8ccc6c 100644 --- a/src/frontends/qt4/GuiFontMetrics.cpp +++ b/src/frontends/qt4/GuiFontMetrics.cpp @@ -240,7 +240,7 @@ bool GuiFontMetrics::breakAt(docstring & s, int & x, bool const rtl, bool const line.setLineWidth(x); tl.createLine(); tl.endLayout(); - if (int(line.naturalTextWidth()) > x) + if ((force && line.textLength() == 1) || int(line.naturalTextWidth()) > x) return false; x = int(line.naturalTextWidth()); // The -1 is here to account for the leading zerow_nbsp.