<div dir="ltr"><div>Hi Naoto,</div><div><br></div><div>TextLayout currently is not allowed to represent the layout of an empty string, and I'm looking to change that (see JDK-4138921).</div><div><br></div><div>One of the three TextLayout constructors which needs to change takes an AttributedCharacterIterator, which is usually obtained from an AttributedString. However, AttributedString has a similar restriction, in that it can only wrap an empty string if it doesn't have any attributes. Do you know why this is? Is this a restriction which can also be relaxed so as to avoid painful surprises for users of these APIs?</div><div><br></div><div>Take care,</div><div><br></div><div>Daniel</div><div><br></div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Mon, Aug 11, 2025 at 7:12 PM Philip Race <<a href="mailto:philip.race@oracle.com">philip.race@oracle.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
<br>
On 8/11/25 9:20 AM, Daniel Gredler wrote:<br>
> Hi all,<br>
><br>
> I was thinking of taking a stab at JDK-4138921 [1], and I have a <br>
> couple of questions.<br>
><br>
> First, there is a related API oddity in that null FontRenderContext <br>
> parameters passed to the TextLayout constructors cause a <br>
> NullPointerException, rather than an IllegalArgumentException (like <br>
> all other parameters). Can this behavior also be changed?<br>
<br>
None of these are documented .. they all should be.<br>
<br>
It is a bit odd that frc is the only one not explicitly checked so the <br>
NPE is just what 'happens'.<br>
I'd be reluctant to change the NPE without a good reason and I'm <br>
half-wondering if a null FRC was<br>
supposed to default to a default FRC ?? But somewhere along the line the <br>
implementation changed.<br>
I'd say just specify what happens for complete compatibility.<br>
<br>
><br>
> Second, changing all three TextLayout constructors to accept empty <br>
> strings sort of implies that we should also allow empty strings in <br>
> AttributedString instances (this is currently only allowed if the <br>
> attribute map is empty). Is it OK to change this behavior as well?<br>
<br>
I don't think I ever understood why this was dis-allowed on TextLayout.<br>
Perhaps it was to prevent some incorrect usage from ever slipping into <br>
being acceptable ?<br>
<br>
AttributedString is part of the java.base module, I don't have any say <br>
over that, although in the very beginning<br>
there was a decent overlap in the people working on that and TextLayout etc.<br>
I'd start by asking Naoto (cc'ed).<br>
<br>
-phil.<br>
<br>
><br>
> Let me know your thoughts!<br>
><br>
> Daniel<br>
><br>
> [1] <a href="https://bugs.openjdk.org/browse/JDK-4138921" rel="noreferrer" target="_blank">https://bugs.openjdk.org/browse/JDK-4138921</a><br>
><br>
><br>
<br>
</blockquote></div>