JDK-4138921: TextLayout handling of empty strings

Philip Race philip.race at oracle.com
Mon Aug 11 17:11:55 UTC 2025



On 8/11/25 9:20 AM, Daniel Gredler wrote:
> Hi all,
>
> I was thinking of taking a stab at JDK-4138921 [1], and I have a 
> couple of questions.
>
> First, there is a related API oddity in that null FontRenderContext 
> parameters passed to the TextLayout constructors cause a 
> NullPointerException, rather than an IllegalArgumentException (like 
> all other parameters). Can this behavior also be changed?

None of these are documented .. they all should be.

It is a bit odd that frc is the only one not explicitly checked so the 
NPE is just what 'happens'.
I'd be reluctant to change the NPE without a good reason and I'm 
half-wondering if a null FRC was
supposed to default to a default FRC ?? But somewhere along the line the 
implementation changed.
I'd say just specify what happens for complete compatibility.

>
> Second, changing all three TextLayout constructors to accept empty 
> strings sort of implies that we should also allow empty strings in 
> AttributedString instances (this is currently only allowed if the 
> attribute map is empty). Is it OK to change this behavior as well?

I don't think I ever understood why this was dis-allowed on TextLayout.
Perhaps it was to prevent some incorrect usage from ever slipping into 
being acceptable ?

AttributedString is part of the java.base module, I don't have any say 
over that, although in the very beginning
there was a decent overlap in the people working on that and TextLayout etc.
I'd start by asking Naoto (cc'ed).

-phil.

>
> Let me know your thoughts!
>
> Daniel
>
> [1] https://bugs.openjdk.org/browse/JDK-4138921
>
>



More information about the client-libs-dev mailing list