diff --git a/core/java/android/text/MeasuredText.java b/core/java/android/text/MeasuredText.java index 55df2069ea353..ce3e2822fa22a 100644 --- a/core/java/android/text/MeasuredText.java +++ b/core/java/android/text/MeasuredText.java @@ -279,7 +279,9 @@ class MeasuredText { if (width < 0.0f) break; i--; } - while (i < limit - 1 && mChars[i + 1] == ' ') i++; + while (i < limit - 1 && (mChars[i + 1] == ' ' || w[i + 1] == 0.0f)) { + i++; + } return limit - i - 1; } } diff --git a/core/java/android/text/StaticLayout.java b/core/java/android/text/StaticLayout.java index 70d183d4cbe25..bdbe8b0f9a241 100644 --- a/core/java/android/text/StaticLayout.java +++ b/core/java/android/text/StaticLayout.java @@ -1029,8 +1029,10 @@ public class StaticLayout extends Layout { for (i = len; i > 0; i--) { float w = widths[i - 1 + lineStart - widthStart]; - if (w + sum + ellipsisWidth > avail) { + while (i < len && widths[i + lineStart - widthStart] == 0.0f) { + i++; + } break; } @@ -1076,9 +1078,11 @@ public class StaticLayout extends Layout { float w = widths[right - 1 + lineStart - widthStart]; if (w + rsum > ravail) { + while (right < len && widths[right + lineStart - widthStart] == 0.0f) { + right++; + } break; } - rsum += w; }