-
- /*
- * Flexa has no variable size cauda if its left head is
- * stacked on the right head. This is true for
- * cephalicus. Hence, remove the cauda.
- *
- * Urgh: for the current implementation, this rule only
- * applies for cephalicus; but it is a fundamental rule.
- * Therefore, the following line of code should be
- * placed somewhere else.
- */
- prev_primitive->set_grob_property ("add-cauda",
- gh_bool2scm(false));
- }
- glyph_name = "vaticana_reverse_plica";
- }
- else if (prefix_set & (CAVUM | LINEA))
- if ((prefix_set & CAVUM) && (prefix_set & LINEA))
- glyph_name = "vaticana_linea_punctum_cavum";
- else if (prefix_set & CAVUM)
- glyph_name = "vaticana_punctum_cavum";
- else
- glyph_name = "vaticana_linea_punctum";
- else if (prefix_set & AUCTUM)
- if (prefix_set & ASCENDENS)
- glyph_name = "solesmes_auct_asc";
- else
- glyph_name = "solesmes_auct_desc";
- else if ((context_info & STACKED_HEAD) &&
- (context_info & PES_UPPER))
- if (prev_delta_pitch > 1)
- glyph_name = "vaticana_upes";
- else
- glyph_name = "vaticana_vupes";
- else
- glyph_name = "vaticana_punctum";
-
- /*
- * This head needs a cauda, if it starts a flexa, is not the upper
- * head of a pes, and if it is a punctum.
- */
- if ((context_info & FLEXA_LEFT) && !(context_info & PES_UPPER))
- if (!String::compare (glyph_name, "vaticana_punctum"))
- primitive->set_grob_property ("add-cauda", gh_bool2scm(true));
-
- /*
- * Execptional rule for porrectus:
- *
- * If the current head is preceded by a \flexa and succeded by a
- * \pes (e.g. "a \flexa g \pes a"), then join the current head and
- * the previous head into a single curved flexa shape.
- */
- if ((context_info & FLEXA_RIGHT) && (context_info & PES_LOWER))
- {
- check_for_prefix_loss (prev_primitive);
- prev_glyph_name = "flexa";
- prev_primitive->set_grob_property ("flexa-height",
- gh_int2scm (prev_delta_pitch));
- prev_primitive->set_grob_property ("flexa-width",
- gh_double2scm (flexa_width));
- bool add_cauda = !(prev_prefix_set && PES_OR_FLEXA);
- prev_primitive->set_grob_property ("add-cauda",
- gh_bool2scm (add_cauda));
- check_for_prefix_loss (primitive);
- glyph_name = "";
- primitive->set_grob_property ("flexa-width",
- gh_double2scm (flexa_width));
- }
-
- /*
- * Exceptional rule for pes:
- *
- * If this head is stacked on the previous one due to a \pes, then
- * set the glyph of the previous head to that for this special
- * case, thereby avoiding potential vertical collision with the
- * current head.
- */
- if (prefix_set & PES_OR_FLEXA)
- {
- if ((context_info & PES_UPPER) && (context_info & STACKED_HEAD))