Hi Naoto, TextLayout currently is not allowed to represent the layout of an empty string, and I'm looking to change that (see JDK-4138921).
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? Take care, Daniel On Mon, Aug 11, 2025 at 7:12 PM Philip Race <philip.r...@oracle.com> wrote: > > > 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 > > > > > >