FontFeature class Null safety

A feature tag and value that affect the selection of glyphs in a font.

Different fonts support different features. Consider using a tool such as wakamaifondue.com/ to examine your fonts to determine what features are available.

This example shows usage of several OpenType font features, including Small Caps (selected manually using the "smcp" code), old-style figures, fractional ligatures, and stylistic sets.
import 'dart:ui';

// ...

final TextStyle titleStyle = TextStyle(
  fontSize: 18,
  fontFeatures: const <FontFeature>[FontFeature.enable('smcp')],
  color: Colors.blueGrey[600],
);

// ...

Widget build(BuildContext context) {
  // The Cardo, Milonga and Raleway Dots fonts can be downloaded from
  // Google Fonts (https://www.google.com/fonts).
  return Scaffold(
    body: Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          const Spacer(flex: 5),
          Text('regular numbers have their place:', style: titleStyle),
          const Text('The 1972 cup final was a 1-1 draw.',
              style: TextStyle(
                fontFamily: 'Cardo',
                fontSize: 24,
              )),
          const Spacer(),
          Text('but old-style figures blend well with lower case:',
              style: titleStyle),
          const Text('The 1972 cup final was a 1-1 draw.',
              style: TextStyle(
                  fontFamily: 'Cardo',
                  fontSize: 24,
                  fontFeatures: <FontFeature>[FontFeature.oldstyleFigures()])),
          const Spacer(),
          const Divider(),
          const Spacer(),
          Text('fractions look better with a custom ligature:',
              style: titleStyle),
          const Text('Add 1/2 tsp of flour and stir.',
              style: TextStyle(
                  fontFamily: 'Milonga',
                  fontSize: 24,
                  fontFeatures: <FontFeature>[FontFeature.alternativeFractions()])),
          const Spacer(),
          const Divider(),
          const Spacer(),
          Text('multiple stylistic sets in one font:', style: titleStyle),
          const Text('Raleway Dots',
              style: TextStyle(fontFamily: 'Raleway Dots', fontSize: 48)),
          Text('Raleway Dots',
              style: TextStyle(
                fontFeatures: <FontFeature>[FontFeature.stylisticSet(1)],
                fontFamily: 'Raleway Dots',
                fontSize: 48,
              )),
          const Spacer(flex: 5),
        ],
      ),
    ),
  );
}

See also:

Constructors

FontFeature(String feature, [int value = 1])
Creates a FontFeature object, which can be added to a TextStyle to change how the engine selects glyphs when rendering text. [...]
const
FontFeature.alternative(int value)
Access alternative glyphs. (aalt) [...]
const
FontFeature.alternativeFractions()
Use alternative ligatures to represent fractions. (afrc) [...]
const
FontFeature.caseSensitiveForms()
Enable case-sensitive forms. (case) [...]
const
FontFeature.characterVariant(int value)
Select a character variant. (cv01 through cv99) [...]
factory
FontFeature.contextualAlternates()
Enable contextual alternates. (calt) [...]
const
FontFeature.denominator()
Display digits as denominators. (dnom) [...]
const
FontFeature.disable(String feature)
Create a FontFeature object that disables the feature with the given tag.
const
FontFeature.enable(String feature)
Create a FontFeature object that enables the feature with the given tag.
const
FontFeature.fractions()
Use ligatures to represent fractions. (afrc) [...]
const
FontFeature.historicalForms()
Use historical forms. (hist) [...]
const
FontFeature.historicalLigatures()
Use historical ligatures. (hlig) [...]
const
FontFeature.liningFigures()
Use lining figures. (lnum) [...]
const
FontFeature.localeAware({bool enable = true})
Use locale-specific glyphs. (locl) [...]
const
FontFeature.notationalForms([int value = 1])
Display alternative glyphs for numerals (alternate annotation forms). (nalt) [...]
const
FontFeature.numerators()
Display digits as numerators. (numr) [...]
const
FontFeature.oldstyleFigures()
Use oldstyle figures. (onum) [...]
const
FontFeature.ordinalForms()
Use ordinal forms for alphabetic glyphs. (ordn) [...]
const
FontFeature.proportionalFigures()
Use proportional (varying width) figures. (pnum) [...]
const
FontFeature.randomize()
Randomize the alternate forms used in text. (rand) [...]
const
FontFeature.scientificInferiors()
Use scientific inferiors. (sinf) [...]
const
FontFeature.slashedZero()
Use the slashed zero. (zero) [...]
const
FontFeature.stylisticAlternates()
Enable stylistic alternates. (salt) [...]
const
FontFeature.stylisticSet(int value)
Select a stylistic set. (ss01 through ss20) [...]
factory
FontFeature.subscripts()
Enable subscripts. (subs) [...]
const
FontFeature.superscripts()
Enable superscripts. (sups) [...]
const
FontFeature.swash([int value = 1])
Enable swash glyphs. (swsh) [...]
const
FontFeature.tabularFigures()
Use tabular (monospace) figures. (tnum) [...]
const

Properties

feature String
The tag that identifies the effect of this feature. Must consist of 4 ASCII characters (typically lowercase letters). [...]
final
hashCode int
The hash code for this object. [...]
read-only, override
runtimeType Type
A representation of the runtime type of the object.
read-only, inherited
value int
The value assigned to this feature. [...]
final

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed. [...]
inherited
toString() String
A string representation of this object. [...]
override

Operators

operator ==(Object other) bool
The equality operator. [...]
override