Apps Part of Lumina

OpenType Feature Playground

See which OpenType features and variable axes a font has, and what they do to your text.

More options

Try an example: ·

More about this tool

How it works

Upload a TTF, OTF or WOFF font to list its scripts, languages and OpenType features (ligatures, small caps, figures, stylistic sets, kerning …) and its variation axes. Switch features on or off and set axis values: the text is shaped with the font's own GSUB and GPOS lookups and drawn from its outlines, next to the browser defaults, with the features that change your text marked.

  • Scripts, language systems and features are read from the ScriptList and FeatureList of GSUB and GPOS; names follow the OpenType Layout tag registry (ssXX = stylistic set, cvXX = character variant).
  • Default features match what browsers apply to horizontal text (ccmp, locl, rlig, rclt, calt, liga, clig, rvrn, kern, mark, mkmk, dist, abvm, blwm, curs); your switches turn features on (smcp) or off (-liga). All selected GSUB lookups run in lookup-list order (types 1–7, the first alternate for type 3), then GPOS (types 1, 2 and 4–9).
  • Arabic and Devanagari text first gets Lumina's required shaping (joining forms, Indic reordering); other scripts are shaped from the character map in logical order on one line without bidi reordering.
  • Axis values are clamped to each axis range; outlines and advances come from gvar and HVAR at that location. GPOS adjustments are the default-instance values (variation deltas of GPOS are not applied). A feature "changes this text" when toggling it alone changes a glyph or a position.

Outlines are drawn for TrueType (glyf) fonts; CFF fonts list their features but are not drawn. WOFF2 is not read. Browsers can differ in details (font fallback, bidi, justification).

Sources

Part of Lumina

  • Lumina Photo editor & image toolkit

    Bring out what you saw. A free photo studio, right in your browser.

    Open Lumina

Related tools

How to use the OpenType Feature Playground

See which OpenType features and variable axes a font contains, switch them on or off and find out exactly what each one does to your text.

What it is for

Fonts often contain more than the default letters: small capitals, oldstyle or tabular figures, real fractions, slashed zeros, stylistic sets and kerning. Font menus rarely show them, and in CSS you have to know the four-letter tags. Upload a font and the playground lists every feature with its registered name, shapes your sample text with the font's own substitution (GSUB) and positioning (GPOS) rules, and marks the features that actually change your text.

Variable fonts get their axes too, such as weight or width, and the text is drawn at the location you set. The result includes the matching CSS. Lumina's Type Lab → Glyph Lab runs the same engine on your device and also shows the browser's own rendering next to it.

Worked example

We uploaded Noto Sans Regular, typed "Office 1/2 AV 0" and set Feature switches to smcp, zero, -liga.

  • Features in the font: 28; Features that change this text: 16; Glyphs changed from the defaults: 16.
  • With the defaults, "ffi" in Office becomes one ligature glyph. With small capitals on and ligatures off, the shaped glyphs read O f.sc f.sc i.sc c.sc e.sc.
  • kern (Kerning, GPOS, 3 lookups) is marked as changing this text because of the pair A–V; lnum (Lining Figures) is not, because the figures are already lining.
  • The CSS box suggests font-feature-settings: "liga" 0, "smcp" 1, "zero" 1;.

In a check in Chrome, five different feature combinations on Noto Sans gave the same line width as the engine to within 0.02 pixels at 44 px.

How to read the result

  • The drawing shows browser defaults on top and your settings below, drawn from the font's outlines.
  • OpenType features lists tag, name, the tables it lives in, how many lookups it has, whether browsers turn it on by default, your setting and whether it changes this text. A feature counts as changing the text when toggling it alone changes a glyph or a position.
  • Shaped glyphs shows each glyph with its name (from the font's post table), id, position and advance in font units.
  • Scripts and language systems tells you which languages have their own forms, for example TRK or DEU; enter one under language system tag to see localized forms.

Tips and common mistakes

  • Write switches as a list: smcp turns a feature on, -liga turns a default feature off, ss01=1 or kern=0 also work.
  • Axis values look like wght=650, wdth=90; values outside an axis range are clamped to it.
  • A feature that "does nothing" usually has no rule for the characters you typed. Try other text: fractions need a slash between digits, ordinals need 1st or 2o.
  • Stylistic sets and character variants are numbered; the font decides what they change.
  • Alternates with several choices use the first alternate here, as browsers do for a plain "salt" 1.

FAQ

Does it work with CFF (.otf) fonts?

The feature list, scripts and glyph sequence are exact for CFF fonts too, but their PostScript outlines are not drawn.

Are variable kerning values applied?

Outlines and advances follow the axis location through gvar and HVAR. GPOS adjustments use the default-instance values; variation deltas inside GPOS are not applied.

Is my font stored?

The tool uploads the file to the server for the calculation only. In Lumina Glyph Lab the font never leaves your device.

Guide last updated:

For scripts and AI agents

  • JSON API: POST https://luminafontfeatures.usefulweb.app/api/v1/calculate (same calculation as this page)
  • Interface description: OpenAPI 3.1 · AI guide: llms.txt
  • MCP server (Streamable HTTP): https://luminafontfeatures.usefulweb.app/mcp · tool name lumina_font_features
Example request
curl -s -X POST https://luminafontfeatures.usefulweb.app/api/v1/calculate \
  -H 'content-type: application/json' \
  -d '{…see OpenAPI examples…}'
Feedback · ideas & bug reports welcome