Skip to main content

Color Emoji

Pragtical supports color emoji in documents and interface text. To enable them, add a color emoji font after your regular text font in the fallback list. The regular font continues to render code, while the fallback supplies missing emoji characters.

Color emoji rendered with Noto-COLRv1.ttf in Pragtical

Download the Font​

We recommend Noto Color Emoji, specifically the Noto-COLRv1.ttf variant used in the screenshots. It is available from the official Noto Emoji project:

Download Noto-COLRv1.ttf

Create a fonts folder inside your user directory and place the downloaded file there. For a standard Linux configuration, the resulting path is ~/.config/pragtical/fonts/Noto-COLRv1.ttf. Pragtical searches this folder for fonts, so a system-wide installation is not required.

Add the Fallback​

Open your user module and create a font group:

local style = require "core.style"

style.code_font = renderer.font.group {
renderer.font.load(
DATADIR .. "/fonts/JetBrainsMono-Regular.ttf",
15 * SCALE,
{ ligatures = true }
),
renderer.font.load(
USERDIR .. "/fonts/Noto-COLRv1.ttf",
15 * SCALE,
{ ligatures = true }
)
}

Keep your preferred code font first and add any other fallback fonts as additional entries. Load each font separately: font groups cannot be nested.

To display color emoji in interface text as well, configure style.font:

style.font = renderer.font.group {
renderer.font.load(DATADIR .. "/fonts/FiraSans-Regular.ttf", 15 * SCALE),
renderer.font.load(
USERDIR .. "/fonts/Noto-COLRv1.ttf",
15 * SCALE,
{ ligatures = true }
)
}

Emoji Sequences and Fallback Order​

Color rendering does not require ligatures for individual emoji. Enabling ligatures also allows the emoji font to combine supported sequences, such as joined emoji. Every character in a sequence must be handled by the same font for it to join, so results depend on font coverage and fallback order.

If an emoji appears monochrome, an earlier font may already provide that character. Move Noto Color Emoji ahead of other symbol or emoji fallbacks. If characters appear as boxes, check that the font loaded successfully and that you downloaded the color variant named above.