Cygwin/X with Win10 display scaling corrupting font display of typed characters - Issue identified

Jon Turney jon.turney@dronecode.org.uk
Mon Jan 24 15:02:24 GMT 2022


On 20/01/2022 01:01, Ken Whitesell wrote:
> On 1/19/2022 2:28 PM, Jon Turney wrote:
>> On 19/01/2022 00:02, Ken Whitesell wrote:
>>> On 1/17/2022 1:29 PM, Ken Whitesell wrote:
>>>>
>>>> Is there a known solution for this? (Or is it known that there is no 
>>>> solution?)
>>
>> Thanks for reporting this.
>>
>>>> Any guidance, pointers, suggestions of avenues for further research, 
>>>> or other information, will all be greatly appreciated.
>>>>
>>> After more research and experimentation, it appears to be related to 
>>> one of xorg-server, xorg-server-common, or xorg-server-xorg.
>>>
>>> Installing the older version 1.20.12-1 of these packages allows the 
>>> windows to be moved between monitors without any issues. Upgrading to 
>>> the current version 21.1.3-1 creates the problems. I'm able to 
>>> replicate this behavior on two different laptops with two different 
>>> external monitors.
>>
>> It seems likely that this is an unintended effect of changes in 
>> xorg-server 21.1.0-1, trying to fix problems in this area (See [1])
> 
> Thanks for the references. I've read all the messages in the thread - I 
> was particularly intrigued by this comment:
> 
> wrt the font scaling issue, looking at the source, it seems that we
> don't re-consider the display dpi after a WM_DISPLAYCHANGE message, but
> keep on using the value determined at startup.  This is probably a bug.
> 
> I'm curious enough to want to take a look at the code, but I've got no 
> belief that I'm going to be able to find an answer. (I'm *not* a C++ 
> programmer. I can read it and write a little of it, but that's about 
> it.) I was going to start by comparing the last known-working version to 
> the first known-non-working version, but given that it's a major release 
> change, that's not likely going to be a useful approach. (I'm way out of 
> my league here. It's probably going to take me a long time just to get 
> to the point where I can even begin to explore this.)

The relevant change, which tries to fix the issue identified in that 
comment, and probably introduces this issue is:

https://gitlab.freedesktop.org/jturney/xserver/-/commit/b19b6266d33f2b911dc1826ad5c03da135a39957

[...]
>>> If I change the scaling from 125% to 100% on the laptop's display,
>>> the problem appears until I restart Cygwin/X. Restarting Cygwin/X
>>> shows it displaying properly, until I change the scaling again.
>>
>> I could only reproduce this problem with mis-rendering when changing 
>> the scaling on the secondary monitor.
> 
> Wow, I did a really poor job of writing that. I'm sorry.
> 
> For clarity, just in case you were unable to interpret what I meant by 
> what I wrote -
> 
> At start: Laptop scaling set at 125%, second monitor at 100%.
> 
> Mis-rendering occurs at start, on the second monitor only.
> 
> If I change the scaling on the laptop, while the current instance of 
> XWin is running - the same mis-rendering now occurs on the laptop.
> 
> Interestingly enough, if I change the laptop from 125% to 100%, the tops 
> are clipped as previously reported. But if I change the scaling from 
> 125% to 150%, then the bottoms are clipped. (It kinda makes sense from 
> what you've written.)
> 
> If I then stop and restart XWin after having reset the scaling such that 
> both monitors have the same setting, then the problem doesn't appear.

Thanks for the clarification.

The laptop display is the primary monitor in all cases, correct?


More information about the Cygwin mailing list