-static MRealizedFont *
-xfont_select (MFrame *frame, MFont *spec, MFont *request, int limited_size){
-
- MDisplayInfo *disp_info = FRAME_DEVICE (frame)->display_info;
- MSymbol family = FONT_PROPERTY (spec, MFONT_FAMILY);
- MSymbol registry = FONT_PROPERTY (spec, MFONT_REGISTRY);
- int requested_size = request->property[MFONT_SIZE];
- MRealizedFont *rfont;
- MPlist *plist;
- int i;
- MFont *best_font;
- int best_score, score;
-
- if (registry == Mnil
- || ! strchr (MSYMBOL_NAME (registry), '-'))
- return NULL;
-
- plist = mplist_get (disp_info->font_list, registry);
- if (! plist
- && ! (plist = xfont_registry_list (disp_info, registry)))
- return NULL;
- best_score = -1, best_font = NULL;
- if (family == Mnil)
- family = FONT_PROPERTY (request, MFONT_FAMILY);
- MPLIST_DO (plist, plist)
- {
- if (family == Mnil || family == MPLIST_KEY (plist))
- {
- MXFontList *xfont_table = MPLIST_VAL (plist);
-
- for (i = 0; i < xfont_table->used; i++)
- {
- MXFont *xfont = xfont_table->fonts + i;
- MFont *font = (MFont *) xfont;
- int size = requested_size / 10, s0, s1;
-
- for (s0 = size; s0 > 0 && ! HAVE_SIZE (xfont, s0); s0--);
- if (s0 * 10 == requested_size)
- /* Exact size match. */
- ;
- else if (xfont->sizes[0] & 1)
- /* Scalable font. */
- size = 0;
- else if (limited_size)
- /* We can't use a larger font. */
- continue;
- else if (s0 == 0)
- {
- for (s0 = size + 1; s0 < 64 && ! HAVE_SIZE (xfont, s0); s0++);
- if (s0 == 64)
- continue;
- size = s0;
- }
- else
- {
- for (s1 = size + (size - s0) - 1;
- s1 > size && HAVE_SIZE (xfont, s1); s1++);
- size = (s1 > size ? s1 : s0);
- }
- font->property[MFONT_SIZE] = size * 10;
+static MFont *
+xfont_select (MFrame *frame, MFont *font, int limited_size)
+{
+ MPlist *plist = mplist (), *pl;
+ int num = xfont_list (frame, plist, font, 0);
+ MFont *found = NULL;