Reference: https://musescore.org/en/node/82061 (forum thread)
Upon user request, adds a new character style for fret marks taken from a type used in several prints by different publishers in London between the last years of 16th c. and the beginning of 17th c.
Among them:
- Corkine's two lute books
- Some works by J. Dowland
- R. Dowland's _Varietie of Lute Lessons_
- Pilkington's _Ayres_
- Robinson's _Schoole of Musicke_
- "Lute Didactic" style scaled to be similar to other styles.
- Improved vertical alignments of glyph within each style.
- Several small fine tuning of individual shapes.
Only the font is changed; no changes to code.
Adds to the MScore and to the MScoreText fonts the two clef glyphs defined in the main fix ( https://github.com/musescore/MuseScore/pull/2241 ).
Also adds three more clefs with some probability of being added in the (not so distant) future and which presumably do not require any special management code-wise:
- "gClef8vbCClef" U+E056 (and its element "cClefCombining" U+E061)
- "semipitchedPercussionClef1" U+E06B
- "semipitchedPercussionClef2" U+E06C
The `glyphnames.json` includes the two glyphs already included in the main fix, so this fix can be merged after the main fix without mergins problems (or at least so I believe!).
__Reference__: discussion, screen-shots and background on style selection in the forum thread https://musescore.org/en/node/76561
__Data-wise__ changes:
Adds __4 new styles of fret marks__ for French tablatures:
- "Phalèse" from mid-XVI c. Phalèse prints (replaces the "Late Renaissance" style which was unsuccessful)
- "Bonneuil-de Visée" from 1686 print by Bonneuil of de Visée "Livre de pièces pour la guittarre"
- "Bonneuil-Gaultier" from late XVII prints by bonneuil of Gaultier works
- "Lute Didactic", exampled on Yisrael's well-known methods for lute, an 'abstract' style familiar to lutenists
Adds __two new styles of duration symbols_ of French origin:
- "French Baroque" which goes well with the "Bonneuil-de Visée" fret mark style;
- "French Baroque (headless)" which goes well with the "Bonneuil-de Visée" style.
__Code-wise__ changes:
Converts legacy names into newer ones.
__References__: Technology Preview forum post with discussion, screen-shots and links to additional threads https://musescore.org/en/node/81051
Implements the possibility to mix, in TAB's with note symbols at staff side, mensural value symbols (discreet glyphs) with the 'grid'-shaped beaming found in historical sources and commonly used in lute literature.
The beaming is implemented by special drawing of the `TabDurationSymbol` element holding the note value symbol, using drawing primitives instead of the relevant font glyph.
The user may choose between the two renderings (discreet glyph or beaming grid), on a chord-by-chord basis, by setting the chord `BeamMode` (via for instance the relevant palette): `AUTO` selects the glyph rendering, `beam start` the start of the grid and `beam middle` the continuation of the grid beamed to the previous element.
Typographic features of the grid (stem width, stem height and beam thickness) depend on the glyph style and are hard-coded in the style definition. As well as the number of beams for note value, which also depends on the note value style.
Also:
- Implements to possibility to force the display of a note value which would not be rendered by the current note value repetition setting, by setting the chord beam mode to any other value.
- Implements the 'no stem' chord setting for this TAB style, allowing to remove a note value symbol otherwise generated by the current repetition setting.
- Improves the detection of note value font metrics (still not perfect, though, as Qt `QFontMetricsF::tightboundingRect()` returns very approximated results)
- Fixes note value glyph scaling, when the staff scale is modified.
__References__:
dynamics kerning: https://musescore.org/en/node/74536
ottava glyphs: https://musescore.org/en/node/68271
Fixes:
- __Completed__ kerning of __dynamics__ glyphs, for a total of 13 kerning pairs, as many as in the original symbol font.
- __Added__ the glyphs in the SMuFL ranges U+E510-E51F (ottava) and U+EC90-EC98 (supplemental ottava).
- __Cleaned__ all glyphs of the MScoreText font, correcting a few wrong outline directions, adding all missing extrema (about two hundreds glyphs) and all-non integral coordinates. The exceptions being the three glyphs U+E651, U+E652, U+E655 (pedal 'P', pedal 'e', pedal 'star') which are possibly too complex/small to observe all the guide lines.
Supports 'standard' configuration for bass string notations in historic tablatures (lutes and other plucked instruments, as well as viols), both of the French and of the Italian style. This should fill the last 'big hole' in historic TAB support.
Bass strings (or bourdons) are extra strings in addition to the 6 'standard' strings, which are not represented by tab lines and were indicated by other typograhic devices in historic sources. Among the innumerable variations shown in sources, this implementation supports the following styles, chosen to be general enough to suit the majority of cases, without requiring new parameters in the TAB style dialogue box:
- French: the first 4 bass courses are indicated by a fret mark in the 'seventh' TAB position (below bottom string) with 0, 1, 2 or 3 slashes prefixed; other bass courses are indicated, also in the 'seventh' TAB position, by the string number (from 4 on) and cannot contain a fret mark (as they didn't in historic sources).
- Italian: the first 2 bass courses are indicated by a fret mark in the 'seventh' TAB position (abover top string) with 1 or 2 'ledger lines' underneath; other bass courses are indicated, also in the 'seventh' TAB position, by the string number (from 9 on) and cannot contain a fret mark (as they didn't in historic sources). Rhythm marks above these indication are raised to leave room for them.
Both styles do not blindly assume that French style is top-to-bottom and Italian is 'upside-down' -- as historic sources are -- but adapt to the actual string order of the TAB. The choice between the two styles depends on the TAB using numbers or letters for the fret marks.
The implementation does not try to detect if the TAB is really of a historic style and applies either bass string notation whenever more strings are used than there are TAB lines. If this proves unsuitable to modern usage, some better heuristics can probably be found.
For a discussion and some screen shots, see: https://musescore.org/en/node/67261
**Note entry**
During TAB note entry, if the instruments has more strings than the TAB has lines, the string cursor can be moved outside of the TAB body, one position below for 'top-to-bottom' TAB's and one position above for 'upside-down' TAB's.
Further up or down movements add, to the 'blue cursor rectangle', markers indicating which is the actual target string (the cursor does not actually move), equal to the marks a note in that string will receive (slashes, ledger lines or string ordinal, according to the style and the string); during input the user will then receive the same info as when reading entered notes.
Other Notes:
- the `InputStatus::_string` variable, holding the current target TAB string in TAB note entry, changed meaning from the __visual__ string index to the __physical__ string index: this allows a better containment of the peculiarities of the individual TAB styles within the `StaffStyle` class, leaving other classes somehow freer of concern about TAB visual order and other peculiarities. As this variable is only used with TAB's, this change should not affect other functions.
- Some calculation for rhythm symbols have been moved from `TabDurationSymbol::draw()` to `TabDurationSymbol::layout()`, hopefully speeding up the drawing process.
- In fonts for historic styles, '10' has been replaced by 'X' both in fret numbers and in string ordinals, as this is more common in historic sources. Currently, this is not configurable; an additional style parameter could be added in future, if there will be enough request for it.