API review "RT-30861: Add simple Font factory method for a default font of a different size"

Gerrit Grunwald han.solo at muenster.de
Mon Jun 3 11:49:00 PDT 2013


+1

Gerrit

Am 03.06.2013 um 20:26 schrieb David Grieve <david.grieve at oracle.com>:

> I would rather see the deriveFont methods, but not as factory methods.
> 
> public Font deriveFont(double size)
> public Font deriveFont(String family)
> 
> The subtle difference being that these wouldn't use "default" sizes or family names but would use whatever the font is to find the closest matching font. If there isn't a close match, then the same font would be returned. 
> 
> e.g., 
>    text.setFont(Font.getDefault().deriveFont(18));
> and 
>    Font myFont = new Font("Verdana", 18);
>    text.setFont(myFont.deriveFont("Comic Sans MS");
> 
> On Jun 3, 2013, at 2:07 PM, Felipe Heidrich <felipe.heidrich at oracle.com> wrote:
> 
>> Moving API discussion to the mailing:
>> 
>> Proposal:
>> Add:
>> Font#font(float)        - creates new font using default font family name and given font size
>> Font#font(String)        - creates new font using given font family and default font size
>> 
>> 
>> Comments:
>> Phil Wrote
>>> I keep having to type this:
>>>  text.setFont(Font.font(Font.getDefault().getFamily(), 81));
>>> I would prefer just:
>>>  text.setFont(Font.font(81));
>>> which would use the default font.
>> 
>> I think that last line was meant to be "default font family".
>> All the font(..) factory methods are family based and we should
>> keep it that way.
>> So the new API Font.font(-81) as specified and implemented here
>> is using the default family but its not necessarily getting the same
>> style as the default font. Nor would it inherit any other (theoretical)
>> attributes of the default font. In practice it'll all work out
>> the same until the day that some platform has a bold default font
>> or has something else different about the default font that can't
>> be communicated solely through family.
>> So some day we also need to add Font.deriveFont(..).
>> 
>> Felipe wrote:
>> Right, the problem you pointed out would be better solved using the derive pattern:
>> 
>> Font.getDefault().deriveFont(newSize);
>> 
>> That said, the two new methods don't exclude the option of adding derive in the future.
>> They are consistent with the javadoc, other factory methods, and probably good enough to make Richard happy for now.
>> 
>> Anyway, I will let him be the judge for that. 
>> 
>> Personally I would go with the 2 new methods for now and worried about derive in the future (at which time we can consider the implication of different style options such as stretch and advance typographic features).
>> 
>> 
>> 
>> Felipe
> 


More information about the openjfx-dev mailing list