+ Grob *me = unsmob_grob (smob);
+ extract_grob_set (me, "elements", elements);
+ SCM gl = SCM_EOL;
+ for (vsize i = elements.size ();
+ i-- && !scm_is_string (gl);)
+ gl = elements[i]->get_property ("glyph-name");
+
+ if (!scm_is_string (gl))
+ {
+ me->suicide ();
+ return SCM_UNSPECIFIED;
+ }
+
+ string type = ly_scm2string (gl);
+ if (type == "|:" || type == "||:")
+ type = ".|";
+ else if (type == ":|")
+ type = "|.";
+ else if (type == ":|:")
+ type = ".|.";
+ else if (type == ":|.|:")
+ type = "|.|";
+ else if (type == ":|.:")
+ type = "|.";
+ else if (type == "S" || type == "S|" || type == "|S")
+ type = "||";
+ else if (type == "S|:" || type == ".S|:")
+ type = ".|";
+ else if (type == ":|S" || type == ":|S.")
+ type = "|.";
+ else if (type == ":|S|:" || type == ":|S.|:")
+ type = "|._.|";
+ else if (type == "'")
+ type = "";
+
+ return ly_string2scm (type);