diff options
| -rw-r--r-- | core/java/android/text/TextLine.java | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/core/java/android/text/TextLine.java b/core/java/android/text/TextLine.java index f52496116b8c..c114c371a50a 100644 --- a/core/java/android/text/TextLine.java +++ b/core/java/android/text/TextLine.java @@ -706,9 +706,19 @@ class TextLine { Canvas c, float x, int top, int y, int bottom, FontMetricsInt fmi, boolean needWidth) { - float ret = 0; + // Get metrics first (even for empty strings or "0" width runs) + if (fmi != null) { + expandMetricsFromPaint(fmi, wp); + } int runLen = end - start; + // No need to do anything if the run width is "0" + if (runLen == 0) { + return 0f; + } + + float ret = 0; + int contextLen = contextEnd - contextStart; if (needWidth || (c != null && (wp.bgColor != 0 || runIsRtl))) { int flags = runIsRtl ? Paint.DIRECTION_RTL : Paint.DIRECTION_LTR; @@ -723,10 +733,6 @@ class TextLine { } } - if (fmi != null) { - expandMetricsFromPaint(fmi, wp); - } - if (c != null) { if (runIsRtl) { x -= ret; |