<Swing Dev> [10] RFR JDK-8178025:HiDPI with non-integer scale factor - SPANs in HTML are rendered overlapping each other
Prasanta Sadhukhan
prasanta.sadhukhan at oracle.com
Tue Oct 17 04:52:38 UTC 2017
On 10/17/2017 1:08 AM, Sergey Bylokhov wrote:
> On 16/10/2017 02:50, Prasanta Sadhukhan wrote:
>>> Probably this is a root cause of the bug?
>> Does not seem like. If we only use floating point API
>> getTabbedTextWidth() in GlyphPainter1.getSpan() to get floating point
>> width, it calls SwingUtilities2.getFontStringWidth() which calls
>> getStringBounds() with default FRC.
>> When getStringBounds() calls fm.getFontRenderContext(), it returns
>> DEFAULT_FRC which has a null AffineTransform so when we try to get
>> the transform for that through getTransform(), it creates a new
>> AffineTransform with scale 1
>> public AffineTransform getTransform() {
>> return (tx == null) ? new AffineTransform() : new
>> AffineTransform(tx);
>> }
>
> So this is a problem why default FRC is used. We should find a way to
> create a correct one instead.
I guess that is what I did which is to create a FRC with correct transform .
Regards
Prasanta
>
>>> It will apply the screens scale to the FRC even if the component is
>>> located on some other screen.
>> I was of the opinion that this
>>
>> GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration().getDefaultTransform().getScaleX()
>>
>>
>> will give the scale factor as passed to sun.java2d.uiScale which
>> should be applicable for all screen(s), which is what I leveraged in
>> my fix.
>
> The "sun.java2d.uiScale" is a debug option which applies the scale on
> all screens, but in case of the common configuration it is possible to
> have different scales(example: hidpi laptop + lowdpi external screen).
>
> GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration().getDefaultTransform().getScaleX()
>
> Will returns default transform for default configuration of the
> main/default screen.
>
More information about the swing-dev
mailing list