Installation
Download Bloxwap Font for desktop apps, install it from npm, self-host it with @font-face, or use it with Next.js, Tailwind CSS and CSS custom properties.
Download
Each zip contains every format for its family (OTF, hinted TTF, WOFF2, WOFF and variable TTF/WOFF2) plus OFL.txt.
| Download | Contents | Size |
|---|---|---|
| Bloxwap-Fonts.zip | Sans, Mono and Pixel, all formats, OFL.txt (script companions download separately) | 37.9 MB |
| BloxwapSans.zip | Bloxwap Sans: 18 OTF, 18 TTF, 18 WOFF2, 18 WOFF, 4 variable | 15.9 MB |
| BloxwapMono.zip | Bloxwap Mono: 18 OTF, 18 TTF, 18 WOFF2, 18 WOFF, 4 variable | 15.0 MB |
| BloxwapPixel.zip | Bloxwap Pixel: 18 OTF, 18 TTF, 18 WOFF2, 18 WOFF, 4 variable | 6.9 MB |
| BloxwapSansArabic.zip | Bloxwap Sans Arabic: 9 OTF, 9 TTF, 9 WOFF2, 9 WOFF, 2 variable | 10.5 MB |
| BloxwapMonoArabic.zip | Bloxwap Mono Arabic: 9 OTF, 9 TTF, 9 WOFF2, 9 WOFF, 2 variable | 10.0 MB |
| BloxwapSansKR.zip | Bloxwap Sans KR: 9 OTF, 9 TTF, 9 WOFF2, 9 WOFF, 2 variable | 29.7 MB |
| BloxwapMonoKR.zip | Bloxwap Mono KR: 9 OTF, 9 TTF, 9 WOFF2, 9 WOFF, 2 variable | 29.4 MB |
| BloxwapSansSC.zip | Bloxwap Sans SC: 9 OTF, 9 TTF, 9 WOFF2, 9 WOFF, 2 variable | 46.1 MB |
| BloxwapMonoSC.zip | Bloxwap Mono SC: 9 OTF, 9 TTF, 9 WOFF2, 9 WOFF, 2 variable | 45.6 MB |
| BloxwapSansJP.zip | Bloxwap Sans JP: 9 OTF, 9 TTF, 9 WOFF2, 9 WOFF, 2 variable | 34.5 MB |
| BloxwapMonoJP.zip | Bloxwap Mono JP: 9 OTF, 9 TTF, 9 WOFF2, 9 WOFF, 2 variable | 34.0 MB |
| BloxwapSansHebrew.zip | Bloxwap Sans Hebrew: 9 OTF, 9 TTF, 9 WOFF2, 9 WOFF, 2 variable | 8.1 MB |
| BloxwapMonoHebrew.zip | Bloxwap Mono Hebrew: 9 OTF, 9 TTF, 9 WOFF2, 9 WOFF, 2 variable | 7.5 MB |
| BloxwapSansArmenian.zip | Bloxwap Sans Armenian: 18 OTF, 18 TTF, 18 WOFF2, 18 WOFF, 4 variable | 17.1 MB |
| BloxwapMonoArmenian.zip | Bloxwap Mono Armenian: 18 OTF, 18 TTF, 18 WOFF2, 18 WOFF, 4 variable | 16.1 MB |
| BloxwapSansGeorgian.zip | Bloxwap Sans Georgian: 18 OTF, 18 TTF, 18 WOFF2, 18 WOFF, 4 variable | 17.5 MB |
| BloxwapMonoGeorgian.zip | Bloxwap Mono Georgian: 18 OTF, 18 TTF, 18 WOFF2, 18 WOFF, 4 variable | 16.5 MB |
Install on your computer
Use the OTF files for desktop apps (design tools, word processors). The variable TTF also works in apps that support variable fonts and gives you every weight in one file. Install one or the other, not both, or your apps will list duplicate styles.
Unzip the download, open the otf folder, select all files and double-click them. Click Install in Font Book. To install for all users, drag them to /Library/Fonts.
Use on the web
Install from npm
@bloxwap/font has every family's variable WOFF2, the stylesheet and next/font exports:
npm install @bloxwap/fontImport the stylesheet once (any bundler), then use the family names as with the hosted stylesheet below:
import '@bloxwap/font/css';Link the hosted stylesheet
The quickest option. One stylesheet defines Bloxwap Sans, Bloxwap Mono and Bloxwap Pixel with variable fonts, and merges the companion scripts into the same family names:
<link rel="stylesheet" href="https://bloxwap.github.io/font/bloxwap-font.css">body { font-family: "Bloxwap Sans", system-ui, sans-serif; }
code, pre { font-family: "Bloxwap Mono", ui-monospace, monospace; }Fonts download only when text uses them. For production we recommend self-hosting, so your site does not depend on another origin.
Self-host with @font-face
Copy the web fonts. From the zip, copy the files in variable/ ending in .woff2 to your site, for example to /fonts. For Bloxwap Sans:
| File | Kind | Size |
|---|---|---|
BloxwapSans-Italic[wght].woff2 | Variable | 323 KB |
BloxwapSans[wght].woff2 | Variable | 304 KB |
BloxwapSans-Black.woff2 | Static | 160 KB |
BloxwapSans-BlackItalic.woff2 | Static | 166 KB |
BloxwapSans-Bold.woff2 | Static | 162 KB |
BloxwapSans-BoldItalic.woff2 | Static | 167 KB |
BloxwapSans-ExtraBold.woff2 | Static | 162 KB |
BloxwapSans-ExtraBoldItalic.woff2 | Static | 168 KB |
BloxwapSans-ExtraLight.woff2 | Static | 160 KB |
BloxwapSans-ExtraLightItalic.woff2 | Static | 164 KB |
BloxwapSans-Italic.woff2 | Static | 166 KB |
BloxwapSans-Light.woff2 | Static | 159 KB |
BloxwapSans-LightItalic.woff2 | Static | 162 KB |
BloxwapSans-Medium.woff2 | Static | 159 KB |
BloxwapSans-MediumItalic.woff2 | Static | 166 KB |
BloxwapSans-Regular.woff2 | Static | 159 KB |
BloxwapSans-SemiBold.woff2 | Static | 160 KB |
BloxwapSans-SemiBoldItalic.woff2 | Static | 165 KB |
BloxwapSans-Thin.woff2 | Static | 150 KB |
BloxwapSans-ThinItalic.woff2 | Static | 159 KB |
Declare the families. One rule per file; the weight range tells the browser that a single file covers every weight:
@font-face {
font-family: "Bloxwap Sans";
src: url("/fonts/BloxwapSans-Italic[wght].woff2") format("woff2");
font-weight: 100 900;
font-style: italic;
font-display: swap;
}
@font-face {
font-family: "Bloxwap Sans";
src: url("/fonts/BloxwapSans[wght].woff2") format("woff2");
font-weight: 100 900;
font-style: normal;
font-display: swap;
}Use them.
body {
font-family: "Bloxwap Sans", system-ui, sans-serif;
font-weight: 400; /* any value from 100 to 900 */
}Static fallbacks
Every current browser supports variable fonts. If you must support one that does not, add static WOFF2 files (from the zip's woff2/ folder) inside a feature query, so modern browsers never download them:
@supports not (font-variation-settings: normal) {
@font-face {
font-family: "Bloxwap Sans";
src: url("/fonts/BloxwapSans-Regular.woff2") format("woff2");
font-weight: 400;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: "Bloxwap Sans";
src: url("/fonts/BloxwapSans-Italic.woff2") format("woff2");
font-weight: 400;
font-style: italic;
font-display: swap;
}
@font-face {
font-family: "Bloxwap Sans";
src: url("/fonts/BloxwapSans-SemiBold.woff2") format("woff2");
font-weight: 600;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: "Bloxwap Sans";
src: url("/fonts/BloxwapSans-Bold.woff2") format("woff2");
font-weight: 700;
font-style: normal;
font-display: swap;
}
}Static files are named <Family>-<Style>.woff2: Thin, ExtraLight, Light, Regular, Medium, SemiBold, Bold, ExtraBold, Black, and the same with Italic appended (the regular italic is just Italic).
Preload the main file
Preload the upright Sans file so text renders in Bloxwap Sans on first paint. The crossorigin attribute is required, even for same-origin fonts:
<link rel="preload" href="/fonts/BloxwapSans[wght].woff2" as="font" type="font/woff2" crossorigin>Next.js
With the npm package, import a family and add its class names. Each export comes from next/font/local, so Next.js self-hosts and preloads it; Sans and Mono include the script companions, downloaded only for text in those scripts:
import { BloxwapSans } from '@bloxwap/font/sans';
import { BloxwapMono } from '@bloxwap/font/mono';
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en" className={`${BloxwapSans.variable} ${BloxwapMono.variable}`}>
<body className={BloxwapSans.className}>{children}</body>
</html>
);
}The variable class names define --font-bloxwap-sans and --font-bloxwap-mono (and --font-bloxwap-pixel from @bloxwap/font/pixel).
Without the package
Put the variable WOFF2 files next to your layout (for example in app/fonts/) and load them with next/font/local. Next.js self-hosts them, adds preload tags and generates a size-adjusted fallback:
import localFont from 'next/font/local';
const sans = localFont({
src: [
{ path: './fonts/BloxwapSans[wght].woff2', weight: '100 900', style: 'normal' },
{ path: './fonts/BloxwapSans-Italic[wght].woff2', weight: '100 900', style: 'italic' },
],
variable: '--font-bloxwap-sans',
display: 'swap',
});
const mono = localFont({
src: [
{ path: './fonts/BloxwapMono[wght].woff2', weight: '100 900', style: 'normal' },
{ path: './fonts/BloxwapMono-Italic[wght].woff2', weight: '100 900', style: 'italic' },
],
variable: '--font-bloxwap-mono',
display: 'swap',
});
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en" className={`${sans.variable} ${mono.variable}`}>
<body>{children}</body>
</html>
);
}body { font-family: var(--font-bloxwap-sans), system-ui, sans-serif; }
code, pre { font-family: var(--font-bloxwap-mono), ui-monospace, monospace; }For Bloxwap Pixel, load BloxwapPixel[ROND,wght].woff2 the same way and set ROND with font-variation-settings.
Tailwind CSS v4
Declare the families with @font-face (or the hosted stylesheet), then map them to theme variables in your CSS entry file:
@import "tailwindcss";
@theme {
--font-sans: "Bloxwap Sans", ui-rounded, system-ui, sans-serif;
--font-mono: "Bloxwap Mono", ui-monospace, "SF Mono", Menlo, monospace;
--font-pixel: "Bloxwap Pixel", "Bloxwap Mono", ui-monospace, monospace;
}font-sans and font-mono now use Bloxwap Font, and the new font-pixel utility is available. Weights are ordinary utilities, and arbitrary values reach any point on the axis:
<h1 class="font-sans font-semibold tracking-tight">Portfolio</h1>
<span class="font-sans font-[450] tabular-nums">$67,421.08</span>
<code class="font-mono">a !== b</code>
<div class="font-pixel text-6xl font-bold [font-variation-settings:'ROND'_60]">SCORE 9001</div>With next/font/local, use --font-sans: var(--font-bloxwap-sans), … instead.
CSS custom properties
Without a framework, keep the stacks in custom properties so every component uses the same fallbacks:
:root {
--font-ui: "Bloxwap Sans", ui-rounded, system-ui, -apple-system, "Segoe UI", sans-serif;
--font-code: "Bloxwap Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;
--font-display: "Bloxwap Pixel", "Bloxwap Mono", ui-monospace, monospace;
}
body { font-family: var(--font-ui); }
code, kbd, pre { font-family: var(--font-code); }
.scoreboard { font-family: var(--font-display); }