User Guide Cancel

Working with Variable Font Axes

  1. After Effects User Guide
  2. Beta releases
    1. Beta Program Overview
    2. After Effects Beta Home
  3. Getting started
    1. Get started with After Effects
    2. What's new in After Effects 
    3. Release Notes | After Effects
    4. After Effects system requirements
    5. Keyboard shortcuts in After Effects
    6. Supported File formats | After Effects
    7. Hardware recommendations
    8. After Effects for Apple silicon
    9. Planning and setup
    10. Tip of the Day
  4. Workspaces
    1. General user interface items
    2. Get to know After Effects interface
    3. Workflows
    4. Workspaces, panels, and viewers
    5. Improved UI language support
  5. Projects and compositions
    1. Projects
    2. Composition basics
    3. Precomposing, nesting, and pre-rendering
    4. View detailed performance information with the Composition Profiler
    5. CINEMA 4D Composition Renderer
  6. Importing footage
    1. Preparing and importing still images
    2. Importing from After Effects and Adobe Premiere Pro
    3. Importing and interpreting video and audio
    4. Preparing and importing 3D image files
    5. Importing and interpreting footage items
    6. Import SVG files
    7. Working with footage items
    8. Detect edit points using Scene Edit Detection
    9. XMP metadata
  7. Text and Graphics
    1. Text
      1. Formatting characters and the Character panel
      2. Text effects
      3. Creating and editing text layers
      4. Formatting paragraphs and the Paragraph panel
      5. Extruding text and shape layers
      6. Animating text
      7. Examples and resources for text animation
      8. Live Text Templates
    2. Motion Graphics
      1. Work with Motion Graphics templates in After Effects
      2. Use expressions to create drop-down lists in Motion Graphics templates
      3. Work with Essential Properties to create Motion Graphics templates
      4. Replace images and videos in Motion Graphics templates and Essential Properties
      5. Animate faster and easier using the Properties panel
    3. Variable Font Axes
      1. Variable Font Axes support
      2. Working with Variable Font Axes
      3. Scripting support for Variable Font Axes
      4. FAQ for Variable Font Axes
  8. Drawing, Painting, and Paths
    1. Overview of shape layers, paths, and vector graphics
    2. Paint tools: Brush, Clone Stamp, and Eraser
    3. Taper shape strokes
    4. Shape attributes, paint operations, and path operations for shape layers
    5. Use Offset Paths shape effect to alter shapes
    6. Creating shapes
    7. Create masks
    8. Remove objects from your videos with the Content-Aware Fill panel
    9. Roto Brush and Refine Matte
    10. Create Nulls for Positional Properties and Paths
  9. Layers, Markers, and Camera
    1. Selecting and arranging layers
    2. Blending modes and layer styles
    3. 3D layers
    4. Layer properties
    5. Creating layers
    6. Managing layers
    7. Layer markers and composition markers
    8. Cameras, lights, and points of interest
  10. Animation, Keyframes, Motion Tracking, and Keying
    1. Animation
      1. Animation basics
      2. Animating with Puppet tools
      3. Managing and animating shape paths and masks
      4. Animating Sketch and Capture shapes using After Effects
      5. Assorted animation tools
      6. Work with Data-driven animation
    2. Keyframe
      1. Keyframe interpolation
      2. Setting, selecting, and deleting keyframes
      3. Editing, moving, and copying keyframes
    3. Motion tracking
      1. Tracking and stabilizing motion
      2. Face Tracking
      3. Mask Tracking
      4. Mask Reference
      5. Speed
      6. Time-stretching and time-remapping
      7. Timecode and time display units
    4. Keying
      1. Keying
      2. Keying effects
  11. Transparency and Compositing
    1. Compositing and transparency overview and resources
    2. Alpha channels and masks
    3. Track Mattes and Traveling Mattes
  12. Adjusting color
    1. Color basics
    2. Color management
    3. Color Correction effects
    4. OpenColorIO and ACES color management
    5. Enhanced HDR support
    6. HDR import and export 
  13. Effects and Animation Presets
    1. Effects and animation presets overview
    2. Effect list
    3. Effect Manager
    4. Simulation effects
    5. Stylize effects
    6. Audio effects
    7. Distort effects
    8. Perspective effects
    9. Channel effects
    10. Generate effects
    11. Time effects
    12. Transition effects
    13. The Rolling Shutter Repair effect
    14. Blur and Sharpen effects
    15. 3D Channel effects
    16. Utility effects
    17. Matte effects
    18. Noise and Grain effects
    19. Detail-preserving Upscale effect
    20. Obsolete effects
    21. Cycore plugins
  14. Expressions and Automation
    1. Expressions
      1. Expression basics
      2. Understanding the expression language
      3. Using expression controls
      4. Syntax differences between the JavaScript and Legacy ExtendScript expression engines
      5. Editing expressions
      6. Expression errors
      7. Using the Expressions editor
      8. Use expressions to edit and access text properties
      9. Expression language reference
      10. Expression examples
    2. Automation
      1. Automation
      2. Scripts
  15. Immersive video, VR, and 3D
    1. Construct VR environments in After Effects
    2. Apply immersive video effects
    3. Compositing tools for VR/360 videos
    4. Advanced 3D Renderer
    5. Import and add 3D models to your composition
    6. Import 3D models from Creative Cloud Libraries
    7. Create parametric meshes
    8. Image-Based Lighting
    9. Animated Environment Lights
    10. Enable lights to cast shadows
    11. Extract and animate lights and cameras from 3D models
    12. Tracking 3D camera movement
    13. Adjust Default Camera Settings for 3D compositions
    14. Cast and accept shadows
    15. Embedded 3D model animations
    16. Shadow Catcher
    17. 3D depth data extraction
    18. Modify materials properties of a 3D layer
    19. Apply Substance 3D materials
    20. Work in 3D Design Space
    21. 3D Transform Gizmos
    22. Single 3D Gizmo for multiple 3D layers
    23. Do more with 3D animation
    24. Preview changes to 3D designs real time with the Mercury 3D engine
    25. Add responsive design to your graphics 
  16. Views and Previews
    1. Previewing
    2. Video preview with Mercury Transmit
    3. Modifying and using views
    4. Lossless Compressed Playback
  17. Rendering and Exporting
    1. Basics of rendering and exporting
    2. H.264 Encoding in After Effects
    3. Export an After Effects project as an Adobe Premiere Pro project
    4. Converting movies
    5. Multi-frame rendering
    6. Automated rendering and network rendering
    7. Rendering and exporting still images and still-image sequences
    8. Using the GoPro CineForm codec in After Effects
  18. Working with other applications
    1. Dynamic Link and After Effects
    2. Working with After Effects and other applications
      1. Export After Effects project as Premiere Pro project
    3. Sync Settings in After Effects
    4. Creative Cloud Libraries in After Effects
    5. Plug-ins
    6. Cinema 4D and Cineware
  19. Collaboration: Frame.io, and Team Projects
    1. Collaboration in Premiere Pro and After Effects
    2. Frame.io
      1. Install and activate Frame.io
      2. Use Frame.io with Premiere Pro and After Effects
      3. Frequently asked questions
    3. Team Projects
      1. Get Started with Team Projects
      2. Create a Team Project
      3. Collaborate with Team Projects
  20. Memory, storage, performance
    1. Memory and storage
    2. How After Effects handles low memory issues while previewing    
    3. Improve performance
    4. Preferences
    5. GPU and GPU driver requirements for After Effects
  21. Knowledge Base
    1. Known issues
    2. Fixed issues
    3. Frequently asked questions
    4. After Effects and macOS Ventura
    5. How After Effects handles low memory issues while previewing

Learn more about working with variable font axes in After Effects, including how to access them, add them as text animators, use selectors, and more.

  Use new beta features

Variable Font Axes support is now available for testing and feedback. Try it now in After Effects (beta).

On this page:

Adding Variable Font Axes

Before you begin:

To install a variable font, look for files with extensions such as .ttf, .otf, or .woff2. Many Adobe Fonts include variable versions (marked Variable), and you can use the Font Technology filter to locate them quickly. You can also find free variable fonts through resources like Google Fonts and other open-source repositories.

  1. Create a text layer and apply a variable font from the Character panel.

  2. Select the text layer, then in the Properties panel under the Font & Style section, select the Variable Font   icon to open a pop-up displaying all available axes for the current font.

    The Variable Font icon is selected and it has opened a pop-up displaying all available axes for the selected font.
    Use the Variable Font icon to display all available axes for the selected font.

  3. The pop-up will display the following for you to adjust the value using the scrubbing control:

    • Axis name: Descriptive name. For example, Weight and Width.
    • Current value: The current axis value.
    The Variable Font pop-up is open, allowing you to adjust the value using the scrubbing control.
    Adjust the axis value using the scrubbing control towork with the font’s weight, width, or other variable properties.

    If you have text selected (in text edit mode), axes show values for the selected characters, and if nothing is selected, the axes show values for the first character. Mixed values across selection will show the range or indicate variation

  4. Drag left or right on the value numbers to adjust them, and preview the changes instantly in the Composition panel. Alternatively, you can select the value to enter typing mode, type the desired number, and press Enter to apply.

    Each axis has a minimum and maximum value defined by the font, and scrubbing or typing is constrained to valid ranges. You can hover over the hot text to view the range.

    A hover over the hot text shows the minimum and maximum value defined by the font.
    Hovering over the hot text shows the minimum and maximum value defined by the font.

  5. Preview the changes that are reflected immediately in the Composition panel. When the width or spacing changes alter the layout, the text adjusts automatically.

If you want to make the first letter of a word heavier, create weight variations within a single word, or design custom ligatures or character combinations, variable fonts allow you to do so.

  1. Double-click the text layer to enter text edit mode.

  2. Select specific character(s) you want to modify, and open the Variable Font pop-up in the Properties panel by selecting the   icon.

    The Variable Font pop-up is open, allowing you to adjust the value using the scrubbing control.
    Use the Variable Font icon to display all available axes for the selected font.

  3. Adjust the axis values so that they apply only to selected characters.

    Note

    If you do not select a specific character, the values will apply to the first character only.

Adding Variable Font Axes as Text Animators

Text animators allow you to keyframe axis values over time and apply them to specific character ranges using selectors. There are multiple ways to add axis animators.

  • Using the Text Layer menu while editing text
  • Using Add Animator in the timeline
  • Using the Properties panel

Using the Text Layer menu while editing text

  1. Double-click the text layer to enter edit mode.

  2. Select and highlight characters you want to animate, or select none for all the characters.

  3. Right-click on the highlighted text in the Composition panel, then choose Animate Text > Variable Font Axes > [Axis Name].

    Text is highlighted in the Composition panel, and the Animate Text menu is open.
    Highlight text in the Composition panel, and use the Animate Text menu to view available variable font axes.

  4. A new text animator is created with the selected axis property.

Using Add Animator in the timeline

  1. Select the text layer in the Timeline panel, expand the to reveal the Animate button.

  2. Select the Animate   button, choose Variable Font Axes > [Axis Name].

    The Animate option for the Text layer is open and Variable Font Axes is selected.
    The Variable Font Axes option under Animate allows you to animate font properties, such as weight or width.

  3. A new animator with range selector is automatically created.

Using the Properties panel

  1. Select the text layer in the Timeline panel and navigate to the Properties panel.

  2. Go to the Text Animation section and select Add Animator > Variable Font Axes > [Axis Name].

    The Add Animator button is selected in the Properties panel.
    The Add Animator button is selected in the Properties panel to apply animation controls to text properties.

  3. A new animator with range selector is added.

When a new animator is added, After Effects creates a new Text Animator group that includes the Font Axis property and Range Selector, with the initial value set to the current axis value of the selected characters.

Working with Variable Font Axis Animators

When you add a variable font axis animator, After Effects creates the following hierarchy:

The Timeline panel displays the hierarchy when you add a Variable Font Axis Animator.
The Timeline panel displays the hierarchy when you add a Variable Font Axis Animator to a text layer.

Keyframing Axis Values

  1. Move the Current Time Indicator (CTI) to the desired time in the Timeline panel.

  2. Select the stopwatch   icon next to the axis property to create the first keyframe at the current value.

  3. Move the CTI to the new time, and use scrubbing or manual entry to change the value for the axis to create a new keyframe.

    The Timeline panel shows the keyframes for the Font Axis Weight property of the text layer.
    Add keyframes for the Font Axis Weight property of the text layer to animate changes in weight over time.

Animation examples

Try these examples if you are working with individual axes:

Example

Time and value changes

Result

Smooth weight transition

  • 0:00 – Weight: 300 (Light)
  • 1:00 – Weight: 700 (Bold)

Text gradually gets bolder

Width squeeze effect

  • 0:00 – Width: 100% (Normal)
    0:15 – Width: 50% (Condensed)
    1:00 – Width: 100% (Normal)

Text squeezes in then returns

Slant or Italic Animation

  • 0:00 – Slant: 0° (Upright)
  • 1:00 – Slant: -15° (Slanted)

Text leans into italic style

You can add multiple axis animators to the same text layer by adding the first axis, such as Weight, then the second axis, like Width, and the third axis, like Slant, and keyframing each independently or together. Try the following examples for combining multiple axes:

Example

Time and value changes

Result

Dynamic logo animation

Animator 1 - Font Axis Weight

  •   Time 0:00 - Weight: 300
  •   Time 1:00 - Weight: 900

Animator 2 - Font Axis Width 

  •   Time 0:00 - Width: 75%
  •   Time 1:00 - Width: 125%

Text grows bold and wide simultaneously

Character spacing for Variable Font animation

The Variable Font Spacing property controls how After Effects adjusts character spacing when animating font axes, such as weight or width. 

When you animate font settings, such as weight or width, letters can become wider or narrower. After Effects can automatically adjust the spacing between letters to keep things looking neat, and this setting lets you choose when and how those spacing fixes happen.

  1. Expand your text layer's Text property group.

  2. Under the More Options section, use the Variable Font Spacing dropdown menu to select from the following:

    • Adaptive: Applies per-character tracking compensation when appropriate to maintain natural spacing as font axes change. 
    • Per-Character: Always applies per-character tracking compensation. 
    • Default: Disables per-character tracking compensation entirely. Characters maintain their original spacing despite changes to the font axis. Useful for creative effects where you want the natural width changes of the font to affect the overall text layout.

Using Selectors with Variable Font Axes

Selectors control which characters an animator affects and how strongly. Variable font axis animators work with all selector types.

Range Selector (Default)

The Range Selector defines a continuous range of characters to animate. Here are some of the key properties:

Property

Description

Values

Start & End

Defines which characters are affected

0% – 100% (or index/units based)

  • 0% to 100% - affects all characters
  • 0% to 50% - first half of text
  • 50% to 100% - second half of text

Offset

Shifts the range along the text, and animating them creates "traveling" effects

Values: -∞ to +∞

Amount

Controls the strength of the effect

0% – 100%

  • 100% - Full axis value applied
  • 50% - Half the axis value applied
  • 0% - No effect (base font value)

Here are some examples you can try:

Example

Font axis setting

Range selector

Keyframes

Result

Weight wipe effect

Weight: 900 (Black)

  • Start: 0%
  • End: 0%

End keyframed from 0% - 100%

Bold weight “paints” across text from left to right

Traveling width wave

Width: 150% (Expanded)

  • Start: 0%
  • End: 20%
  • Offset: Keyframed from -20% to 120%

Offset animated over time

Expanded width travels through the text

Shape and Ease

Property

Options

Description

Shape

Square

Hard edge between affected and unaffected characters

Shape

Ramp Up

Gradual increase into the range

Shape

Ramp Down

Gradual decrease out of the range

Shape

Triangle

Gradual in and out

Shape

Round

Smooth bell curve

Shape

Smooth

Very gradual transitions

Ease

High Ease

Very gradual transitions

Ease

Low Ease

Sharper transitions

Here are an example you can try:

Example

Font axis setting

Range selector

Additional settings

Result

Smooth weight gradient

Font Axis Weight: 900

  • Start: 0%
  • End: 0%
  • Shape: Ramp Down
  • Ease High: 50%

Text starts bold and gradually lightens to base weight

Wiggly Selector

Applies random variations to axis values per character. Here are some of the key properties:

Property

Description

Results

Max Amount / Min Amount

Maximum and minimum variation from base value

Creates random fluctuation per character

Wiggles/Second

How fast the random values change

Higher means more frenetic movement

Correlation

How related neighboring characters are

  • 100% - All characters change together
  • 0% - Each character changes independently

Temporal Phase

Randomizes timing offset per character

Adds variation in timing

Here are some examples you can try:

Example

Font axis setting

Wiggly Selector settings

Additional settings

Result

Jittery Weight Effect

Weight: 400 (Regular)

  • Max Amount: 100%
  • Min Amount: -100%
  • Wiggles/Second: 5
  • Correlation: 0%
  • Font Axis Weight: 200 (Light to Bold range)

Each character’s weight randomly fluctuates independently

Breathing Width

Width: 100% (Normal)

  • Max Amount: 50%
  • Min Amount: -50%
  • Wiggles/Second: 1
  • Correlation: 80%

Text gently expands/contracts in waves

Expression Selector

Allows precise, mathematical control over which characters are affected using JavaScript expressions. Amount is the key properties:

  • Expression returns a value controlling the effect strength per character
  • Can access character index, position, time, and more

Here are some examples you can try:

Example

Expression (Amount)

Animator Axis

Result

Weight Based on Character Position

// In Expression Selector Amount property:
linear(textIndex, 1, textTotal, 0, 100)
  • Font Axis Weight: 900

First character lightest, last character boldest, linear gradient

Oscillating Slant

// In Expression Selector Amount property:
Math.sin(time * 3 + textIndex * 0.5) * 50 + 50
  • Slant: -15

Slant waves through text in a sine pattern

Below are some commonly used expression variables, along with many others available in After Effects:

  • textIndex - Current character index (1-based)
  • textTotal - Total number of characters
  • time - Current composition time

Combining multiple selectors

You can add multiple selectors to a single animator for complex effects.

  1. Expand the animator in the Timeline panel.

  2. Select the Add   dropdown next to the animator name.

  3. Select the selector type from the following available options:

    • Range Selector
    • Wiggly Selector
    • Expression Selector

    A new selector is added and combines with existing selectors. Adjustments to the Amount values are multiplied together. For example, a Range Selector at 50% multiplied by a Wiggly Selector at 80% yields a 40% final effect, allowing for smooth transitions between layers with random variations.

Here is an example you can try to achieve a smooth wave with variation, which combines a Range Selector and a Wiggly Selector to create a bold wave effect with subtle random jitter.

Component

Settings

Animator 1

  • Font Axis Weight: 900

Range Selector 1

  • Start: 0%
  • End: 30%
  • Offset: Animated -30% → 120%
  • Shape: Smooth

Wiggly Selector 1

  • Max Amount: 20%
  • Min Amount: -20%
  • Wiggles/Second: 3

Advanced techniques

Create different effects on different character ranges. Here are two such examples:

Example

Animator settings

Selector settings

First letter bold, rest normal

Font Axis Weight: 900 (Black)

Range Selector:

  • Based On: Characters
  • Start: 1
  • End: 1
  • Units: Index

Alternating weight

Animator 1 (Odd characters):

  • Font Axis Weight: 700
  • Expression Selector Amount: (textIndex % 2) * 100

Animator 2 (Even characters):

  • Font Axis Weight: 300
  • Expression Selector Amount: ((textIndex + 1) % 2) * 100

Two Expression Selectors controlling odd/even characters

Use expressions to link axis values to other animation properties. Here are two examples that you can consider:

1. Weight Driven by Position creates text weight changes based on the layer’s vertical position.

// In Font Axis Weight property:
linear(transform.position[1], 0, thisComp.height, 300, 900)

2. Width Responds to Audio creates text weight width reacts to audio amplitude.

// In Font Axis Width property:
audioLevel = thisComp.layer("Audio Layer").audio.audioLevels;
linear(audioLevel[0], -48, 0, 75, 150)

To copy and paste animators between text layers, expand the source layer in the Timeline panel, select the desired animator(s), copy them (Ctrl/Cmd + C), select the target text layer, and paste (Ctrl/Cmd + V).

Here are a few things to consider:

  • Axis animators transfer only if the target font has the same axes.
  • If the target font lacks an axis, the source axis will be pasted in.
  • You cannot paste from one axis to a different axis.
  • Range/Wiggly/Expression selectors copy correctly.
  • Keyframes are preserved.

When a text layer contains multiple fonts (mixed formatting). In Text Animators:

  • Animator applies axis changes per character based on each character's font
  • If a character's font doesn't have the axis, that character is unaffected
  • Range selectors still target character ranges, but the effect varies by font

Here is a simple example:

  • Text: "Hello" (mixed fonts)
    • "He" uses VariableFont A (has Weight axis)
    • "llo" uses VariableFont B (no Weight axis)
  • Animator: Font Axis Weight - 900
  • Result: "He" becomes bold, "llo" unchanged

Adobe, Inc.

Get help faster and easier

New user?