+ Paper_def *pap = unsmob_paper (paper);
+ Font_metric *fm = select_font (pap, props);
+
+ SCM list = scm_list_n (ly_symbol2scm ("text"), markup, SCM_UNDEFINED);
+
+ if (dynamic_cast<Virtual_font_metric*> (fm))
+ {
+ /*
+ ARGH.
+ */
+ programming_error ("Can't use virtual font for text.");
+ }
+ else
+ list = fontify_atom (fm, list);
+
+ Box b = fm->text_dimension (ly_scm2string (markup));
+ return Molecule (b, list).smobbed_copy();