summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Gilles Debunne <debunne@google.com> 2010-12-02 16:47:50 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2010-12-02 16:47:50 -0800
commit9d5055a2bcb231ea13e8da8f64bd93398f04225e (patch)
treeef8a5ece467fca181d3e40cb0d5133ba8f9f72f2
parent3c3743c5413a81c998f2801573481f65e9e25072 (diff)
parent0bb000931bb841e75903d655552d1626ae158707 (diff)
Merge "Fix in vertical measurement in text lines with different text sizes"
-rw-r--r--core/java/android/text/TextLine.java21
-rw-r--r--graphics/java/android/graphics/Paint.java1
2 files changed, 21 insertions, 1 deletions
diff --git a/core/java/android/text/TextLine.java b/core/java/android/text/TextLine.java
index 2f7482c2f15d..a6fd2f11ab38 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 62fbfb45668a..e3bb6eb5f58a 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);
}