Fully-configurable OpenType features
The current variant selector only allows selecting one variant:

However many fonts allows:
- Applying multiple features at once;
- Have features that this list currently not covered (like
cv01); - Leverages GSUB's alternative substitutions, so the user needs to pass an integer parameter to the feature (like
aalt=1).
The enhancement might be changing this dropdown menu into a textbox and let user to input the feature tags they need, like kern, calt, cv03, cv05, aalt=2.
Internally the app actually does list all the not-covered variations, but main problem is the UI layer (UWP XAML) doesn't support them - it only supports a limited set of pre-defined features that do not allow configuration, and don't behave properly when applied together.
Like a lot of these tied to the UI layer, the solution is to either wait for Microsoft to release WinUI 3 (the open source variant of XAML, so that we can actually fix this properly at the UI layer), or re-write the character map grid entirely in DirectX (which is not impossible but leads to lot of extra work around input and keyboards and GPU handling and accessibility).
At the moment I'm not likely to attempt the latter (though anyone can feel free), and WinUI3 is at least 6 months away.
I do not think that regular text controls will support advanced typography that configurable — we should definitely move to custom rendering using IDWriteTextLayout.
@JohnnyWestlake I think a good solution is to rewrite only the rendering part of the glyph shape and leave the rest of the control as-is.

(Support for non-XAML supported OpenType tags for Type Ramp view only is currently in the Character-Map-UWP/Variations-Basic dev branch - this does not include anything with an integer parameter other than 1 for now)
@JohnnyWestlake Non-1 parameters are not frequently used (though some features like salt may use that). You may also need to turn off certain default features, like kern or calt.
@JohnnyWestlake And also, OpenType supports enabling multiple features simultaneously, like both cv01 and cv02.
Also, certain features used for shaping should be hidden. Enabling/Disabling these features are controlled by the shaping engine, not the user. They should always be “Off”. The list includes:
-
locl,ccmp,nukt,akhn,rvrn -
rphf,pref -
rkrf,abvf,blwf,half,pstf,vatu,cjct -
isol,init,medi,fina,stch -
abvs,blws,haln,pres,psts,rclt,rlig -
curs,dist,mark,abvm,blwm,mkmk,mset
The following features are considered typographic, so they should appear in the feature dropdown, but enabled by default:
-
calt,liga,clig,kern