+ if (font) {
+ /*
+ * The pangram used here is rather carefully
+ * constructed: it contains a sequence of very narrow
+ * letters (`jil') and a pair of adjacent very wide
+ * letters (`wm').
+ *
+ * If the user selects a proportional font, it will be
+ * coerced into fixed-width character cells when used
+ * in the actual terminal window. We therefore display
+ * it the same way in the preview pane, so as to show
+ * it the way it will actually be displayed - and we
+ * deliberately pick a pangram which will show the
+ * resulting miskerning at its worst.
+ *
+ * We aren't trying to sell people these fonts; we're
+ * trying to let them make an informed choice. Better
+ * that they find out the problems with using
+ * proportional fonts in terminal windows here than
+ * that they go to the effort of selecting their font
+ * and _then_ realise it was a mistake.
+ */
+ info->fontclass->draw_text(dctx, font,
+ 0, font->ascent,
+ L"bankrupt jilted showmen quiz convex fogey",
+ 41, FALSE, FALSE, font->width);
+ info->fontclass->draw_text(dctx, font,
+ 0, font->ascent + font->height,
+ L"BANKRUPT JILTED SHOWMEN QUIZ CONVEX FOGEY",
+ 41, FALSE, FALSE, font->width);
+ /*
+ * The ordering of punctuation here is also selected
+ * with some specific aims in mind. I put ` and '
+ * together because some software (and people) still
+ * use them as matched quotes no matter what Unicode
+ * might say on the matter, so people can quickly
+ * check whether they look silly in a candidate font.
+ * The sequence #_@ is there to let people judge the
+ * suitability of the underscore as an effectively
+ * alphabetic character (since that's how it's often
+ * used in practice, at least by programmers).
+ */
+ info->fontclass->draw_text(dctx, font,
+ 0, font->ascent + font->height * 2,
+ L"0123456789!?,.:;<>()[]{}\\/`'\"+*-=~#_@|%&^$",
+ 42, FALSE, FALSE, font->width);
+
+ info->fontclass->destroy(font);
+ }
+
+ sfree(sizename);
+}
+
+static void unifontsel_draw_preview_text(unifontsel_internal *fs)
+{
+ unifont_drawctx dctx;
+ GdkWindow *target;
+
+#ifndef NO_BACKING_PIXMAPS
+ target = fs->preview_pixmap;
+#else
+ target = gtk_widget_get_window(fs->preview_area);
+#endif
+ if (!target) /* we may be called when we haven't created everything yet */
+ return;
+
+ dctx.type = DRAWTYPE_DEFAULT;