OpenType substitution classes

I’ve been through the forum and gotten some info on this, and if I were experienced in this area, I’d probably be able to interpret the posts to get my answer. But I’m not, so here we are.

If I’m understanding correctly, Dorico supports OpenType fonts (that include automatic functions like GPOS and GSUB), but not OT features, like superiors and old-style numbers, right? That is, there’s no way to tell Dorico what you want?

So that means that if I want superiors in Dorico, I need to create a substitution class myself (or contextual substitution, or whatever it’s called), within the font, and trigger those class changes through keystrokes?

Yes, the Qt framework doesn’t support the advanced OpenType features, like small caps, alternates, etc.

I don’t know about your ‘workaround’ - I guess you can try!

Thanks. My thought is to use something like square brackets to trigger superiors, and close the brackets to return to normal. Just wanted to confirm Dorico doesn’t do that, so it all has to be functionality embedded in the font itself. @dspreadbury can you confirm that would be possible in Dorico?

I wonder if these features are on the horizon. Hearing it’s a limitation of Qt, rather than Dorico, makes me think probably not.

Ok, it seems that can’t be done either. For superscripts, I’ll need to create a dedicated ligature for every iteration.

Which superiors do you need? If you only need digits (for footnotes, perhaps), Unicode has dedicated codepoints for them: U+2070 (0), 00B9 (1), 00B2 (2), 00B3 (3), 2074-2079 (4-9). No need for advanced font features.

Thanks, I see that. A couple things:

  • They need to match Academico, which I’m using for all other characters
  • I also need flats and sharps, which I’ll have to do by modifying the Bravura glyphs
  • I want these to be inputted without needing Unicode, so I’ll need to assign them as ligatures still.

So I will probably end up creating ligatures for superscripted combinations of b2, b3, b4, etc and #2, #3, etc. up to… I don’t know… b13 and #13? Is that the max that alterations would typically go to?

Well, I’m back to say that Dorico does seem to support OT features: KERN, LIGA, and CALT. Didn’t know about the third one… that’ll be a huge help!

@dspreadbury can you confirm this? Do you know what additional OT features, if any, are planned for future Qt versions?

I believe CALT may be supported only on macOS and not on Windows, or at least that used to be the case (see e.g. here).

The Qt Company haven’t said anything publicly about their future plans for OpenType feature support. My guess is there are essentially no such plans. People have requested such features many times over the years (e.g. most recently here), but nothing has ever come of it.

At present, Qt by default uses OS-specific font rendering technology (i.e. DirectWrite on Windows and Core Text on macOS) but it does also include support for the cross-platform FreeType renderer, which itself has broader support for OpenType features than either of the default OS APIs. However, even when using FreeType, Qt provides no APIs to access advanced typographical features (so we would potentially have to write them ourselves), and more generally, switching to FreeType would potentially change (perhaps subtly, perhaps less so) the appearance of every Dorico project, and that might or might not be a trade-off worth making.

Well, I’m reaching the limit of my understanding on this topic, but Florian’s Figurato uses CALT I think, and it works fine on Windows.

@fkretlow is that accurate? Qt previously did not support CALT but now does?

For the record, I’m not asking for Dorico to add these things (though of course that would be great), just to know what is currently supported so I can work within that. Thanks!

When I began work on Figurato, Dorico supported KERN, LIGA and CALT, as you mentioned. I seem to remember that I experimented with mark-to-mark positioning (MARK, MKMK) but that didn’t work at least on one platform. My memory may be inaccurate here though.

Figurato makes heavy use of the CALT feature so that obviously works on both Mac and Windows.

2 Likes

Great, thanks. By the way, I really admire your font… it’s amazing how much functionality it has with so few glyphs.

Hi Daniel —

Now that Dorico 4 is out, I’m wondering again if there’s any update on future support for advanced OpenType features in Dorico. Having access to these features would allow all of our scores to look a lot better, more professional — especially being able to use true small caps and the two styles of figures.

Thanks —

2 Likes

As Daniel mentioned above, their hands are tied until Qt decides to support the features. I’m not sure the status of these things with the new qt release, but the buck stops there for the time being.

1 Like

Right. In that case, I wonder if there’s been a new decision on using the cross-platform FreeType renderer rather than the text engine built into Qt.

I know there are many things being worked on for the next version of Dorico, and everyone has their own priorities and ideas about what’s most important — but I do think this would be an amazing improvement to Dorico for many users, especially those who most care about the small details of their scores.

4 Likes

Switching to using FreeType isn’t a panacaea: firstly, if we switch to FreeType then there is a high likelihood that all existing Dorico projects will render a bit differently, potentially ending up spaced differently in both the horizontal and vertical dimensions. So it could be quite a disruptive change.

Secondly, although Qt itself does optionally allow the use of FreeType, it still provides no APIs to access deeper features within OpenType fonts even when using FreeType. So switching to FreeType alone would not make this any easier.

I suspect that the way this will end up happening is that we will implement support for these features into Qt ourselves, though this would require a significant investment of development effort and would come at the expense of other feature development in Dorico itself. So we’re not in a hurry to do it, although I quite agree that it would be beneficial in lots of ways.

4 Likes

That’s understandable, to be sure.

I’d also suspect that many of us who want to delve deeply into some of these typography features are probably already in the habits of tweaking our scores outside of Dorico for this very reason, and therefore have a means to accomplish our ends in the meantime.

1 Like

Dan’s word of the day:

:nerd_face:

Enjoyed that, thank you :slight_smile:

Do you have any suggestions for how to tweak scores outside of Dorico? I’m very pedantic about how things look, so it kills me when I something is just a little off with the typography.

I take nearly every single score I produce into Affinity Designer. From there you can adjust every single element on the page at a pixel level. It also has advance typography features (it is essentially an InDesign clone) which permits comprehensive tweaking.

I will say that there are things you do want to get right in Dorico of course: note spacing, slurs, stave spacing, etc. as some of those larger things can be a pill to try and take care of retroactively. I mostly keep AP for small nudges and typography stuff.

1 Like

Hi Romanos,
sorry for a probably dumb question: I have Affinity Designer (Photo and Publisher), but have not really opened Dorico PDFs in there. What import options do you use?