diff options
-rw-r--r-- | core/java/android/text/TextLine.java | 21 | ||||
-rw-r--r-- | graphics/java/android/graphics/Paint.java | 1 |
2 files changed, 21 insertions, 1 deletions
diff --git a/core/java/android/text/TextLine.java b/core/java/android/text/TextLine.java index 2f7482c..a6fd2f1 100644 --- a/core/java/android/text/TextLine.java +++ b/core/java/android/text/TextLine.java @@ -663,6 +663,25 @@ class TextLine { } /** + * @param wp + */ + private static void expandMetricsFromPaint(FontMetricsInt fmi, TextPaint wp) { + final int previousTop = fmi.top; + final int previousAscent = fmi.ascent; + final int previousDescent = fmi.descent; + final int previousBottom = fmi.bottom; + final int previousLeading = fmi.leading; + + wp.getFontMetricsInt(fmi); + + fmi.top = Math.min(fmi.top, previousTop); + fmi.ascent = Math.min(fmi.ascent, previousAscent); + fmi.descent = Math.max(fmi.descent, previousDescent); + fmi.bottom = Math.max(fmi.bottom, previousBottom); + fmi.leading = Math.max(fmi.leading, previousLeading); + } + + /** * Utility function for measuring and rendering text. The text must * not include a tab or emoji. * @@ -703,7 +722,7 @@ class TextLine { } if (fmi != null) { - wp.getFontMetricsInt(fmi); + expandMetricsFromPaint(fmi, wp); } if (c != null) { diff --git a/graphics/java/android/graphics/Paint.java b/graphics/java/android/graphics/Paint.java index 62fbfb4..e3bb6eb 100644 --- a/graphics/java/android/graphics/Paint.java +++ b/graphics/java/android/graphics/Paint.java @@ -1818,6 +1818,7 @@ public class Paint { nativeGetCharArrayBounds(mNativePaint, text, index, count, bounds); } + @Override protected void finalize() throws Throwable { finalizer(mNativePaint); } |