From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sa-prd-fep-043.btinternet.com (mailomta27-sa.btinternet.com [213.120.69.33]) by sourceware.org (Postfix) with ESMTPS id 3E1B03857817 for ; Sun, 14 Aug 2022 11:08:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 3E1B03857817 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=dronecode.org.uk Authentication-Results: sourceware.org; spf=none smtp.mailfrom=dronecode.org.uk Received: from sa-prd-rgout-001.btmx-prd.synchronoss.net ([10.2.38.4]) by sa-prd-fep-043.btinternet.com with ESMTP id <20220814110827.DVUB3164.sa-prd-fep-043.btinternet.com@sa-prd-rgout-001.btmx-prd.synchronoss.net>; Sun, 14 Aug 2022 12:08:27 +0100 Authentication-Results: btinternet.com; auth=pass (PLAIN) smtp.auth=jonturney@btinternet.com; bimi=skipped X-SNCR-Rigid: 62E573CC029E90E0 X-Originating-IP: [81.153.98.171] X-OWM-Source-IP: 81.153.98.171 (GB) X-OWM-Env-Sender: jonturney@btinternet.com X-VadeSecure-score: verdict=clean score=0/300, class=clean X-RazorGate-Vade: gggruggvucftvghtrhhoucdtuddrgedvfedrvdehtddgfeeiucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuueftkffvkffujffvgffngfevqffopdfqfgfvnecuuegrihhlohhuthemuceftddunecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpefkffggfgfuhffvfhgjtgfgsehtkeertddtfeejnecuhfhrohhmpeflohhnucfvuhhrnhgvhicuoehjohhnrdhtuhhrnhgvhiesughrohhnvggtohguvgdrohhrghdruhhkqeenucggtffrrghtthgvrhhnpeduffejjeeifeffteehheeuleetffffjedugffhkeeiueevkedukeelhefhudefgfenucffohhmrghinhepmhhitghrohhsohhfthdrtghomhenucfkphepkedurdduheefrdelkedrudejudenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhephhgvlhhopegludelvddrudeikedruddruddthegnpdhinhgvthepkedurdduheefrdelkedrudejuddpmhgrihhlfhhrohhmpehjohhnrdhtuhhrnhgvhiesughrohhnvggtohguvgdrohhrghdruhhkpdhnsggprhgtphhtthhopedvpdhrtghpthhtohepmfgvnhghhhhithgvshgvlhhlsegtohhmtggrshhtrdhnvghtpdhrtghpthhtoheptgihghifihhnsegthihgfihinhdrtghomh X-RazorGate-Vade-Verdict: clean 0 X-RazorGate-Vade-Classification: clean Received: from [192.168.1.105] (81.153.98.171) by sa-prd-rgout-001.btmx-prd.synchronoss.net (5.8.716.04) (authenticated as jonturney@btinternet.com) id 62E573CC029E90E0; Sun, 14 Aug 2022 12:08:27 +0100 Message-ID: Date: Sun, 14 Aug 2022 12:08:25 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.12.0 Subject: Re: Cygwin/X with Win10 display scaling corrupting font display of typed characters - Issue identified - "Solution" found Content-Language: en-GB From: Jon Turney To: Ken Whitesell , The Cygwin Mailing List References: <02b8ba82-0a40-e9ea-c4e6-fe201097d957@comcast.net> <4f4d8d34-3e30-82fe-4be2-2926da2c1c6a@dronecode.org.uk> <37ce4364-d009-4280-ebf2-739b5aa6a66d@dronecode.org.uk> <2e8f1d16-92eb-b66e-c49e-7e38e5f07110@comcast.net> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1192.2 required=5.0 tests=BAYES_00, FORGED_SPF_HELO, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: cygwin@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: General Cygwin discussions and problem reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Aug 2022 11:08:29 -0000 On 05/02/2022 14:25, Jon Turney wrote: > On 27/01/2022 03:12, Ken Whitesell wrote: >> First, the bottom line: >> >> XWin.exe.manifest, line 21 >> >> change: >> PerMonitorV2,PerMonitor >> to >> PerMonitor >> >> Some details: >> >> I managed to get to a point where I could build the packages from >> source and install them. I looked at the commit you referred me to, >> and started reverting changes, one-by-one - at least in so far as the >> change appeared to make sense to me. >> >> Anyway, I got to this change, and sure enough, it worked. Removing the >> "PerMonitorV2" solved the issue. Also, I confirmed that it's the >> "PerMonitorV2" that is causing the issue and not having both of them >> by running another test with just the "PerMonitorV2" - and that still >> shows the problem. > > Thanks for taking the time to narrow this down.  It's been very helpful. > > Working through the documented effects of that [1], I was able to work > out that this mis-rendering is due to the non-client area scaling. > > [1] See under DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 in > https://docs.microsoft.com/en-us/windows/win32/hidpi/dpi-awareness-context > > If you turn off 'Hide Root Window' from the tray menu, you can kind of > see what's going wrong: normally the client area of the X window is > exactly aligned with that in the root window, but when the non-client > area is rescaled by a DPI change (the title bar changes size > significantly), it's misaligned so that part of the X window is outside > the client area (and thus clipped in updates). > > I think this is due to the AdjustWindowsRectEx() function not being DPI > aware (I guess it's always computing the non-client window rect based on > the processes initial DPI) > > Unfortunately, from an initial look, rewriting things to use > AdjustWindowRectExForDpi() isn't trivial (since we need to make 'DPI of > the monitor this Window is going to end up on' available to it) > > So for the moment, I think I'll apply your reversion (although this > probably comes at the cost of not scaling the window frame, the traymenu > and About... dialog) I made this change in xserver 21.1.4-1. Thanks again for tracking this down.