-
- if (gh_string_p (word))
- {
- /*
- UGH. Should read from font metric structure.
- */
- Real ex = me->lookup_l ()->text ("", "x",
- me->paper_l ()).extent (Y_AXIS).length ();
- Real em = me->lookup_l ()->text ("", "m",
- me->paper_l ()).extent (X_AXIS).length ();
-
- String w = ly_scm2string (word);
-
- String style;
- SCM s = scm_assoc (ly_symbol2scm ("style"), options_alist);
- if (s != SCM_BOOL_F)
- {
- style = ly_scm2string (gh_cdr (s));
- }
-
- Offset offset;
- int size = 0;
- /*
- urg, `type'
- */
- s = scm_assoc (ly_symbol2scm ("type"), options_alist);
- if (s != SCM_BOOL_F && ly_scm2string (gh_cdr (s)) == "super")
- {
- Real super_y = ex / 2;
- offset = Offset (0, super_y);
- if (!size)
- size = -2;
- }
-
- s = scm_assoc (ly_symbol2scm ("size"), options_alist);
- if (s != SCM_BOOL_F)
- {
- size = gh_scm2int (gh_cdr (s));
- }
-
- s = scm_assoc (ly_symbol2scm ("offset"), options_alist);
- if (s != SCM_BOOL_F)
- {
- // hmm
- SCM o = gh_cdr (s);
- if (gh_pair_p (o))
- offset = Offset (0, gh_scm2double (gh_cdr (o))) * ex;
- *x = gh_scm2double (gh_car (o)) * em;
- }
-
- Molecule mol;
- s = scm_assoc (ly_symbol2scm ("font"), options_alist);
- if (s != SCM_BOOL_F && ly_scm2string (gh_cdr (s)) == "feta")
- mol = me->paper_l ()->lookup_l (size)->afm_find (w);
- else
- mol = me->paper_l ()->lookup_l (size)->text (style, w, me->paper_l ());
-
- mol.translate (offset);
- return mol;
- }
- return Molecule ();