Web lists-archives.com

Re: Cygwin fails to utilize Unicode replacement character




On Sep  5 15:18, Marco Atzeri wrote:
> Am 05.09.2018 um 13:58 schrieb Steven Penny:
> > On Wed, 5 Sep 2018 09:55:28, Corinna Vinschen wrote:
> 
> > Using this file:
> > 
> >     $ cat glyph.c
> >     #include <stdio.h>
> >     #include <windows.h>
> >     int main()
> >     {
> >       CONSOLE_FONT_INFOEX ta;
> >       ta.cbSize = sizeof ta;
> >       GetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), 0, &ta);
> >       HDC wh = GetDC(0);
> >       SelectObject(wh,
> >         CreateFontW(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ta.FaceName));
> >       WCHAR xr[4] = {0xFFFD, 0x2592, 0x25A1, 0x01C4};
> >       WORD zu[4];
> >       GetGlyphIndicesW(wh, xr, 4, zu, 1);
> >       printf("%ls:\n", ta.FaceName);
> >       for (int q = 0; q < 4; q++) {
> >         printf("  U+%04X: %s\n",
> >         xr[q], zu[q] == 0xffff ? "failure" : "success");
> >       }
> >     }
> > 
> > I get this result:
> > 
> >     DejaVu Sans Mono:
> >       U+FFFD: success
> >       U+2592: success
> >       U+25A1: success
> >       U+01C4: failure
> > 
> 
> Strange on W10 CMD I obtain
> 
> DejaVu Sans Mono  U+FFFD: failure
                 ^^^
You see this?  There's something really fishy here.  I see a similar
effect which somehow depends on arbitrary changes to the source file:

- Sometimes I get "DejaVu Sans Mono" in FaceName and all works well.
- Sometimes I get "DejaVu Sans Mono\1" or "DejaVu Sans Mono\6" and
  the subsequent GetGlyphIndicesW returns failures for many or all
  characters.
  
I'm trying to find what's affecting this for hours, but I don't get any
conclusive results :(


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat

Attachment: signature.asc
Description: PGP signature