Krizaka
Documentation

Typography

Plus Jakarta Sans speaks, Inter reads, JetBrains Mono labels: the Krizaka faces, their scale and their rules — self-hosted, web and mobile.

The three families

Display--kz-font-display

Plus Jakarta Sans

Tokotype (Gumpita Rahayu) · weights 500–800 · version 2.071

Sovereign AI, on your own servers.

The voice of the headlines: titles, hero lines, figures, the names of things.

Why this face
Already the headline face of krizaka.com: its compact, slightly squared bowls and flat terminals echo the cut corners of the marks and icons, and it stays tight and dense at 800 — premium without decoration. Keeping it means no gratuitous change to the parent brand.
Use it for
  • Headings and hero lines (display-*, title-*)
  • Big figures and prices
  • Short labels that name a product or a section
Avoid
  • Paragraphs and long reading (use the text face)
  • Sizes under 16 px
  • Weights under 600: the display face speaks bold

Until it loads: Arial, adjusted to its metrics (size-adjust 106.50%) — the text does not move.

Text--kz-font-sans

Inter

Rasmus Andersson · weights 400–700 · version 4.001

Your documents stay in Montréal. The answers cite their sources, the costs are counted in advance — 1 234,56 $ for 12 000 requests.

The reading face: paragraphs, interface, forms, tables, captions.

Why this face
Drawn for screens: a tall x-height, open apertures and tabular figures that line up amounts. It was already the default of @krizaka/tokens and Orazaka's text face, and krizaka.com's body already asked for its character variants (cv02–cv04: open 4, 6 and 9). Cut at the text optical size (opsz 14).
Use it for
  • Body text, interface, forms, tables (body-*, caption)
  • Numbers that must align: font-variant-numeric: tabular-nums
  • Every size from 12 px
Avoid
  • Hero headlines (use the display face)
  • Letter-spacing on body sizes beyond the scale's own

Until it loads: Arial, adjusted to its metrics (size-adjust 107.24%) — the text does not move.

Mono--kz-font-mono

JetBrains Mono

JetBrains (Philipp Nurullin, Konstantin Bulenkov) · weights 400–700 · version 2.211

POST /api/v1/chat → 200 · 0O 1lI

Code, identifiers, endpoints, and the small uppercase overlines that label a section.

Why this face
Used by every Krizaka surface already (krizaka.com, Orazaka). A tall x-height and unambiguous 0/O, 1/l/I make code and identifiers readable at 12 px; its rectangular forms sit well next to the cut corners.
Use it for
  • Code blocks and inline code (mono-*)
  • Endpoints, ids, versions, keys
  • Overlines: uppercase, tracked (overline)
Avoid
  • Paragraphs
  • Headlines

Until it loads: Courier New, adjusted to its metrics (size-adjust 99.98%) — the text does not move.

The scale

  1. text-display-2xl72px / 1.02 · 800 · -0.035emDisplay

    Sovereign AI, on your own servers.

    The hero of a home page

  2. text-display-xl56px / 1.05 · 800 · -0.03emDisplay

    Sovereign AI, on your own servers.

    The hero of a page

  3. text-display-lg44px / 1.1 · 700 · -0.025emDisplay

    Sovereign AI, on your own servers.

    The title of a page

  4. text-display-md34px / 1.15 · 700 · -0.02emDisplay

    Sovereign AI, on your own servers.

    The title of a section

  5. text-display-sm26px / 1.2 · 700 · -0.015emDisplay

    Sovereign AI, on your own servers.

    A sub-section, a big figure

  6. text-title-lg20px / 1.35 · 700 · -0.01emDisplay

    Sovereign AI, on your own servers.

    The title of a card or a dialog

  7. text-title-md17px / 1.4 · 600 · -0.012emText

    Your documents stay in Montréal. The answers cite their sources, the costs are counted in advance — 1 234,56 $ for 12 000 requests.

    The title of a list or a panel

  8. text-body-lg18px / 1.6 · 400 · -0.014emText

    Your documents stay in Montréal. The answers cite their sources, the costs are counted in advance — 1 234,56 $ for 12 000 requests.

    The lead, a paragraph that stands out

  9. text-body-md16px / 1.6 · 400 · -0.011emText

    Your documents stay in Montréal. The answers cite their sources, the costs are counted in advance — 1 234,56 $ for 12 000 requests.

    Running text

  10. text-body-sm14px / 1.5 · 400 · -0.006emText

    Your documents stay in Montréal. The answers cite their sources, the costs are counted in advance — 1 234,56 $ for 12 000 requests.

    Dense interface, secondary text

  11. text-caption12px / 1.4 · 500 · 0emText

    Your documents stay in Montréal. The answers cite their sources, the costs are counted in advance — 1 234,56 $ for 12 000 requests.

    Captions, help, metadata

  12. text-overline11px / 1.3 · 600 · 0.12emMono

    POST /api/v1/chat → 200 · 0O 1lI

    The overline of a section, uppercase

  13. text-mono-md14px / 1.6 · 400 · 0emMono

    POST /api/v1/chat → 200 · 0O 1lI

    Code blocks

  14. text-mono-sm12px / 1.5 · 400 · 0emMono

    POST /api/v1/chat → 200 · 0O 1lI

    Identifiers, endpoints, versions

UtilityFamilySize / line height · weight · tracking
text-display-2xlDisplay72px / 1.02 · 800 · -0.035em
text-display-xlDisplay56px / 1.05 · 800 · -0.03em
text-display-lgDisplay44px / 1.1 · 700 · -0.025em
text-display-mdDisplay34px / 1.15 · 700 · -0.02em
text-display-smDisplay26px / 1.2 · 700 · -0.015em
text-title-lgDisplay20px / 1.35 · 700 · -0.01em
text-title-mdText17px / 1.4 · 600 · -0.012em
text-body-lgText18px / 1.6 · 400 · -0.014em
text-body-mdText16px / 1.6 · 400 · -0.011em
text-body-smText14px / 1.5 · 400 · -0.006em
text-captionText12px / 1.4 · 500 · 0em
text-overlineMono11px / 1.3 · 600 · 0.12em
text-mono-mdMono14px / 1.6 · 400 · 0em
text-mono-smMono12px / 1.5 · 400 · 0em

Installation

Web (CSS)

Import the faces once, next to the preset: the tokens already name them.

npm install @krizaka/fonts @krizaka/tokens @krizaka/tailwind
@import "tailwindcss";
@import "@krizaka/tailwind";   /* --kz-font-* and text-display-xl, text-body-md… */
@import "@krizaka/fonts/css";  /* the faces and their adjusted fallbacks */
<h1 class="font-display text-display-xl">…</h1>
<p class="font-text text-body-md text-fg-secondary">…</p>
<span class="font-mono text-overline uppercase">…</span>

Next.js

Import the CSS in the root layout — the bundler copies and fingerprints the files; the fallbacks keep CLS at 0.

// app/layout.tsx
import "@krizaka/fonts/css";
import "./globals.css"; // @import "tailwindcss"; @import "@krizaka/tailwind";

React Native / Expo

Load the static files with expo-font, then take a step of the scale and the name of its face.

// npx expo install expo-font && npm install @krizaka/fonts @krizaka/tokens
import { useFonts } from "expo-font";
import { fontAssets } from "@krizaka/fonts/native/assets";
import { fontFamily } from "@krizaka/fonts/native";
import { typeScale } from "@krizaka/tokens/native";

const [loaded] = useFonts(fontAssets);
const { role, fontWeight, ...size } = typeScale.displayLg;
<Text style={{ ...size, fontFamily: fontFamily(role, Number(fontWeight)) }}>…</Text>

Rules

  • Three families, three jobs: display speaks (headlines, figures), text reads (everything else), mono labels and quotes code. Never a fourth family on a Krizaka surface.
  • Use the scale, not sizes: text-display-xl, text-body-md… carry size, line height, weight and tracking together. A one-off size is a missing step — ask for it.
  • Display from 20 px up, at 600–800; text from 12 px, at 400–700. Never a light weight (< 400) on a dark surface.
  • One display line per block. The rest is text: a page of headlines reads as noise.
  • Amounts, counters and tables use tabular figures (tabular-nums); prices keep the currency from @krizaka/intl, never a hand-written sign.
  • Measure: 60–75 characters per line for reading (max-w-prose).
  • Products may override the display role with their own face (Orochia: Outfit) through --kz-font-display; text and mono stay Krizaka's.
  • The Krizaka wordmark is drawn, inside the logo: never set the name in a font to imitate it.

Licences

Every face is under the SIL Open Font License 1.1: bundle it with any software, never sell it on its own. The licences ship in the package.

FamilyLicenceFilesUpstream
Plus Jakarta SansSIL Open Font License 1.12 WOFF2 (25.6 kB for latin) · 3 TrueTypetokotype/PlusJakartaSans
InterSIL Open Font License 1.12 WOFF2 (50.4 kB for latin) · 4 TrueTypersms/inter
JetBrains MonoSIL Open Font License 1.12 WOFF2 (30.2 kB for latin) · 3 TrueTypeJetBrains/JetBrainsMono

Generated from @krizaka/fonts@0.1.0 · @krizaka/tokens@2.4.0.Edit in krizaka-ui

On this page