diff --git a/core/tests/coretests/assets/fonts/ascent10em-descent10em.ttf b/core/tests/coretests/assets/fonts/ascent10em-descent10em.ttf
new file mode 100644
index 0000000000000..47ab623b43e8b
Binary files /dev/null and b/core/tests/coretests/assets/fonts/ascent10em-descent10em.ttf differ
diff --git a/core/tests/coretests/assets/fonts/ascent10em-descent10em.ttx b/core/tests/coretests/assets/fonts/ascent10em-descent10em.ttx
new file mode 100644
index 0000000000000..55402770746e4
--- /dev/null
+++ b/core/tests/coretests/assets/fonts/ascent10em-descent10em.ttx
@@ -0,0 +1,181 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Copyright (C) 2017 The Android Open Source Project
+
+
+ Sample Font
+
+
+ Regular
+
+
+ Sample Font
+
+
+ SampleFont-Regular
+
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/tests/coretests/src/android/text/StaticLayoutTest.java b/core/tests/coretests/src/android/text/StaticLayoutTest.java
index d817278330d4d..25217125bbf4d 100644
--- a/core/tests/coretests/src/android/text/StaticLayoutTest.java
+++ b/core/tests/coretests/src/android/text/StaticLayoutTest.java
@@ -822,6 +822,9 @@ public class StaticLayoutTest {
+ " "
+ " ascent3em-descent4em.ttf"
+ " "
+ + " "
+ + " ascent10em-descent10em.ttf"
+ + " "
+ "";
try (FontFallbackSetup setup =
@@ -833,7 +836,7 @@ public class StaticLayoutTest {
assertEquals(2 * textSize, paint.descent(), 0.0f);
final int paraWidth = 5 * textSize;
- final String text = "aaaaa aabaa aaaaa"; // This should result in three lines.
+ final String text = "aaaaa\naabaa\naaaaa\n"; // This should result in three lines.
// Old line spacing. All lines should get their ascent and descents from the first font.
StaticLayout layout = StaticLayout.Builder
@@ -841,13 +844,17 @@ public class StaticLayoutTest {
.setIncludePad(false)
.setUseLineSpacingFromFallbacks(false)
.build();
- assertEquals(3, layout.getLineCount());
+ assertEquals(4, layout.getLineCount());
assertEquals(-textSize, layout.getLineAscent(0));
assertEquals(2 * textSize, layout.getLineDescent(0));
assertEquals(-textSize, layout.getLineAscent(1));
assertEquals(2 * textSize, layout.getLineDescent(1));
assertEquals(-textSize, layout.getLineAscent(2));
assertEquals(2 * textSize, layout.getLineDescent(2));
+ // The last empty line spacing should be the default line spacing.
+ // Maybe good to be a previous line spacing?
+ assertEquals(-textSize, layout.getLineAscent(3));
+ assertEquals(2 * textSize, layout.getLineDescent(3));
// New line spacing. The second line has a 'b', so it needs more ascent and descent.
layout = StaticLayout.Builder
@@ -855,26 +862,52 @@ public class StaticLayoutTest {
.setIncludePad(false)
.setUseLineSpacingFromFallbacks(true)
.build();
- assertEquals(3, layout.getLineCount());
+ assertEquals(4, layout.getLineCount());
assertEquals(-textSize, layout.getLineAscent(0));
assertEquals(2 * textSize, layout.getLineDescent(0));
assertEquals(-3 * textSize, layout.getLineAscent(1));
assertEquals(4 * textSize, layout.getLineDescent(1));
assertEquals(-textSize, layout.getLineAscent(2));
assertEquals(2 * textSize, layout.getLineDescent(2));
+ assertEquals(-textSize, layout.getLineAscent(3));
+ assertEquals(2 * textSize, layout.getLineDescent(3));
// The default is the old line spacing, for backward compatibility.
layout = StaticLayout.Builder
.obtain(text, 0, text.length(), paint, paraWidth)
.setIncludePad(false)
.build();
- assertEquals(3, layout.getLineCount());
+ assertEquals(4, layout.getLineCount());
assertEquals(-textSize, layout.getLineAscent(0));
assertEquals(2 * textSize, layout.getLineDescent(0));
assertEquals(-textSize, layout.getLineAscent(1));
assertEquals(2 * textSize, layout.getLineDescent(1));
assertEquals(-textSize, layout.getLineAscent(2));
assertEquals(2 * textSize, layout.getLineDescent(2));
+ assertEquals(-textSize, layout.getLineAscent(3));
+ assertEquals(2 * textSize, layout.getLineDescent(3));
+
+ layout = StaticLayout.Builder
+ .obtain("\n", 0, 1, paint, textSize)
+ .setIncludePad(false)
+ .setUseLineSpacingFromFallbacks(false)
+ .build();
+ assertEquals(2, layout.getLineCount());
+ assertEquals(-textSize, layout.getLineAscent(0));
+ assertEquals(2 * textSize, layout.getLineDescent(0));
+ assertEquals(-textSize, layout.getLineAscent(1));
+ assertEquals(2 * textSize, layout.getLineDescent(1));
+
+ layout = StaticLayout.Builder
+ .obtain("\n", 0, 1, paint, textSize)
+ .setIncludePad(false)
+ .setUseLineSpacingFromFallbacks(true)
+ .build();
+ assertEquals(2, layout.getLineCount());
+ assertEquals(-textSize, layout.getLineAscent(0));
+ assertEquals(2 * textSize, layout.getLineDescent(0));
+ assertEquals(-textSize, layout.getLineAscent(1));
+ assertEquals(2 * textSize, layout.getLineDescent(1));
}
}