Function: internal-set-font-selection-order
internal-set-font-selection-order is a function defined in xfaces.c.
Signature
(internal-set-font-selection-order ORDER)
Documentation
Set font selection order for face font selection to ORDER.
ORDER must be a list of length 4 containing the symbols :width,
:height, :weight, and :slant. Face attributes appearing
first in ORDER are matched first, e.g. if :height appears before
:weight in ORDER, font selection first tries to find a font with
a suitable height, and then tries to match the font weight.
Value is ORDER.
Source Code
// Defined in /usr/src/emacs/src/xfaces.c
{
Lisp_Object list;
int i;
int indices[ARRAYELTS (font_sort_order)];
CHECK_LIST (order);
memset (indices, 0, sizeof indices);
i = 0;
for (list = order;
CONSP (list) && i < ARRAYELTS (indices);
list = XCDR (list), ++i)
{
Lisp_Object attr = XCAR (list);
int xlfd;
if (EQ (attr, QCwidth))
xlfd = XLFD_SWIDTH;
else if (EQ (attr, QCheight))
xlfd = XLFD_POINT_SIZE;
else if (EQ (attr, QCweight))
xlfd = XLFD_WEIGHT;
else if (EQ (attr, QCslant))
xlfd = XLFD_SLANT;
else
break;
if (indices[i] != 0)
break;
indices[i] = xlfd;
}
if (!NILP (list) || i != ARRAYELTS (indices))
signal_error ("Invalid font sort order", order);
for (i = 0; i < ARRAYELTS (font_sort_order); ++i)
if (indices[i] == 0)
signal_error ("Invalid font sort order", order);
if (memcmp (indices, font_sort_order, sizeof indices) != 0)
{
memcpy (font_sort_order, indices, sizeof font_sort_order);
free_all_realized_faces (Qnil);
}
font_update_sort_order (font_sort_order);
return Qnil;
}