In the last post I have shown what the SMuFL font layout is and how it can be used in LilyPond. In this post, we will have a closer look at the SMuFL compliant Bravura font and compare it to Feta, which is the default music font in LilyPond. Let’s look at the example from the snippets repository again:
When looking at the example above, you will notice that the Bravura font is very similar to Feta in many aspects. The accents and the up/down bow signs etc. are slightly narrower, the prall symbol is wider. In general, the font is a little heavier.
From the comparison above it is also noticeable that the integration into LilyPond is not finished yet. The staccato dots are shifted vertically, the accidentals and the fermata are not aligned correctly. The fact that there is no dynamic “n” (niente) in the Feta font is particularly visible. The list of open issues can also be found in the Readme.
The following examples show music glyphs from both fonts (Feta and Bravura) — mostly without proper musical context – and they are placed around the staff lines by hand. For this comparison, I am mostly interested in the choice of symbols, their look and relative size. Any flaws in positioning is neither the fault of LilyPond nor Bravura, but just mine, and should be ignored for now.
The treble clef is always a characteristic feature of a music notation software application and its default font. The Bravura clef is wider than the Feta clef and it offers dedicated ligatures for clef modifiers that are used to indicate octavations. I still prefer the classical octavations (first four clefs in the second line) over the alternatives (next two clefs). LilyPond uses an independent text font object for the octavation numbers. The default positions of clef modifiers are being revised as issue 3186. In contrast to LilyPond’s defaults, the bold italic font of Bravura’s modifiers matches the clef line width. In addition, I like the clef modifier to be printed between the staff lines in appropriate cases as shown for the
bass_15 clef. The last two clefs in the first staff line (after the bar line) show that a similar result is also possible with LilyPond and the Feta font, of course.
The “angles” in the French style octavated clef (number 7 in the second line) do not quite match the round and well designed look of the rest of the glyph. While this clef is relatively rare, the only time I saw it, it had the “angles” centered around the d” line and not around the c” space. LilyPond recently added two of the three clef variants which are missing in the first staff.
The notation elements for Gregorian music are similar to the corresponding Feta glyphs. Some look a bit nicer to me (e.g. the porrectus, second neume). The ancient music notation did not get the same attention as other topics in the history of LilyPond. The sharp edges of the porrectus and the inconsistent “stem” width of the cephalicus (fourth neume) show that. Here is a selection of neumes:
As the Bravura font is quite bold (even more than Feta), the thickness of staff lines, slurs and beams had to be adapted to match the style. This is automatically done by the
Missing Glyphs in Feta
Bravura (as shown in the documentation) covers a huge range of symbols for several reasons:
1. While Feta grew around the needs and use cases of the community, the SMuFL layout tries to cover any glyph that could ever be used.
2. It contains combinations of other glyphs.
3. Many glyphs in the SMuFL layout are intended for usage in a text environment and the layout specification already indicates that scoring programs might want to or should use their own primitives rather than the predefined combined glyphs. This is particularly true for line symbols like staff lines or bar lines.
4. In addition, LilyPond easily allows to rotate glyphs freely and to modify their position, size, aspect ratio etc. and does not need extra glyphs for that.
5. The user can combine and transform glyphs in LilyPond’s
\markup mode in LilyPond by the use of
\rotate, etc. and he can make use of
\path to insert arbitrary shapes just as easy as usual text.
In this respect, LilyPond isn’t lacking features as one might think when looking at the multitude of glyphs in SMuFL.
There are, however, useful and good looking symbols which are – to my knowledge – not present in the Feta font, and my goal is to find out what we can learn from the Bravura font:
- Numbers and a colon for tuplets and numbers for clef octavation. As the purpose of numbers can be very different in scores, multiple definitions of digits can be justified. On the other hand, LilyPond encourages consistency as it uses the same numbers at different places. LilyPond uses dedicated glyphs for the time signature, fingerings, volta brackets and rest counts. Bar numbers, ottava marks, rehearsal marks, fret numbers in tabulature, tuplet numbers use the standard text font by default. Italic versions of the Feta music numbers (e.g. for tuplets or ottava brackets) are not available.
Bravura contains dedicated number glyphs for time signatures, clef octavation, tuplets, figured bass and function theory.
By the way, Bravura also contains special accidentals for bass figures. The Bass figure numbers are significantly smaller compared to LilyPond and they are printed with increased font sizes in the following score while the “7” was reduced in size.
- Analysis glyphs. Apropos music theory: Bravura comes with symbols for Haupt- and Nebenstimme and for subdominant, dominant, double dominant seventh, etc. While it might be an advantage that such symbols follow the selected text font in LilyPond, composing the letters in a staff-size independent way is tedious. On the other hand, LilyPond is very flexible and text scripts can contain more than text: fret diagrams, harp pedals or — like in this picture — user defined postscript paths for the “-stimme” symbols.
- Clusters. Cluster notation (
\makeCluster) is available in LilyPond. But it is limited to clusters spanning multiple chords and does not follow the style of the Cowell cluster notation. In contrast to that, Bravura contains all necessary symbols to print clusters properly. Top and bottom parts of different notehead styles and durations can be combined into all kinds of clusters.
- Other symbols. The piano pedal mark is nearly identical to the Feta one. I haven’t seen the sostenuto pedal symbol in real scores, but I like the consistent look compared to the “Ped.” symbol. LilyPond uses the default font for this as well as for the ottava mark. For the latter, I would prefer it to be with a superscript “va” and printed in bold, however, like the precombined Bravura glyph does. The “Schleifer” ornament (which was requested multiple times on the mailing-list) is present as well as other very nicely shaped but perhaps a bit wide ornaments.
- SMuFL contains a large variety of vibrato wiggles and other wavy lines to indicate both the freqency and the amplitude. Those can be combined to various spanners. Even though I haven’t seen it in real-life scores, I like the vibrato sign which was already asked for on the lilypond-user mailing list, too. While symbols like these could be handy in plain LilyPond as well, the postscript functionality opens up a large number of possibilities.
Missing Glyphs in SMuFL
On the other hand, there are also glyphs in LilyPond which I could not find in the SMuFL specifications: Everything related to the Kievian square notation.
Bravura is a nice and bold music font and it can now be used in LilyPond. It is very carefully designed and astonishingly similar to the Feta font. In my opinion, Bravura is the first commercial music font which is almost up to the standard of Feta.
Feta is created by Metafont and comes with different font shapes adapted to the font size. This results in a consistent and even look that is difficult to achieve otherwise.
LilyPond already covers the range of symbols for common music notation as well as ancient music. Using primitives for many glyphs listed in SMuFL makes LilyPond very versatile and much easier to tweak. Furthermore, symbols can be composed of simpler ones like the function theory glyphs.
This article explicitly picked those symbols from which we might learn something. A few rare glyphs are indeed missing in Feta: italic (time-signature-like) music numbers, a dynamic “n” (niente), a fancy Sost symbol and the cluster glyphs. It is good to know that these glyphs from Bravura can now be included in LilyPond scores.