DMARC-Filter: OpenDMARC Filter v1.4.2 delorie.com 65CAFknK3691085 Authentication-Results: delorie.com; dmarc=pass (p=none dis=none) header.from=cygwin.com Authentication-Results: delorie.com; spf=pass smtp.mailfrom=cygwin.com DKIM-Filter: OpenDKIM Filter v2.11.0 delorie.com 65CAFknK3691085 Authentication-Results: delorie.com; dkim=pass (1024-bit key, unprotected) header.d=cygwin.com header.i=@cygwin.com header.a=rsa-sha256 header.s=default header.b=IxxMxlgh X-Recipient: archive-cygwin AT delorie DOT com DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3425F4BA2E1A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com; s=default; t=1781259344; bh=mTtTXzWOTr0LNMME9pzjHfkbtiSuXcgTvoNqBxkLhm4=; h=Date:Subject:To:References:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=IxxMxlghF71W5OqF3KcyDKhFBOs21Hk70dZPVXldntNfj/duwI7AZop0XEpq79Qyk GDt7I6xmBd1pMSbTqvRyrk8RHfgaL4HT8tm8oYd1U4wtjawrLLLlfJ/2OytOJgtIEH HGVnnGRko7tIvzdkLFu+1I4SMvyMsLySeN3EsoXk= X-Original-To: cygwin AT cygwin DOT com Delivered-To: cygwin AT cygwin DOT com DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7D4054BA2E16 ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7D4054BA2E16 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1781259323; cv=none; b=M6BjqZPwi4LTE+G1lajLbMKT+StLizTMP4VFmzGRpdRO3D4ZcnP/v5Cierqg/P5IijrDxNrJ6EJPCqyQXjz4XiQl1HgEGsCbRCUsX8TcLk8ymUVWXvpINVkZEHbRgBoiBXVWaESyhBuqIo3vQAn+5dM+cvOLD7W8PHSQvI1PX3M= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1781259323; c=relaxed/simple; bh=YDLXLfvLG4gG1ZcIcZvrvP6CZgeOKO9gIA+7Fbmw41E=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=bsV+62YurNvDlxrMBphzQG/4LMalps6LU+gKjDVu2aHoDlXjvnPQqPyEEmU/h5ED9JZy34cc+65ULPAd0a8tF48RQkKwWrwO8GhThWcGOgQiOtT03WXUflUHSrS+cHzypdktCZ3ihLXHZBhDhcoonTPezrEOmEtgVm0PUediZss= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=towo.net header.i=towo AT towo DOT net header.a=rsa-sha256 header.s=s1-ionos header.b=0FIk5zzL DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7D4054BA2E16 X-UI-Sender-Class: 55c96926-9e95-11ee-ae09-1f7a4046a0f6 Message-ID: Date: Fri, 12 Jun 2026 12:15:20 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: wcwidth broken with gcc 16 To: cygwin AT cygwin DOT com References: <874ikpawdk DOT fsf AT Gerda DOT invalid> <8ff2ab8d-dfdc-459c-96f3-ed4a4f451440 AT towo DOT net> <0140C1F4-CA22-46DE-AE21-69C5427C59B5 AT unified-streaming DOT com> <4f885156-7772-43d7-ab72-c88f0a7d1e52 AT towo DOT net> <112594ad-3c25-4dad-b1bc-071b4951ed98 AT towo DOT net> <97f0f3c6-9f2c-429c-aa8e-875b7806b275 AT towo DOT net> <8733z9jpfj DOT fsf AT Gerda DOT invalid> <87pl2bab08 DOT fsf AT Gerda DOT invalid> <2a39e204-bd8b-4511-bd34-703899600e9e AT towo DOT net> <87ldcza133 DOT fsf AT Gerda DOT invalid> <21ca1d38-7b82-49af-b954-b83141237843 AT towo DOT net> <5c46f199-128c-4409-a354-9d3e1deb29bb AT towo DOT net> <87y0gyyqm2 DOT fsf AT Gerda DOT invalid> Autocrypt: addr=towo AT towo DOT net; keydata= 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 kQ== In-Reply-To: X-Provags-ID: V03:K1:EC4UJKVbHXH9pN8c4xPct5HZoU5xui4Bj92/3hZ5iOHzeVcsxd0 8//xRSSlAwJ4F7haH8DHO3z2fwBqZyWVuIK7+GVLkk2O4GWEQLgcPsEErEwUNmCLGy1GxFf ppLI2eLT3HZr+7NedEDi9ZFABOAfVBMWDSq+AoQsiWE0qY4dcVnEsEPSgAonOuVs6UBdO/2 1XSHpYZtU/9XvdU8P3B5Q== UI-OutboundReport: notjunk:1;M01:P0:v0v+cJJ7710=;baF+CzDynTz7huTfo+xIY5nFG1P QzQWVZyQOVdcri+dC+FusK+JKb7XOKnQSbqLxzEruYTy7kUTXYhiP9IHKFtwNbR15szrZdtnr YjRiZ5OGpgsflNgITDg9et5hE/EeQkgw0WfzqfzErp+jJXhb8aaoZHLSvFmKR4rPgs7c8b3OE Yr58NsbXJeutsmMSJuVIuD482Vhw9qt2fg4bwNYi+RnT+obPPctbiM25JHju9ZI4Ofy+r4+MO TECJ4p37aytW5o0hWuJdcUjX0ZFz8lJ/wUs6P59E3sr75XbTevoKNQ1AYaaIt4D1C9zFUubeg ySEi5ozm6zHC4H0E7S2oaS2BSkCf33HGl8CCeXnq39vHq+p60YaBEnj4Pvj0icHWIsC0xW71t xoimW9mPN+Ko+Qfzl5A6MNDBa96+JpWxNfAHfMe3hlcL+2OyBd/cOlMH+/vtElrfOimOIywOa hyBjQjPgzEX9zLcnfExAZbAaLpq6S5v0AeMpsAWdnpqKG+4o8BXqxdSpQb42bishHVnhRPPoz vlDRkj4CSM97I7ZEChFYBoW8zB/TO82A/bo1SbxMDzbJRFGbt40ZMYltPZxMZ/HJWynGjksXo JkuApZuzS6KcQe3UAEsJssqm2gWAaUVnYnriTzATkY9K0RkR/RwMTs/GVKBPzW9J1+32wIrZC MGM3Uf4SE2I1zryKI6KOMr49vH9WGA5uPTEhIAToo2O40FC4QOJzR+tjE1DPYV/G59wwErZw/ 5vTbH1pURmvvDB/hidbagOJ6txcL7mQK+y1JXqhyTayq4qRrx5zEktCDg18qFkD9VkhH6X2IH NqOC7wb8jrsWc5ul+bWVMppqhTekZbqBEMHtJB4i+Q/rxho2IE8uxOULT/A1KD2ZZuNlCbHjz SsK53hrxhoLBkXdf0Pp6yBoVO4Oht3c2ZnxH+jlJMoZBpcqtqfb73rBG0Rx4PuazOdEIV7hSI DufilV9iCutwUP2VVHe8EEGgWBSmwPnyy7wSsZAUdYHmhlZ0QkUo8fSDMR+kndKi7uN+ZjRdI MIr7IaCKipLYt9Dd61U/mBR8u253rRpZF26Q2XT60CydCeAd5+s/R2qeyzo/qMqadLXvH/dbJ UyQTzIRlbY2wPczKkQO/k+ek9gm/Db6BDdiotZBwV8r7Q1+WP2JvUFsIJ1SaMFbR7nLv4ljYi jLNFTFMY1CftgN04nDjDuUAfXVCbJdnuXktHMtVmKsvtM4vd/shBYktfjU9IFH1WyDFf/8fYn s/td5gmdn9z4ECVijQ3a1gmV/Qg0j5Rrx0ctXL5Hq2S3NeR3N7mi5aYFSKKdtN9joVhRvqIru KC+Umt9TGBykvsvGtS/LeMOqUfjnrsY7wk4dvdy9wDd910tSgdTHwYFMieWbs/UkSyx7UgMz3 BxCDWI4VdA5yf5mhG2G+JmcXekKcnSG1aCUu3X6w+EZ9EwSvvpvS9sza9gmPKFcX0F8VQkeLb DayZC0z5fZiBjalW0voyS5H1M9hsQtMLpm5GAmFrQaanG87dpXgm89dVARtjpgSLwziQ5D8C/ pWhx5XFwPhiKSjNzlWVpHEe9ZQg0C1WrdbtNQGFDvw4AXSnmXHvDi1u6kIDl/1S4IQxQ/xqa+ p90ISXI2R0/KGCwaXmqlDVLdsffOufXest661lIH9MZU0qhBeJ8DBTkZYv+cQqSRs7QMiCvPG ZANBMBvSuBKbr7MjKbq+SlhbFyUg04cBarCimcnRosvlWEoeJ43jqrdTm3LhKp1zEHhVuA6AY VLYcSdb7czHC0RsmOqr1GWQ3hCx1Ne0hFUC0JsuT98KoQT56jVczhVETNFGS86Z8R0p4rRP2I +D58Nd6qOMcCktlccyvrOAr1c/DGpqdV5bt20jqqEKxooh33cuzo8LXHTmOMX05VcpPpDp2rM B4FoRjfmQC6TfhsmtP7D3g6LIHyZFcYQoCENlw= X-BeenThere: cygwin AT cygwin DOT com X-Mailman-Version: 2.1.30 Precedence: list List-Id: General Cygwin discussions and problem reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Thomas Wolff via Cygwin Reply-To: Thomas Wolff Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: cygwin-bounces~archive-cygwin=delorie DOT com AT cygwin DOT com Sender: "Cygwin" Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by delorie.com id 65CAFknK3691085 Hi Doug, Am 02.06.2026 um 20:43 schrieb Doug Henderson via Cygwin: > On Tue, Jun 2, 2026 at 1:46 AM Thomas Wolff via Cygwin > wrote: > > Thomas Wolff, et. al., > > I have been carefully following this discussion of technical issues, API > conformance, and related issues,. > > There has been no significant discussion of the user experience that > depends on the resolution of this problem. > > Will non-BMP Unicode code points display correctly in terminal windows > (that use an appropriate font), e.g. mintty? I noticed the problem when I compiled mintty on a system where I had installed the test release of gcc 16 and various display widths were wrong, actually also within the BMP. So a fix was needed and it turned out that the issue was raised by, as I still think, wrong sign-extension of a 16-bit value to a 32-bit parameter by gcc 16 where previous gcc versions had only applied unsigned bit extension. Well, for subtle reasons, this was not accepted as a bug in gcc, so the cygwin API had to be adjusted. About non-BMP characters, requesting their width with the wcwidth function never used to work (my first plan was to make it work but this was rejected as not standard-conformant and in fact would not have been portable so actually useless in the first place). If a program wants to determine the locale width of a non-BMP character on a UTF-16-based system, it needs to split it into its Unicode surrogates and use the wcswidth function. This was also done by mintty already, so there was no non-BMP-specific problem. This will be handled under-the-hood by mintty, applications can use UTF-8 4-byte sequences towards the terminal of course. > Non-BMP Unicode code points include emojis, mathematical script glyphs, and many others. > > For me, I care if a small Python script like: > > $ type main.py > print("U+01D49E ‹𝒞› GC=Lu MATHEMATICAL SCRIPT CAPITAL C") > > outputs: > U+01D49E ‹𝒞› GC=Lu MATHEMATICAL SCRIPT CAPITAL C Your test case does not cover the problem. Plain output will always appear properly as long as you don't reach the end of the line. The question is whether for example python has an idea of current cursor position and whether it is consistent with output. Maybe you can try to evaluate that too. > on Windows Terminal, as expected > > and when running cygwin in a mintty window: > > $ uname -a > CYGWIN_NT-10.0-26200 mercury 3.6.9-1.x86_64 2026-04-21 15:46 UTC x86_64 > Cygwin > $ mintty --version > mintty 3.8.2 (Cygwin-x86_64) > $ date > Jun 2, 2026 11:36:33 > $ python3 -V > Python 3.12.12 > $ cat main.py > print("U+01D49E ‹𝒞› GC=Lu MATHEMATICAL SCRIPT CAPITAL C") > $ python3 main.py > U+01D49E ‹𝒞› GC=Lu MATHEMATICAL SCRIPT CAPITAL C > > correctly displays the Mathematical Script Capital C glyph as seen in the > attached screen capture. > > If the resolution of this problem changes "our" user experience, that will > be another problem. > > As an after thought, I may be seeing success due to the byte stream > containing UTF-8 4-byte sequences all the way through Windows 11 APIs, > without any conversions to UTF-16 or UTF-32. > > I am not so up-to-date with C as to rattle off a demo in seconds, as I can > in Python. I would like to see such a minimal C demo program that I can try > with cmd in WT, with MINGW64 in mintty, and with cygwin in mintty. The demo > should send UTF-8 4-byte, UTF-16 2-short, and UTF-32 1-long characters, if > possible. TIA. > > Just my take, > Doug > > -- Doug Henderson, Calgary, Alberta, Canada - from gmail.com > -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple