\score {
\notes \transpose c c' {
% Salicus
- \[ g \pes \oriscus a \virga b \]
+ \[ g \oriscus a \pes \virga b \]
}
\paper {
interscoreline = 1
\score {
\notes \transpose c c' {
% Salicus Auctus Descendens
- \[ g \pes \oriscus a \auctum \descendens b \]
+ \[ g \oriscus a \pes \auctum \descendens b \]
}
\paper {
interscoreline = 1
@refbugs
-Horizontal head alignment is broken in Pes Quassus, Pes Quassus Auctus
-Descendens, Quilisma Pes Auctus Descendens, Pes Initio Debilis, Pes
-Auctus Descendens Initio Debilis, Torculus Deminutus Initio Debilis,
-Porrectus Deminutus, Scandicus Auctus Descendens, Scandicus Deminutus,
-Salicus, and Salicus Auctus Descendens.
+Horizontal head alignment is broken in Pes Initio Debilis.
-Porrectus Auctus Descendens: wrong glyph for auctus descendens head.
-
-Torculus Deminutus: use cephalicus head without stem.
+Use special heads for lower/upper head of Pes only when heads are
+stacked.
@node Figured bass
@subsection Figured bass
private:
Real finish_primitive (Item *first_primitive,
Item *primitive,
+ int prefix_set,
int context_info,
String glyph_name,
int pitch_delta,
Real
Vaticana_ligature_engraver::finish_primitive (Item *first_primitive,
Item *primitive,
+ int prefix_set,
int context_info,
String glyph_name,
int pitch_delta,
if (context_info & FLEXA_LEFT)
is_stacked = false;
+ // ... or another pes
+ if (context_info & PES_LOWER)
+ is_stacked = false;
+
+ // ... or the previous note is a semivocalis or inclinatum
+ /* TODO:
+ if (prev_prefix_set & DEMINUTUM)
+ is_stacked = false;
+ */
+
// auctum head is never stacked upon preceding note
- if (context_info & AUCTUM)
+ if (prefix_set & AUCTUM)
+ is_stacked = false;
+
+ // virga is never stacked upon preceding note
+ if (prefix_set & VIRGA)
is_stacked = false;
- // semivocalis head of epiphonus or cephalicus is stacked upon
- // preceding head
- if (!String::compare (glyph_name, "vaticana_plica"))
- is_stacked = true; // semivocalis head of epiphonus
- if (!String::compare (glyph_name, "vaticana_reverse_plica"))
- if (context_info & PES_LOWER)
- {} // initio debilis => not stacked
- else
- is_stacked = true; // semivocalis head of cephalicus
+ // oriscus is never stacked upon preceding note
+ if (prefix_set & ORISCUS)
+ is_stacked = false;
+
+ if ((prefix_set & DEMINUTUM) &&
+ !(prefix_set & INCLINATUM) &&
+ (context_info & FLEXA_RIGHT))
+ is_stacked = true; // semivocalis head of deminutus form
if (is_stacked)
{
Item *first_primitive = 0;
Item *prev_primitive = 0;
+ int prev_prefix_set = 0;
int prev_context_info = 0;
int prev_pitch = 0;
int prev_pitch_delta = 0;
else
glyph_name = "vaticana_inclinatum";
else if (prefix_set & DEMINUTUM)
- if (pitch > prev_pitch)
+ if (primitive == first_primitive)
+ {
+ // initio debilis
+ glyph_name = "vaticana_reverse_plica";
+ }
+ else if (pitch > prev_pitch)
{
- prev_glyph_name = "vaticana_epiphonus";
+ // epiphonus
+ if (!(prev_context_info & FLEXA_RIGHT))
+ {
+ prev_glyph_name = "vaticana_epiphonus";
+ }
glyph_name = "vaticana_plica";
}
- else
+ else // (pitch <= prev_pitch)
{
- prev_glyph_name = "vaticana_cephalicus";
+ // cephalicus
+ if (!(prev_context_info & FLEXA_RIGHT))
+ {
+ if (prev_primitive == first_primitive)
+ {
+ prev_glyph_name = "vaticana_cephalicus";
+ }
+ else
+ {
+ prev_glyph_name = "vaticana_inner_cephalicus";
+ }
+ }
glyph_name = "vaticana_reverse_plica";
}
else if (prefix_set & (CAVUM | LINEA))
* Finish head of previous iteration for backend.
*/
prev_distance =
- finish_primitive (first_primitive, prev_primitive,
+ finish_primitive (first_primitive, prev_primitive, prev_prefix_set,
prev_context_info, prev_glyph_name, prev_pitch_delta,
flexa_width, join_thickness, prev_distance);
prev_primitive = primitive;
+ prev_prefix_set = prefix_set;
prev_context_info = context_info;
prev_pitch_delta = pitch - prev_pitch;
prev_pitch = pitch;
* Finish head of last iteration for backend.
*/
prev_distance =
- finish_primitive (first_primitive, prev_primitive,
+ finish_primitive (first_primitive, prev_primitive, prev_prefix_set,
prev_context_info, prev_glyph_name, prev_pitch_delta,
flexa_width, join_thickness, prev_distance);
false, false, false, false, false,
false, true, false, false, 0.7);
-% excentric punctum as used in cephalicus
+% excentric punctum as used in cephalicus; without left stem
+punctum_char("Ed. Vat. cephalicus", "vaticana_inner_cephalicus",
+ "vatinnercephalicushead",
+ false, false, false, false, false,
+ false, false, true, false, 1.0);
+
+% excentric punctum as used in cephalicus; with left stem
punctum_char("Ed. Vat. cephalicus", "vaticana_cephalicus",
"vatcephalicushead",
true, false, false, false, false,