MuseJazz Curly-Brace switches to another font when beyond 2 staves

• Feb 21, 2021 - 04:28
Reported version
3.6
Type
Functional
Frequency
Once
Severity
S4 - Minor
Reproducibility
Always
Status
closed
Regression
No
Workaround
No
Project

1) Start Score with three staves + Switch to MuseJazz
2) Insert Curly Brace:
musejazz-span2-brace.png.png

3) Span to full 3 staves
Result:
musejazz-span3-brace.png

Made me question myself for a moment.
Should be easy to fix. Any takers?


Comments

FWIW, I'm not so sure this is easy. Braces are not just characters in a font - unlike pretty much all other symbols, they need to be sized dynamically. Fonts don't really supprpot that directly, so for most elements like this, we don't use font characters - we draw them as lines and curves etc (as for hairpins, slurs, and other lines). Probably there is some way to do this, but I doubt it's trivial.

Depending on the span different symbols are used for the brace (2 staves: brace, 3 staves: braceLarge, 4 or more staves: braceLarger).
The font MuseJazz contains all these different braces but the software could not use them because of lacking information in the font's meta data. By adding this information the correct braces are used:
Screenshot_20210322_084806.png

I'm now looking for other symbols which might suffer the same problem.

MuseJazz's (and Gonville's too, but that is lacking those extra glyhps anyhow) metadata.json is lacking everything in "glyphsWithAlternates": {}, and the entire "optionalGlyphs":{}:`section, not just

    "brace":{
        "alternates":[
                {
                        "codepoint":"U+F400",
                        "name":"braceSmall"
                },
                {
                        "codepoint":"U+F401",
                        "name":"braceLarge"
                },
                {
                        "codepoint":"U+F402",
                        "name":"braceLarger"
                },
                {
                        "codepoint":"U+F403",
                        "name":"braceFlat"
                }
        ]
},

and

 "optionalGlyphs":{
        "braceFlat":{
        "classes":[],
        "codepoint":"U+F403",
        "description":"Brace (flat)"
    },
    "braceLarge":{
        "classes":[],
        "codepoint":"U+F401",
        "description":"Brace (large)"
    },
    "braceLarger":{
        "classes":[],
        "codepoint":"U+F402",
        "description":"Brace (larger)"
    },
    "braceSmall":{
        "classes":[],
        "codepoint":"U+F400",
        "description":"Brace (small)"
    }
    }

But Leland is having only that too. Bravura, Emmentaler and Petaluma have a lot more.

This is exactly what I added to get the brace right. I'm now trying to figure out what other symbols could have similar issue before creating the PR. And indeed by looking at Bravura, Emmentaler and Petaluma. At least it's a new field for me :-)

Oh, I just added the glyphsWithAlternates and optionalGlyphs sections in the MuseJazz metadata and t works fine for me. Now reading the SMUFL specs and playing around with some python scripts to see what else is missing.

And that change doesn't seem to fix it for me (neither with nor without the optionaGlyphs)

Edit: now it does (without the optionaGlyphs at least)

Edit 2: and with too, if added at the right spot...