Real interval,
bool solid,
Real width,
- Real thickness)
+ Real vertical_line_thickness)
{
Real staff_space = Staff_symbol_referencer::staff_space (me);
- Real height = 0.6 * staff_space;
- Stencil stencil;
-
Real slope = (interval / 2.0 * staff_space) / width;
// Compensate optical illusion regarding vertical position of left
Real slope_correction = 0.2 * staff_space * sign (slope);
Real corrected_slope = slope + slope_correction / width;
- if (solid) // this will come handy for colorated flexae
+ Stencil stencil;
+ if (solid) // colorated flexae
{
Stencil solid_head
- = Lookup::beam (corrected_slope, width, height, 0.0);
+ = Lookup::beam (corrected_slope, width, staff_space, 0.0);
stencil.add_stencil (solid_head);
}
else // outline
{
+ /*
+ The thickness of the horizontal lines of the flexa shape
+ should be equal to that of the horizontal lines of the
+ neomensural brevis note head (see mf/parmesan-heads.mf).
+ */
+ Real const horizontal_line_thickness = staff_space * 0.35;
+
+ // URGH! vertical_line_thickness is adjustable (via thickness
+ // property), while horizontal_line_thickness is constant.
+ // Maybe both should be adjustable independently?
+
+ Real height = staff_space - horizontal_line_thickness;
+
Stencil left_edge
- = Lookup::beam (corrected_slope, thickness, height, 0.0);
+ = Lookup::beam (corrected_slope, vertical_line_thickness, height, 0.0);
stencil.add_stencil (left_edge);
Stencil right_edge
- = Lookup::beam (corrected_slope, thickness, height, 0.0);
- right_edge.translate_axis (width - thickness, X_AXIS);
- right_edge.translate_axis (corrected_slope * (width - thickness), Y_AXIS);
+ = Lookup::beam (corrected_slope, vertical_line_thickness, height, 0.0);
+ right_edge.translate_axis (width - vertical_line_thickness, X_AXIS);
+ right_edge.translate_axis ((width - vertical_line_thickness) *
+ corrected_slope, Y_AXIS);
stencil.add_stencil (right_edge);
Stencil bottom_edge
- = Lookup::beam (corrected_slope, width, thickness, 0.0);
+ = Lookup::beam (corrected_slope, width,
+ horizontal_line_thickness, 0.0);
bottom_edge.translate_axis (-0.5 * height, Y_AXIS);
stencil.add_stencil (bottom_edge);
Stencil top_edge
- = Lookup::beam (corrected_slope, width, thickness, 0.0);
+ = Lookup::beam (corrected_slope, width,
+ horizontal_line_thickness, 0.0);
top_edge.translate_axis (+0.5 * height, Y_AXIS);
stencil.add_stencil (top_edge);
}
% parameterized punctum
def punctum_char (expr verbose_name, internal_name,
left_stem, right_stem, linea, cavum,
- straight, auctum, direction_up, excentric, up_shift, down_shift, mag) =
+ straight, auctum, rev_auctum, direction_up,
+ excentric, up_shift, down_shift, mag) =
fet_beginchar(verbose_name, "s" & internal_name)
save b_h, a_w;
elseif auctum:
u_convexity# = -0.03ht#;
u_excentricity# = +0.25ht#;
+ elseif rev_auctum:
+ u_convexity# = -0.10ht#;
+ u_excentricity# = -0.12ht#;
else:
u_convexity# = -0.05ht#;
u_excentricity# = 0.0ht#; % dummy
save box_top, box_bt;
- if auctum:
+ if auctum or rev_auctum:
z1a = (0.00wd + linethickness/2, yoffs_bt);
z2a = (0.21wd, yoffs_bt + 1.0*convexity);
z3a = (0.42wd - linethickness/2,
% punctum
punctum_char("Ed. Vat. punctum", "vaticana.punctum",
false, false, false, false, false,
- false, false, false, false, false, 1.0);
+ false, false, false, false, false, false, 1.0);
% punctum cavum (for OpusTeX compatibility)
punctum_char("Ed. Vat. punctum cavum", "vaticana.punctum.cavum",
false, false, false, true, false,
- false, false, false, false, false, 1.0);
+ false, false, false, false, false, false, 1.0);
% linea punctum (for OpusTeX compatibility)
punctum_char("Ed. Vat. linea punctum", "vaticana.linea.punctum",
false, false, true, false, false,
- false, false, false, false, false, 1.0);
+ false, false, false, false, false, false, 1.0);
% linea punctum cavum (for OpusTeX compatibility)
punctum_char("Ed. Vat. linea punctum cavum", "vaticana.linea.punctum.cavum",
false, false, true, true, false,
- false, false, false, false, false, 1.0);
+ false, false, false, false, false, false, 1.0);
% punctum inclinatum
inclinatum_char("Ed. Vat. inclinatum", "vaticana.inclinatum",
% pes lower punctum
punctum_char("Ed. Vat. pes lower punctum", "vaticana.lpes",
false, false, false, false, true,
- false, true, false, false, false, 1.0);
+ false, false, true, false, false, false, 1.0);
% pes lower punctum
punctum_char("Ed. Vat. pes var lower punctum", "vaticana.vlpes",
false, false, false, false, true,
- false, true, false, false, true, 1.0);
+ false, false, true, false, false, true, 1.0);
% pes upper punctum
punctum_char("Ed. Vat. pes upper punctum", "vaticana.upes",
false, false, false, false, true,
- false, false, false, false, false, 1.0);
+ false, false, false, false, false, false, 1.0);
% pes upper punctum (shifted variation)
%
%
punctum_char("Ed. Vat. var pes upper punctum", "vaticana.vupes",
false, false, false, false, true,
- false, false, false, true, false, 1.0);
+ false, false, false, false, true, false, 1.0);
% small punctum as used in epiphonus
punctum_char("Ed. Vat. plica", "vaticana.plica",
false, false, false, false, false,
- false, false, false, false, false, 0.6);
+ false, false, false, false, false, false, 0.6);
+
+% small punctum as used in epiphonus
+punctum_char("Ed. Vat. var plica", "vaticana.vplica",
+ false, false, false, false, false,
+ false, true, false, false, false, true, 0.6);
% excentric punctum as used in epiphonus
punctum_char("Ed. Vat. epiphonus", "vaticana.epiphonus",
false, false, false, false, false,
- false, true, true, false, false, 1.0);
+ false, false, true, true, false, false, 1.0);
% excentric punctum as used in epiphonus (shifted variation)
%
%
punctum_char("Ed. Vat. var epiphonus", "vaticana.vepiphonus",
false, false, false, false, false,
- false, true, true, false, true, 1.0);
+ false, false, true, true, false, true, 1.0);
% small punctum as used in cephalicus
punctum_char("Ed. Vat. rev. plica", "vaticana.reverse.plica",
false, false, false, false, false,
- false, true, false, false, false, 0.6);
+ false, false, true, false, false, false, 0.6);
+
+% small punctum as used in cephalicus
+punctum_char("Ed. Vat. rev. var plica", "vaticana.reverse.vplica",
+ false, false, false, false, false,
+ false, true, true, false, false, true, 0.6);
% excentric punctum as used in cephalicus; without left stem
punctum_char("Ed. Vat. cephalicus", "vaticana.inner.cephalicus",
false, false, false, false, false,
- false, false, true, false, false, 1.0);
+ false, false, false, true, false, false, 1.0);
% excentric punctum as used in cephalicus; with left stem
punctum_char("Ed. Vat. cephalicus", "vaticana.cephalicus",
true, false, false, false, false,
- false, false, true, false, false, 1.0);
+ false, false, false, true, false, false, 1.0);
% quilisma
fet_beginchar("Ed. Vat. quilisma", "svaticana.quilisma")
% solesmes punctum auctum ascendens
punctum_char("Solesmes punctum auctum ascendens", "solesmes.auct.asc",
false, false, false, false, false,
- true, true, false, false, false, 1.0);
+ true, false, true, false, false, false, 1.0);
% solesmes punctum auctum descendens
punctum_char("Solesmes punctum auctum descendens", "solesmes.auct.desc",
false, false, false, false, false,
- true, false, false, false, false, 1.0);
+ true, false, false, false, false, false, 1.0);
% solesmes punctum inclinatum auctum
inclinatum_char("Solesmes punctum incl. auctum", "solesmes.incl.auctum",