Skip to content

Font Shaping

Advanced Font Shaping Options

The harfbuzz_features option allows specifying the features to enable when using harfbuzz for font shaping.

There is some light documentation here: but it boils down to allowing opentype feature names to be specified using syntax similar to the CSS font-feature-settings options: The OpenType spec lists a number of features here:

Options of likely interest will be:

If you want to disable ligatures in most fonts, then you may want to use a setting like this:

config.harfbuzz_features = { 'calt=0', 'clig=0', 'liga=0' }

Some fonts make available extended options via stylistic sets. If you use the Fira Code font, it lists available stylistic sets here:

and you can set them in wezterm:

-- Use this for a zero with a dot rather than a line through it
-- when using the Fira Code font
config.harfbuzz_features = { 'zero' }
Since: Version 20220101-133340-7edc5b5a

The feature described in this section requires version 20220101-133340-7edc5b5a of wezterm, or a more recent version.

You can specify harfbuzz_features on a per-font basis, rather than globally for all fonts:

config.font = wezterm.font {
  family = 'JetBrains Mono',
  harfbuzz_features = { 'calt=0', 'clig=0', 'liga=0' },

and this example disables ligatures for JetBrains Mono, but keeps the default for the other fonts in the fallback:

config.font = wezterm.font_with_fallback {
    family = 'JetBrains Mono',
    weight = 'Medium',
    harfbuzz_features = { 'calt=0', 'clig=0', 'liga=0' },
  { family = 'Terminus', weight = 'Bold' },
  'Noto Color Emoji',