RFR: 4138921: TextLayout handling of empty strings

Sergey Bylokhov serb at openjdk.org
Wed Sep 3 00:47:46 UTC 2025


On Tue, 26 Aug 2025 17:40:12 GMT, Daniel Gredler <dgredler at openjdk.org> wrote:

> `TextLayout` should deal more gracefully with zero length strings. Currently the exception listed below is the one that is thrown.
> 
> `new TextLayout("", f, new FontRenderContext(null, false, false));`
> 
>> Exception in thread "main" java.lang.IllegalArgumentException: Zero length
>> string passed to TextLayout constructor.
>> at java.lang.Throwable.<init>(Compiled Code)
>> at java.lang.Exception.<init>(Compiled Code)
>> at java.lang.RuntimeException.<init>(Compiled Code)
>> at java.lang.IllegalArgumentException.<init>(Compiled Code)
>> at java.awt.font.TextLayout.<init>(Compiled Code)
>> at test.main(Compiled Code)
> 
> **REVIEWER NOTE:** Please check the empty-string `TextLayout` behavior documented in `TextLayoutConstructorTest` carefully; a badly-behaving empty `TextLayout` is probably worse than a `TextLayout` which doesn't allow empty strings...

src/java.desktop/share/classes/java/awt/font/TextLayout.java line 516:

> 514: 
> 515:         int start = text.getBeginIndex();
> 516:         int limit = text.getEndIndex();

Why do we call text.first() twice, on line 516 and in the loop init block?

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/26947#discussion_r2317487911


More information about the client-libs-dev mailing list