+ if (registry == Mnil || registry == MPLIST_KEY (pl))
+ {
+ MPLIST_DO (p, MPLIST_VAL (pl))
+ if (family == Mnil || family == MPLIST_KEY (p))
+ {
+ MFont *fontx = MPLIST_VAL (p);
+
+ if (! font || (mfont__match_p (fontx, font, MFONT_REGISTRY)))
+ {
+ if (fontx->size != 0 && size)
+ {
+ if (fontx->multiple_sizes)
+ {
+ if (size < 60 || size > 290
+ || ! (fontx->size & (1 << (size / 10 - 6))))
+ continue;
+ }
+ else if (fontx->size != size)
+ continue;
+ }
+ mplist_push (plist, MPLIST_KEY (p), fontx);
+ num++;
+ if (maxnum > 0 && maxnum == num)
+ goto done;
+ }
+ }
+ }
+
+ done:
+ MDEBUG_PRINT1 (" %d found\n", num);
+ return num;
+}
+
+static void
+xfont_list_family_names (MFrame *frame, MPlist *plist)
+{
+ MDisplayInfo *disp_info = FRAME_DEVICE (frame)->display_info;
+ char **font_names;
+ int i, nfonts;
+ MSymbol last_family = Mnil;
+
+ font_names = XListFonts (disp_info->display,
+ "-*-*-*-*-*-*-*-*-*-*-*-*-*-*", 0x8000, &nfonts);
+ for (i = 0; i < nfonts; i++)