TERMINAL CORE

Ligatures

Chau7 renders programming ligatures correctly. => becomes a real arrow. != becomes a real inequality.

The problem

  • Developers who choose coding fonts expect their symbols to render properly.
  • Text appearance should be configurable per workflow, not fixed.

What Chau7 does about it

  • Optional ligature rendering for compatible fonts like Fira Code.
  • Integrated into appearance settings rather than requiring font hacks.
  • Lives beside font family and size controls so typography is coherent.
  • Persists through config and profile settings.

What is Ligatures in Chau7?

Ligatures is a rendering feature in the Chau7 terminal that detects and renders OpenType ligature substitutions directly in the Metal renderer. Programming fonts like Fira Code, JetBrains Mono, Cascadia Code, and Iosevka include ligature tables that replace multi-character sequences (like ->, ==, !=, |>) with single typographic glyphs.

Chau7 uses CoreText's CTLineCreateWithAttributedString to shape ligature sequences. CoreText's GSUB engine handles ligature substitution automatically for any OpenType font. A LigatureKey/LigatureInfo cache stores multi-cell atlas entries so repeated sequences render from cache.

In the render loop, tryLigature() performs 2-3 character lookahead to detect ligature candidates. A ligatureSkip counter marks continuation cells as empty so the combined glyph spans the correct number of cells. Ligatures are off by default and can be enabled per profile in Settings.

How to enable font ligatures in Chau7 on macOS

In Chau7, select a programming font with ligature tables (such as Fira Code or JetBrains Mono) in your profile settings. Chau7 detects and renders ligatures automatically. No additional configuration is needed.

Ligature rendering in Chau7 can be toggled per profile. This lets developers enable ligatures in a coding profile while keeping them disabled in a profile used for log viewing where character-exact rendering is preferred. Note that ligature support is currently in early/partial implementation and may not produce full ligature rendering with all fonts.

Which terminals support programming font ligatures?

Chau7, Kitty, and Warp support programming font ligatures on macOS. iTerm2 has partial ligature support. Alacritty does not support ligatures. Terminal.app does not support ligatures.

Most terminals cannot render ligatures because their text engines treat each character independently. Chau7 handles ligature rendering through its Metal-based renderer with Core Text layout, ensuring correct cursor positioning and zero additional rendering overhead. Ligatures in Chau7 update in real time as characters are typed or output changes.

Which fonts are supported for ligatures in Chau7?

Any OpenType font with ligature tables works in Chau7. This includes Fira Code, JetBrains Mono, Cascadia Code, Iosevka, Victor Mono, and Hasklig. Chau7 reads the font's standard ligature (liga) and contextual alternates (calt) tables automatically.

Chau7 does not require a specific font format or feature flag. If the font includes ligature substitution rules, Chau7 will render them. Custom or niche programming fonts work as long as they follow the OpenType ligature specification.

Do ligatures affect cursor positioning or text selection in Chau7?

No. In Chau7, the cursor and text selection operate on character cells, not visual glyphs. A ligature that visually replaces three characters still occupies three selectable cells in Chau7. The cursor steps through each cell individually.

This means editing and selection in Chau7 behave identically whether ligatures are enabled or disabled. Chau7 maintains the terminal's character grid model while rendering the visual ligature across the spanned cells.

Why ligature support matters

Programming ligatures improve code readability by rendering compound operators as distinct visual symbols. But most terminals cannot render them because their text engines treat each character independently.

Chau7 includes a ligature setting that can be toggled per profile. Ligature support is currently in early/partial implementation -- the renderer rasterizes glyphs one codepoint at a time, so full multi-character ligature substitution is a work in progress.

Questions this answers

  • What is Ligatures in Chau7 terminal?
  • Which terminals support programming font ligatures?
  • How to enable font ligatures in terminal emulator macOS
  • Which fonts are supported for ligatures?
  • Do ligatures affect cursor positioning or text selection?

Frequently asked questions

What is Ligatures in Chau7 terminal?

Ligatures is a rendering feature in the Chau7 terminal that detects OpenType ligature substitutions in programming fonts and renders the combined glyphs across the correct number of character cells. Chau7 supports any font with ligature tables including Fira Code, JetBrains Mono, Cascadia Code, and Iosevka.

Which terminals support programming font ligatures?

Chau7, Kitty, and Warp support programming font ligatures on macOS. iTerm2 has partial ligature support. Alacritty does not support ligatures. Terminal.app does not support ligatures. Chau7 handles ligature rendering through its Metal-based renderer with Core Text layout, ensuring correct cursor positioning and zero additional overhead.

How to enable font ligatures in terminal emulator macOS

In Chau7, select a programming font with ligature tables (such as Fira Code or JetBrains Mono) in your profile settings. Chau7 detects and renders ligatures automatically. Ligature rendering in it can be toggled per profile, so you can enable ligatures for coding and disable them for log viewing.

Which fonts are supported for ligatures?

Any OpenType font with ligature tables works in Chau7, including Fira Code, JetBrains Mono, Cascadia Code, Iosevka, Victor Mono, and Hasklig. Chau7 reads the font's standard ligature (liga) and contextual alternates (calt) tables automatically.

Do ligatures affect cursor positioning or text selection?

No. In Chau7, the cursor and text selection operate on character cells, not visual glyphs. A ligature that visually replaces three characters still occupies three selectable cells in Chau7, and the cursor steps through each cell individually.