Subject: Re: bug#73730: 31.0.50; Support for color fonts on MS-Windows

From: Eli Zaretskii <[email-masked]>
Date: Sun, 20 Oct 2024 19:17:10 +0300

> Date: Sun, 20 Oct 2024 15:35:10 +0200
> From: Cecilio Pardo <[email-masked]>
> Cc: [email-masked], [email-masked]
> 
> The error is caused indeed by fonts with size == 0.
> 
>   - w32-find-non-USB-fonts calls open-font with size == nil.
>   - open-font gets the size from font-entity, that is also empty.
>   - It ends up calling CreateFontIndirect with a LOGFONT
>     with lfHeight == 0
>   - Then, w32-find-non-USB-fonts calls font-get-glyphs, which call
>     text_extents.
>   - text_extents on DirectWrite fails with a font of size 0, but
>     w32font_text_extents does return values that are not 0.
> 
> If the case of size <= 0, we are now falling back to
> w32font_text_extents.

Maybe it's better to use some default size in text_extents instead?
The pixel size of the default font is known (see FRAME_LINE_HEIGHT),
so maybe just use it if you get a font of size zero?  That could be a
more future-proof fix, since we could get such fonts in other
situations as well.

Regardless, we should keep the strategy of falling back to the old
code if DirectWrite fails.

Thanks.