Subject: Re: bug#70989: 29.3; Calling isearch-forward when using Unifont throws error "Invalid font name"

From: Po Lu <[email-masked]>
Date: Sun, 19 May 2024 15:37:09 +0800

Eli Zaretskii <[email-masked]> writes:

> Sorry, I still don't understand what you are saying.  Could you please
> talk me through the code in that function, and tell where does
> "Sans-Serif" come from and how is it "injected" into the font's
> attributes?
>
> What I see there is the call to fond_intern_prop, and if the result is
> accepted by font_style_to_value as a valid value of FONT_WIDTH_INDEX,
> it is returned.  But "Sans-Serif" is not supposed to be a valid width
> of a font, so I'm confused.

Where does FONT_WIDTH_INDEX come into play?  The attribute responsible
is FONT_ADSTYLE_INDEX, which is set to "Sans-Serif" by:

	 font. */
      FT_Face ft_face;

      ASET (entity, FONT_ADSTYLE_INDEX, get_adstyle_property (p));
      if ((ft_library || FT_Init_FreeType (&ft_library) == 0)

in ftfont_pattern_entity.  The XLFD generated from a font with such an
adstyle is not parsable, the character `-' being the field separator in
XLFDs, and gives rise to parser errors such as Rodrigo encountered when
I-search, by proxy, attempted to deconstruct the XLFD back into a font
spec.

> In what string or symbol name that is being processed in
> get_adstyle_property?

Its return value.