1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
use serde::Deserialize;
use crate::StaffSpaces;
/// Recommended defaults for line widths, etc.
///
/// See the [SMuFL documentation](https://w3c.github.io/smufl/latest/specification/engravingdefaults.html).
#[derive(Debug, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct EngravingDefaults {
/// An array containing the text font family (or families, in descending
/// order of preference) that are ideally paired with this music font; this
/// list may also use the generic font family values defined in CSS, i.e.
/// serif, sans-serif, cursive, fantasy, and monospace. Generic font family
/// names should be listed after specific font families.
#[serde(default)]
pub text_font_family: Vec<String>,
/// The thickness of each staff line
pub staff_line_thickness: Option<StaffSpaces>,
/// The thickness of a stem
pub stem_thickness: Option<StaffSpaces>,
/// The thickness of a beam
pub beam_thickness: Option<StaffSpaces>,
/// The distance between the inner edge of the primary and outer edge of
/// subsequent secondary beams
pub beam_spacing: Option<StaffSpaces>,
/// The thickness of a leger line (normally somewhat thicker than a staff
/// line)
pub leger_line_thickness: Option<StaffSpaces>,
/// The amount by which a leger line should extend either side of a
/// notehead, scaled proportionally with the notehead's size, e.g. when
/// scaled down as a grace note
pub leger_line_extension: Option<StaffSpaces>,
/// The thickness of the end of a slur
pub slur_endpoint_thickness: Option<StaffSpaces>,
/// The thickness of the mid-point of a slur (i.e. its thickest point)
pub slur_midpoint_thickness: Option<StaffSpaces>,
/// The thickness of the end of a tie
pub tie_endpoint_thickness: Option<StaffSpaces>,
/// The thickness of the mid-point of a tie
pub tie_midpoint_thickness: Option<StaffSpaces>,
/// The thickness of a thin barline, e.g. a normal barline, or each of the
/// lines of a double barline
pub thin_barline_thickness: Option<StaffSpaces>,
/// The thickness of a thick barline, e.g. in a final barline or a repeat
/// barline
pub thick_barline_thickness: Option<StaffSpaces>,
/// The thickness of a dashed barline
pub dashed_barline_thickness: Option<StaffSpaces>,
/// The length of the dashes to be used in a dashed barline
pub dashed_barline_dash_length: Option<StaffSpaces>,
/// The length of the gap between dashes in a dashed barline
pub dashed_barline_gap_length: Option<StaffSpaces>,
/// The default distance between multiple thin barlines when locked
/// together, e.g. between two thin barlines making a double barline,
/// measured from the right-hand edge of the left barline to the left-hand
/// edge of the right barline.
pub barline_separation: Option<StaffSpaces>,
/// The default distance between a pair of thin and thick barlines when
/// locked together, e.g. between the thin and thick barlines making a final
/// barline, or between the thick and thin barlines making a start repeat
/// barline.
// TODO: This is missing in Bravura
// thin_thick_barline_separation: Option<StaffSpaces>,
/// The default horizontal distance between the dots and the inner barline
/// of a repeat barline, measured from the edge of the dots to the edge of
/// the barline.
pub repeat_barline_dot_separation: Option<StaffSpaces>,
/// The thickness of the vertical line of a bracket grouping staves together
pub bracket_thickness: Option<StaffSpaces>,
/// The thickness of the vertical line of a sub-bracket grouping staves
/// belonging to the same instrument together
pub sub_bracket_thickness: Option<StaffSpaces>,
/// The thickness of a crescendo/diminuendo hairpin
pub hairpin_thickness: Option<StaffSpaces>,
/// The thickness of the dashed line used for an octave line
pub octave_line_thickness: Option<StaffSpaces>,
/// The thickness of the line used for piano pedaling
pub pedal_line_thickness: Option<StaffSpaces>,
/// The thickness of the brackets drawn to indicate repeat endings
pub repeat_ending_line_thickness: Option<StaffSpaces>,
/// The thickness of the line used for the shaft of an arrow
pub arrow_shaft_thickness: Option<StaffSpaces>,
/// The thickness of the lyric extension line to indicate a melisma in vocal
/// music
pub lyric_line_thickness: Option<StaffSpaces>,
/// The thickness of a box drawn around text instructions (e.g. rehearsal
/// marks)
pub text_enclosure_thickness: Option<StaffSpaces>,
/// The thickness of the brackets drawn either side of tuplet numbers
pub tuplet_bracket_thickness: Option<StaffSpaces>,
/// The thickness of the horizontal line drawn between two vertical lines,
/// known as the H-bar, in a multi-bar rest
pub h_bar_thickness: Option<StaffSpaces>,
}