frmatthew / exsurge

A JavaScript library for rendering Gregorian Chant in square note notation
MIT License
54 stars 13 forks source link

`use-drop-cap` attribute set to `false` does not work #91

Open tukusejssirs opened 3 years ago

tukusejssirs commented 3 years ago

I wanted to disable drop letter, but I can’t make it work. I simply used the code of the demo page, added the attribute and it still outputs the drop letter.

tukusejssirs commented 3 years ago

@bbloomf, sorry, I add here a note to a totally different issue: ctxt.rubricColor does not work in your fork. Could you help me out please?

Update:

ctxt.rubricColor actually works on asterisks, but not on versicles. I think we should make it consistent. Note: The only reason why I want to change the colour of ctxt.rubricColor is that I prefer #ff0000 to #dd0000.

Anyway, how could I change the notehead and clef colour?

bbloomf commented 3 years ago

Have you tried calling "ctxt.setRubricColor()" to set the rubric color? It looks like that should update color in both places. You could add a stylesheet to the SVG that has been output to update the color of the notations, something like

<style>
g.Notations {
    fill: #f00;
}
</style>

to make them all red

tukusejssirs commented 3 years ago

Thanks, @bbloomf, for trying and helping me. :+1:

However, running ctxt.setRubricColor() right after setting ctxt.rubricColor causes all characters that should be red to be in the colour of the lyrics (i.e. ctxt.lyricTextFont).

And adding g.Notations CSS in the head HTML section does not make any change.


In the end, I don’t see the rubrics colour as a big issue, as I can work around this by repalacing #d00 with #ff0000 in exsurge/dist/exsurge.min.js and then it works. Of course, IMHO it should be fixed.

What I can’t change (and can’t find a workaround for) is (1) disabling the drop letter (for a particular score, not in general like the rubrics colour); and (2) the clef and notehead colour (it is resiliently black).

Thanks in advance for your help!

Update:

Just to make it clear: by noteheads I mean the neumes without vertical bars (because those bars are already coloured as expected).

Also note that I wish I could change the empty noteheads inner colour. Currently, it is forced to use white.

All in all, I wish to change the foreground and background colours, while keeping the rubrics colour. Just a concrete example: on screen, I prefer to read green (#00ff00) text on black (#000000) background + red (#ff0000) rubrics.

Update 2:

A cannot change the colour of accents too.

Update 3:

While inspecting the ctxt object, I found a solution for the special characters (like versicle or response): they are not included in rubrics. (Anyway, from my point of view, even characters like * are not rubrics per se. Rubrics are textual guides and rules, not some special characters.)

Therefore the solution is as follows:

ctxt.rubricColor = '#ff0000'                 // For characters like `*`
ctxt.specialCharProperties.fill = '#ff0000'  // For characters like versicle or response

I still need to know, how to change the foreground colour of clefs, noteheads and accents, and background colour of empty notes …

tukusejssirs commented 3 years ago

BTW, Firefox says that mozImageSmoothingEnabled is deprecated and we should use it unprefixed (i.e. imageSmoothingEnabled).

Update: And also onmozfullscreenchange and onmozfullscreenerror are deprecated.

tukusejssirs commented 3 years ago

As for the empty note background colour (by default white): one needs to change #fff to the desired colour in Exsurge.Drawing.js (L179). For now, I have no idea how could I change it using a setting in ctxt.

tukusejssirs commented 3 years ago

Is there a way to scale up the whole score? I can change the font size (using ctxt.lyricTextSize and other *Size elements), but how can I scale the whole score?

Update:

I tried to change pixelRatio and glyphPunctumWidth, however, there was no visual change.

I can change the font sizes (using various *Size elements) and the following elements:

I cannot find an element to change the size of the notes, clef and accents (I presume the problem is the same as with the colour of these). With the current code, I might need to redefine the definitions of these symbols.