I’ve made a script to toggle between light & dark mode in RoboFont:
However, there is an unfortunate bump in dark mode: markColors that are high-opacity can greatly disrupt the dark palette.
That is, I have set up existing UFOs with marks that are opacity=1. However, these colors were selected with a light UI in mind, so they work well when surrounding glyph cell backgrounds are white, but not very well when they are dark. Here's my typical gray for glyphs made from Glyph Construction, disrupting an otherwise dark theme:
Glyph marks are much more effective when changed to a lower opacity, about 0.25–0.5. Here are the same marks but at 0.5:
Unfortunately, in my darkmode toggle script, the best I can do to get working mark colors for darkmode is to offer to change the opacity of marks if they are above a threshold. However, this requires me to change data in the actual UFO, and doesn’t work automatically for new UFOs I open. Because I have existing marks in many UFOs and don’t want to make meaningless commits, this is unappealing. Worse, for some users, they may have processes or scripts connected to specific glyph mark colors (e.g. a collaborative workflow that relies on different hues or opacities to show what is "done" vs "in progress," perhaps also connected to automatic proofing, etc).
If the RoboFont preferences had a setting like glyphCellDisplayedMarkOpacity with a 0–1 value, this problem could be very easily solved. E.g. a glyphCellMaxMarkOpacity of 0.5 would multiply all rendered mark opacities in the glyph view by 0.5. This would enable Font View preferences to be freely adjusted without requiring users to edit the actual mark color information in glyphs.
This isn't the only possible solution, but it seems like it might allow the flexibility needed here, with a minimum of additional required preferences for users.
Thanks for adding the glyph view preferences! This is a big bonus to an app I use daily. :)