RFR: 6742362: JComponent.setFont() font comparison is not correct

Phil Race prr at openjdk.java.net
Tue Feb 22 17:26:49 UTC 2022


On Tue, 22 Feb 2022 08:59:52 GMT, Prasanta Sadhukhan <psadhukhan at openjdk.org> wrote:

> Font comparison in JComponent.setFont() uses `font != oldFont` check which is not correct as per Object equality essence. The correct way of checking font equality is to use "equals" as is done in [GlyphLayout](https://github.com/openjdk/jdk/blob/master/src/java.desktop/share/classes/sun/font/GlyphLayout.java#L144) , [StandardGlyphVector](https://github.com/openjdk/jdk/blob/master/src/java.desktop/share/classes/sun/font/StandardGlyphVector.java#L657) etc
> 
> Existing jtreg, jck test are green.

What Graphics.setFont() says is irrelevant to this.
Looking at Component.java and Container.java which you need to since super.setFont(f) is called by both JComponent.setFont() and Container.setFont() "==" and "!=" are used there so this would be inconsistent.
You'd need to take a holistic look at all of these together and make risky changes
So I'm not sure we should change this. It might just cause unexpected regressions.
And see for example : https://github.com/openjdk/jdk/pull/7313 so we know Font.equals() isn't perfect.

-------------

PR: https://git.openjdk.java.net/jdk/pull/7571



More information about the client-libs-dev mailing list