- SCM p = gh_cons (gh_call1 (f, markup), alist_chain);
-
- Axis align = X_AXIS;
- SCM a = scm_assoc (ly_symbol2scm ("align"), p);
- if (gh_pair_p (a) && gh_number_p (gh_cdr (a)))
- align = (Axis)gh_scm2int (gh_cdr (a));
-
- Real staff_space = Staff_symbol_referencer::staff_space (me);
- Real kern = 0;
- SCM k = scm_assoc (ly_symbol2scm ("kern"), p);
- if (gh_pair_p (k) && gh_number_p (gh_cdr (k)))
- kern = gh_scm2double (gh_cdr (k)) * staff_space;
-
- Real raise = 0;
- SCM r = scm_assoc (ly_symbol2scm ("raise"), p);
- if (gh_pair_p (r) && gh_number_p (gh_cdr (r)))
- raise = gh_scm2double (gh_cdr (r)) * staff_space;
-
- Offset o (align == X_AXIS ? kern : 0,
- (align == Y_AXIS ? - kern : 0) + raise);
-
- Molecule mol;
- while (gh_pair_p (sentence))
- {
- Molecule m = text2molecule (me, gh_car (sentence), p);
- if (!m.empty_b ())
- {
- m.translate (o);
- mol.add_at_edge (align, align == X_AXIS ? RIGHT : DOWN, m, 0);
- }
- sentence = gh_cdr (sentence);
- }
- return mol;
+ SCM t = me->get_property ("text");
+ SCM chain = Font_interface::text_font_alist_chain (me);
+ return interpret_markup (me->get_layout ()->self_scm (), chain, t);