Thank you Wolfgang, now it works partially (see the first attachment): it uses different optical sizes, but not always the right ones. \definefontfamily [default] [rm] [GaramondPremierPro] [opticalsize=yes] \setupbodyfont[default,12pt] \starttext \dostepwiserecurse {6} {22} {2} {\switchtobodyfont[#1pt] \purefontname\font: \input ward \blank} \stoptext My garamondpremierpro.lfg is a modified version of ebgaramond.lfg. While I was waiting for an answer to my mail, I made a modified version of type-imp-ebgaramond.mkiv: type-imp-garamondpremierpro.mkiv (second attachment). Then I tried this: \input type-imp-garamondpremierpro.mkiv \setupbodyfont[GaramondPremierPro,12pt] \starttext \dostepwiserecurse {6} {22} {2} {\switchtobodyfont[#1pt] \purefontname\font: \input ward \blank} \stoptext This works as expected (see third attachment): "GaramondPremierPro- Capt" under 8.5pt, then "GaramondPremierPro" until 13pt, then "GaramondPremierPro-Subh" until 21.5pt, then "GaramondPremierPro-Disp". How can I make it work with \definefontfamily? I prefer its simpler syntax to typescripts like "type-imp- garamondpremierpro.mkiv". I tried this: \definefontfamily [default] [rm] [GaramondPremierPro] [opticalsize=yes,goodies=GaramondPremierPro] \setupbodyfont[default,12pt] \starttext \dostepwiserecurse {6} {22} {2} {\switchtobodyfont[#1pt] \purefontname\font: \input ward \blank} \stoptext but it does not work as expected. The file garamondpremierpro.lfg gets loaded, but its contents are ignored when choosing the right optical size. How can I tell ConTeXt to use the optical sizes defined in my goodies file with \definefontfamily and without using type-imp- garamondpremierpro.mkiv typescripts?