Function: font-xlfd-name

font-xlfd-name is a function defined in font.c.

Signature

(font-xlfd-name FONT &optional FOLD-WILDCARDS)

Documentation

Return XLFD name of FONT.

FONT is a font-spec, font-entity, or font-object. If the name is too long for XLFD (maximum 255 chars), return nil. If the 2nd optional arg FOLD-WILDCARDS is non-nil, the consecutive wildcards are folded into one.

Probably introduced at or before Emacs version 23.1.

Source Code

// Defined in /usr/src/emacs/src/font.c
{
  char name[256];
  int namelen, pixel_size = 0;

  CHECK_FONT (font);

  if (FONT_OBJECT_P (font))
    {
      Lisp_Object font_name = AREF (font, FONT_NAME_INDEX);

      if (STRINGP (font_name)
	  && SDATA (font_name)[0] == '-')
	{
	  if (NILP (fold_wildcards))
	    return font_name;
	  lispstpcpy (name, font_name);
	  namelen = SBYTES (font_name);
	  goto done;
	}
      pixel_size = XFONT_OBJECT (font)->pixel_size;
    }
  namelen = font_unparse_xlfd (font, pixel_size, name, 256);
  if (namelen < 0)
    return Qnil;
 done:
  if (! NILP (fold_wildcards))
    {
      char *p0 = name, *p1;

      while ((p1 = strstr (p0, "-*-*")))
	{
	  memmove (p1, p1 + 2, (name + namelen + 1) - (p1 + 2));
	  namelen -= 2;
	  p0 = p1;
	}
    }

  return make_string (name, namelen);
}