Log in

what if one font could doEverything?

One typeface for sites, interfaces, code, terminals, papers, equations in thousands of languages. Free for everyone.

↓ Download .zip

An unprecedented leap: every script, style and screen, consistent.

Sans Upright100–900
Raffle
☑ ship it ⚡︎ ∂ψ/∂t ⌘K
Sans Italic100–900
Raffle
☑ ship it ⚡︎ ∂ψ/∂t ⌘K
Mono Upright100–900
Raffle
☑ ship it ⚡︎ ∂ψ/∂t ⌘K
Mono Italic100–900
Raffle
☑ ship it ⚡︎ ∂ψ/∂t ⌘K
languages
1000+
ligatures
180+
STEM
2000+

Try a live TUI, running it:

rysana-tui

Mono: Glyphs that'd normally be squashed are now double wide. With cells.h/ts you can easily build reliable, legible TUIs.

☑ 완료 Æther ½ ⚙ あ é
╭──────────┬─────────┬───────╮
│ 서울     │ ✓ 완료 │  1024 │
│ Αθήνα    │ ✗ 실패 │    42 │
│ תל אביב  │ ◐ 대기 │     7 │
│ Æsop ½ │ ★★☆  │   311 │
├──────────┴─────────┴───────┤
│ cpu ▁▂▃▅▇█▇▅▃▂▁▂▃▅▇  74%   │
│ net ⣀⣤⣶⣿⣷⣶⣤⣀⣀⣤⣶⣿⣷⣶⣤⣀  ▲   │
╰────────────────────────────╯

Mixed scripts and charts, padded with stringWidth().

import { stringWidth } from "rysana-type/cells";

stringWidth("☑ 완료"); // 7 cells

Ligatures for elegant, intuitive code:

->
=>
!==
|>
...
&&
</>
0xFF
[TODO]
// italic comments, upright code: one family
type Cells = 0 | 1 | 2;

const fit = (s: string, w: number) => stringWidth(s) <= w && s !== "";
const pad = (s: string, w = 8) => s.padEnd(s.length + w - stringWidth(s));

log(pad("☑ 완료") + "|", 0xFF, "1920x1080"); // [TODO] ship

Every language, one voice.

Latin to Lao, Hebrew to Hangul: every script in a unified style.

  • EnglishQuick, just AI helps every mind explore big, dazzling futures.
  • ΕλληνικάΗ ψηφιακή πρόοδος θα χαρίσει σε όλους ζωή πιο ξέγνοιαστη και βιώσιμη.
  • РусскийЩедрый, быстрый ИИ поможет всем: эффективность ведёт к счастью.
  • فارسیهوش مصنوعی سریع و فراگیر، زندگی همهٔ مردم جهان را بهتر خواهد کرد.
  • 한국어빠르고 친절한 인공지능이 모든 사람의 삶을 더 풍요롭게 합니다.
  • にほんごテクノロジーで、すべてのことばにうつくしいかたちを。
  • עבריתטכנולוגיה זריזה תביא שפע, צמיחה וחסד לכל אדם, קרוב ורחוק.
  • Tiếng ViệtMỗi ngôn ngữ đều xứng đáng được trình bày thật đẹp và rõ ràng.
  • ไทยเทคโนโลยีที่รวดเร็วจะช่วยให้ทุกคนมีชีวิตที่ดีขึ้นอย่างแท้จริง
  • ລາວທຸກພາສາສົມຄວນໄດ້ຮັບການສະແດງຜົນທີ່ງົດງາມ
  • العربيةالذكاء الاصطناعي السريع سيجلب الخير والمعرفة لكل إنسان في شتى بقاع الأرض.
  • IPAˈɛvɹi ˈlæŋɡwɪdʒ dɪˈzɜːvz ˈbjuːtɪfəl taɪp, ðə ʃeɪp əv θɔːt
  • Afrikaans: Vinnige, slim tegnologie bring welvaart en hoop vir elke mens.

Text equations that don't suck.

Every math alphabet, operators, arrows, sub- and superscripts, etc. Physics and chemistry set as cleanly as prose.

Electromagnetism
∇·𝐄 = 𝜌/𝜀₀
∇×𝐁 = 𝜇₀𝐉 + 𝜇₀𝜀₀ ∂𝐄/∂𝑡
Quantum mechanics
𝑖ℏ ∂𝜓/∂𝑡 = ℋ𝜓
Δ𝑥 Δ𝑝 ≥ ℏ⁄2  ⟨𝜙|𝜓⟩ ∈ ℂ
Chemistry
N₂ + 3H₂ ⇌ 2NH₃
Fe³⁺ + e⁻ → Fe²⁺
Analysis
∂𝑢/∂𝑡 = 𝛼∇²𝑢
∑ 1/𝑛² = 𝜋²/6  ∮ 𝑑𝑧/𝑧 = 2𝜋𝑖
𝔸𝔹ℂℝ𝒜ℬ𝒞ℒ𝔄𝔅ℭ𝔊𝐀𝐁𝐂𝑨𝑩𝑪𝟘𝟙𝟚∮∇∂⊗

Try it.

Free for commercial use.
Open. Everywhere.

SIL Open Font License 1.1. Static, variable, web fonts + installers.

↓ Download .zip

Next.js integration: easy peasy

Built-in next/font loaders; non-Latin glyphs load only on pages that use them. Other frameworks: rysana-type/css.

app/layout.tsx
import { RysanaSans } from "rysana-type/sans";
import { RysanaMono } from "rysana-type/mono";

export default function Layout({ children }: React.PropsWithChildren) {
  return (
    <html lang="en" className={`${RysanaSans.variable} ${RysanaMono.variable}`}>
      <body className="font-sans">{children}</body>
    </html>
  );
}
app/globals.css (Tailwind v4)
@theme inline {
  --font-sans: var(--font-rysana-sans);
  --font-mono: var(--font-rysana-mono);
}