<a href="https://github.com/skosch/Crimson">Crimson</a> is useful for experimenting with the new approach, because it’s free and defines few of the features it could support. Here are the features defined in its latest version: | r | i | b | bi | sb si | |------+---+---+---+----+-------| | c2sc | ✓ | ✓ | ✓ | | | | kern | ✓ | ✓ | ✓ | ✓ | ✓ | | liga | | | | ✓ | | | onum | ✓ | ✓ | | ✓ | | | ordn | ✓ | | | | | | pnum | ✓ | ✓ | | ✓ | ✓ | | smcp | ✓ | ✓ | ✓ | | | | zero | ✓ | | | | | **Ligatures** It’s most surprising that `liga` is defined only in the bold italic face, so let’s fix that first. Here’s Crimson before we add the feature: \documentclass{article} \usepackage{fontspec} \setmainfont{Crimson} \begin{document} The five baffled officials flew off. \textit{The five baffled officials flew off.} \end{document} [![output of example][1]][1] Now here’s the fix: \documentclass{article} \usepackage{fontspec} \directlua{ fonts.handlers.otf.addfeature { name = "liga", { type = "ligature", data = { ['f_f'] = { "f", "f" }, ['f_i'] = { "f", "i" }, ['f_f_i'] = { "f", "f", "i" }, ['f_l'] = { "f", "l" }, ['f_f_l'] = { "f", "f", "l" }, ['T_h'] = { "T", "h" }, } }, "some ligatures" } } \setmainfont{Crimson} \begin{document} The five baffled officials flew off. \textit{The five baffled officials flew off.} \end{document} [![output of second example][2]][2] In `['f_i'] = { "f", "i" }`, `['f_i']` is the glyph name of the ligature, and `{ "f", "i" }` are the letters to be ligatured. So if your font calls the ligature “fi” rather than “f_i”, you should write `['fi'] = { "f", "i" }`. **Stylistic Alternates** Crimson has some alternate glyphs which cry out for a `calt` or `salt` feature. I haven’t yet figured out how `calt` works, even with feature files, so let’s do something easier, using `salt` to get a long-tailed Q: \documentclass{article} \usepackage{fontspec} \directlua{ fonts.handlers.otf.addfeature { name = "salt", { type = "alternate", data = { Q = "Q.alt01", } }, "long-tailed Q" } } \setmainfont{Crimson} \begin{document} Question \addfontfeature{RawFeature=+salt} Question \end{document} [![output of alternates example][3]][3] **Superiors** Here I’ve found the principle, or part of it, but it’s probably better not applied to Crimson, because superiors 4–9 and 0 are designed to sit higher than superiors 1–3, as is especially noticeable in note 10 below: \documentclass{article} \usepackage{fontspec,realscripts} % see Ulrike’s answer at tex.stackexchange.com/a/235302/7883 \renewcommand\footnotemarkfont{\addfontfeature{RawFeature={+sups}}} \renewcommand\fakesuperscript[1]{#1} \usepackage[paperwidth=180pt,paperheight=150pt,margin=12pt]{geometry} \directlua{ fonts.handlers.otf.addfeature { name = "sups", { type = "substitution", data = { one = "¹", two = "²", three = "³", four = "⁴", five = "⁵", six = "⁶", seven = "⁷", eight = "⁸", nine = "⁹", zero = "⁰", } }, "footnote figures" } } \setmainfont{Crimson} \begin{document} There\footnote{Note.} are\footnote{Note.} far\footnote{Note.} too\footnote{Note.} many\footnote{Note.} footnotes\footnote{Note.} in\footnote{Note.} this\footnote{Note.} little\footnote{Note.} sentence.\footnote{Note.} \end{document} [![sample of sups feature][4]][4] Unfortunately, this solution fails if you’ve selected any but the default numbers, say, old-style numbers. I don’t know how to get around that problem: adding a line such as `one.onum = "¹"` produces errors. **CAVEAT** I don’t really understand what I’ve done, and there may be better ways (which I’d be glad to learn about), but at least things are more or less working. [1]: https://i.sstatic.net/KHF6z.png [2]: https://i.sstatic.net/kO7ra.png [3]: https://i.sstatic.net/tLyEf.png [4]: https://i.sstatic.net/Yj8hu.png