+ if (bracket_visibility)
+ {
+ Real ss = Staff_symbol_referencer::staff_space (me);
+ Real gap = 0.;
+
+ if (!num.extent (X_AXIS).is_empty ())
+ gap = num.extent (X_AXIS).length () + 1.0;
+
+ SCM fl = me->get_property ("bracket-flare");
+ SCM eh = me->get_property ("edge-height");
+ SCM sp = me->get_property ("shorten-pair");
+
+ Direction d = LEFT;
+ Drul_array<Real> height, flare, shorten;
+ do
+ {
+ flare[d] = height[d] = shorten[d] = 0.0;
+ if (is_number_pair (fl))
+ flare[d] += ss * scm_to_double (index_get_cell (fl, d));
+ if (is_number_pair (eh))
+ height[d] += -dir * ss * scm_to_double (index_get_cell (eh, d));
+ if (is_number_pair (sp))
+ shorten[d] += ss * scm_to_double (index_get_cell (sp, d));
+ }
+ while (flip (&d) != LEFT);
+
+ Stencil brack = make_bracket (me, Y_AXIS,
+ Offset (w, ry - ly),
+ height,
+ /*
+ 0.1 = more space at right due to italics
+ TODO: use italic correction of font.
+ */
+ Interval (-0.5, 0.5) * gap + 0.1,
+ flare, shorten);
+ mol.add_stencil (brack);
+ }
+
+ mol.translate_axis (ly, Y_AXIS);
+ mol.translate_axis (x0 - sp->get_bound (LEFT)->relative_coordinate (commonx, X_AXIS), X_AXIS);