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

Ken Whitesell KenWhitesell@comcast.net
Thu Jan 20 01:01:16 GMT 2022


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.)

>
> You might find that starting the server and specifying a fixed dpi 
> value with the '-dpi' option might workaround this.
>
> [1] 
> https://cygwin.com/pipermail/cygwin-announce/2021-November/010286.html
>
I tried three different DPI settings, each one confirmed by verifying 
the setting as reported in the XWin.0.log file.

Example: [252575.109] winUpdateDpi - Using fixed 96 DPI

No setting prevented the issue from appearing.

>> 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.




More information about the Cygwin mailing list