Summary
Figma’s text UI supports OpenType alternates for editable text through its typography controls. However, this capability is not exposed in the Plugin API.
The Plugin API currently appears to expose only read access through openTypeFeatures and getRangeOpenTypeFeatures.
There does not appear to be a way for plugins to apply OpenType features or alternates to a text range.
Because of this limitation, plugins cannot implement typography workflows that apply alternate glyphs while keeping text editable.
Key Distinctions
It is important to note that this request focuses specifically on Discrete OpenType Features (e.g., salt, ss01, swsh, onum) rather than Font Variations (Variable Font axes like Weight or Slant). While Figma already provides some control over variable axes, the ability to toggle specific glyph substitutions via API is missing.
Example
Imagine the word: babel
Suppose the active font provides several alternate forms for the letter “b”.
A user may want to select only the first “b” and apply an alternate glyph to that character.
However, enabling an OpenType feature may trigger contextual substitutions that also affect neighboring letters. A plugin should be able to apply an alternate only to the selected character or range, without affecting surrounding characters or other occurrences of the same word.
Requested API capabilities
Writable OpenType features for text ranges
Example:
setRangeOpenTypeFeatures(start, end, features)
Ability to inspect available OpenType features or alternates for the current font or text range
Ability to apply a specific alternate variant to a selected character or range
Use case
This would allow typography plugins where a user can simply select a character and choose an alternate from a small popup, without opening the right sidebar or navigating the full text panel.
Such workflows would make exploring font alternates significantly faster and more convenient directly on canvas.
