Hi Bruce and Hans ! Thank you very much for your answers, that helped me a lot. In fact, though I would love to switch to ConTeXt one day, I am still using LuaLaTeX — I am a slow learner and I know it will take me months to be able to achieve what I need for my job with ConTeXt and can do with LuaLaTeX and the Memoir class for the time being (despite sometimes being irritated by LaTeX limitations or oddities). I need the EB Garamond variable font for future jobs, but this font, provided by Google Fonts, is such a mess : kerning problems, unusable OpenType features that have to be rewritten from scratch, shifts in glyphs table… For sure, the original font by Georg Duffner was much better, but I need the variable version. Lots of fixing necessary, but thanks to fonts.handlers.otf.addfeature I have almost succeeded to make it a usable Garamond. Of course, it would be best to help Google improving this font, but I don’t have time yet. The actual problem was with the italic ligatures "a_s", "e_s", "é_s", "i_s" and "u_s", that should occur only at the end of words and not everywhere. Instead of removing the unwanted ligatures, I chose another way as soon as I understood how to fully use “current” to describe not only a single glyph, but a string if necessary — for instance, current={ { "a", "e", "eacute", "i", "u"}, {"s"} } Thanks for this wonderful tool ! Thomas Savary 1 le Grand-Plessis F-85340 L’Île-d’Olonne Tél. 06 22 82 61 34 https://compo85.fr/ Le samedi 25 décembre 2021, 00:04:51 CET Bruce Horrocks a écrit :
On 24 Dec 2021, at 18:34, Thomas Savary via ntg-context
wrote: Hello, dear list !
In order to fix a few bugs in some OpenType features included in EB Garamond font provided by Google Fonts, I am trying to remove some ligatures (erroneous in some contexts) with fonts.handlers.otf.addfeature.
I must be missing something, because I can't get it to work.
Here is a minimal —non working—example :-) (The attempted removal (“f_i” → “fi” only before “o”) is of course irrelevant. I chose it just for the sole purpose of this test, to provide a simple example. What I am trying to achieve is more complex, with other ligatures.)
fonts.handlers.otf.addfeature{
name = "unfio", type = "chainsubstitution", lookups = {
{ type = "multiple", data = { [ "f_i" ] = { "f", "i" } } }
} rules = {
{ after = { { "o" } }, current = { { "f_i" } }, lookups = { 1 } }
}
}
}
Could someone please explain to me what I did wrong ?
Firstly, you have an extra } in the example above.
Secondly, rules need to come inside a data section. Thus (untested):
fonts.handlers.otf.addfeature{ name = "unfio", type = "chainsubstitution", lookups = { { type = "substitution", data = { [ "f_i" ] = { "f", "i" } } } }, data = { rules = { { after = { { "o" } },