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)); } }