A monospaced typeface for code
Calm, legible, and a little bit warm. Auvyx Mono is a monospaced typeface inspired by IBM Plex, Recursive and Geist Mono — open, friendly letterforms, true italics and ligatures that stay out of your way. Built for long days in the editor.
// ligatures that read naturally
const greet = (name) => name !== "" ?? "hello";
if (x >= 0 && y <= 1) data |> render;- 7
- weights, Thin to Bold
- 2
- styles, upright & italic
- 1,073
- characters
- OFL
- free & open source
Type tester
Take it for a spin.
Type anything below. Drag the weight axis anywhere from 100 to 700 — the variable font has every step in between.
Swipe the code sample sideways to read the full line.
Weights wght 100–700
Thin to Bold. And everything in between.
Seven named instances plus a variable font with a continuous weight axis. Pick a hairline for big titles or a heavy weight for low-contrast screens.
- Hamburgefonstiv 0123Hamburgefonstiv
- Hamburgefonstiv 0123Hamburgefonstiv
- Hamburgefonstiv 0123Hamburgefonstiv
- Hamburgefonstiv 0123Hamburgefonstiv
- Hamburgefonstiv 0123Hamburgefonstiv
- Hamburgefonstiv 0123Hamburgefonstiv
- Hamburgefonstiv 0123Hamburgefonstiv
Italics
A true italic, not a slanted afterthought.
The italic has its own rhythm: a single-storey a and g, flowing k l j r v w t f and a straight, quiet x. It's perfect for comments, keywords and emphasis without turning your code into calligraphy.
// fetch the user, then render the view
let view = await load(user);Ligatures calt
Symbols that read like a sentence.
Common operators are gently combined so your eye parses them as one idea. They're just a rendering feature — the underlying code stays plain ASCII. Don't like them? Turn off calt in your editor.
- ->->
- =>=>
- <=><=>
- <-><->
- -->-->
- !=!=
- !==!==
- ====
- ======
- >=>=
- <=<=
- =/==/=
- |>|>
- <|<|
- ::::
- ::::::
- ::=::=
- ......
- &&&&
- ||||
- ????
- ?.?.
- ++++
- ----
- /*/*
- */*/
- ////
- <!--<!--
- </</
- />/>
- ~>~>
- <~<~
- ######
- #{#{
- [|[|
- 0xFF0xFF
Character variants cvXX · ssXX
Make it yours.
Fifteen stylistic alternates are built in. Click a card to preview it, then enable the ones you like with font-feature-settings.
Your settings:"calt"
In the editor
Made for long sessions.
Tuned spacing, generous counters and clear punctuation keep dense code readable at small sizes — in any language.
// Fetch a user and cache the result
export async function getUser(id: string): Promise<User | null> {
const cached = cache.get(id);
if (cached !== undefined) return cached;
const res = await fetch(`/api/users/${id}`);
if (!res.ok) throw new Error("Request failed: " + res.status);
const user = (await res.json()) as User;
cache.set(id, user);
return user ?? null;
}# Count words, ignoring case and punctuation
from collections import Counter
import re
def top_words(text: str, n: int = 10) -> list[tuple[str, int]]:
words = re.findall(r"[\w']+", text.lower())
counts = Counter(w for w in words if len(w) >= 3)
return counts.most_common(n)
if __name__ == "__main__":
print(top_words(open("book.txt").read()))// A tiny state machine
#[derive(Debug, Clone, Copy, PartialEq)]
enum Light { Red, Yellow, Green }
impl Light {
fn next(self) -> Light {
match self {
Light::Red => Light::Green,
Light::Green => Light::Yellow,
Light::Yellow => Light::Red,
}
}
}
fn main() {
let mut light = Light::Red;
for _ in 0..4 { light = light.next(); }
println!("{:?}", light);
}// Fan out work to a pool of goroutines
func process(jobs <-chan Job, results chan<- Result) {
for job := range jobs {
res, err := job.Run()
if err != nil {
log.Printf("job %d failed: %v", job.ID, err)
continue
}
results <- res
}
}Languages
Speaks your language. Especially Vietnamese.
Latin, Greek and Cyrillic, with carefully stacked diacritics for Vietnamese — ơ ư ợ ữ ặ ẫ ỷ sit comfortably without crashing into the line above.
- Tiếng Việt
- Người ta thường nói: công cụ tốt giúp ta làm việc nhanh hơn, còn công cụ đẹp khiến ta muốn làm việc lâu hơn.
- English
- Good tools help you work faster; beautiful tools make you want to keep working.
- Français
- Les bons outils font gagner du temps ; les beaux outils donnent envie de continuer.
- Deutsch
- Gute Werkzeuge machen dich schneller; schöne Werkzeuge lassen dich gerne weitermachen.
- Polski
- Dobre narzędzia przyspieszają pracę; piękne sprawiają, że chce się pracować dłużej.
- Ελληνικά
- Τα καλά εργαλεία σε κάνουν γρηγορότερο· τα όμορφα σε κάνουν να θέλεις να συνεχίσεις.
- Русский
- Хорошие инструменты ускоряют работу, а красивые — вдохновляют работать дольше.
Character set
1,073 characters, 1,434 glyphs.
Click or tap any character to inspect it. Box-drawing and Powerline symbols line up perfectly for terminal UIs.
Install
Free for everyone. Ready in a minute.
Auvyx Mono
Variable + static TTF, OTF and WOFF2 · Upright & Italic · SIL Open Font License 1.1
macOS
Open the variable folder, select both .ttf files and double-click. Click Install Font.
Windows
Open the variable folder, select both .ttf files, right-click and choose Install for all users.
Linux
Copy the .ttf files to ~/.local/share/fonts, then run fc-cache -f.
Set it as your editor font
Scroll sideways for more editor settings. Long lines stay on one line.
"editor.fontFamily": "'Auvyx Mono', monospace",
"editor.fontLigatures": true,
"editor.fontSize": 14"buffer_font_family": "Auvyx Mono",
"buffer_font_features": { "calt": true }font-family = "Auvyx Mono"
font-size = 14font_family Auvyx Mono
bold_font auto
italic_font auto[font]
normal = { family = "Auvyx Mono" }
size = 14config.font = wezterm.font("Auvyx Mono")
config.font_size = 14Settings → Editor → Font
Font: Auvyx Mono
☑ Enable ligatures@font-face {
font-family: "Auvyx Mono";
src: url("AuvyxMono-Variable.woff2") format("woff2");
font-weight: 100 700;
font-display: swap;
}
code, pre { font-family: "Auvyx Mono", monospace; }