[OpenJDK 2D-Dev] RFR: 8230672: Spec. for FontMetrics.getMaxAdvance is too prescriptive.

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Thu Apr 23 16:49:18 UTC 2020


On 4/23/20 9:34 am, Philip Race wrote:
> No, I don't see the relationship.
> 
> charWidth() is accurate if you use the FontMetrics from the render context.

If it is always accurate why it is not recommended in the new documentation? Why we suggest to "render each such character".

  299      * None of these are exposed and they are all implementation details,
  300      * and there is no practical way to determine this. An application
  301      * which needs a better estimate of the maximum advance, and knows
  302      * the subset of characters it expects to display could render
  303      * each such character to find the widest, but as discussed above,
  304      * since the displayed width of a {@code String} is not necessarily
  305      * the sum of the advances the value needs to be used with caution.

> 
> -phil.
> 
> On 4/23/20, 9:19 AM, Sergey Bylokhov wrote:
>> Hi, Phil.
>>
>> Isn't all/some of the new text in getMaxAdvance() is also applicable to charWidth()?
>> If I read the current doc properly then it looks like the charWidth() should return "advance"
>> of some specific "advance", and getMaxAdvance() is "just" maximum value of any possible
>> results from the charWidth().
>>
>> On 4/22/20 12:49 pm, Philip Race wrote:
>>> bug : https://bugs.openjdk.java.net/browse/JDK-8230672
>>> webrev : http://cr.openjdk.java.net/~prr/8230672/
>>>
>>> Loosen up the spec. a lot to reflect reality.
>>>
>>> I considered deprecating the method but there isn't any easy replacement,
>>> so it would just be annoying to old code.
>>>
>>> This will clearly need a CSR which I will draft once we agree on the text here.
>>>
>>> -phil.
>>
>>


-- 
Best regards, Sergey.


More information about the 2d-dev mailing list