+ else
+ {
+ MPlist *pl;
+
+ MPLIST_DO (pl, font_group)
+ if (this_score < ((MFontList *) MPLIST_VAL (pl))->fonts[0].score)
+ break;
+ mplist_pop (plist);
+ mplist_push (pl, layouter, font_list);
+ }
+ }
+
+ /* We couldn't find an exact matching font that can display all
+ glyphs. Find one that can at least display all glyphs. */
+ MPLIST_DO (plist, font_group)
+ {
+ rfont = try_font_list (frame, MPLIST_VAL (plist), request,
+ MPLIST_KEY (plist), g, num, 1, 0);
+ if (rfont)
+ return rfont;
+ }
+
+ /* We couldn't find a font that can display all glyphs. Find an
+ exact matching font that can at least display the first
+ glyph. */
+ MPLIST_DO (plist, font_group)
+ {
+ rfont = try_font_list (frame, MPLIST_VAL (plist), request,
+ MPLIST_KEY (plist), g, num, 0, 1);
+ if (rfont)
+ return rfont;
+ }
+
+ /* Find any font that can at least display the first glyph. */
+ MPLIST_DO (plist, font_group)
+ {
+ rfont = try_font_list (frame, MPLIST_VAL (plist), request,
+ MPLIST_KEY (plist), g, num, 0, 0);
+ if (rfont)
+ return rfont;