the site's type is Zen, and it comes from us rather than Google

layout.tsx loaded Geist and Geist Mono through next/font/google, and global.css
read them back as --font-geist / --font-geist-mono. Geist is Vercel's face, and
fetching it put a build-time request to Google on a site we compile on our own
hardware and serve from our own image.

@hanzo/font ships Zen and Zen Mono as self-hosted variable faces, so the two
next/font constructors become two imports and the theme reads --font-zen-sans /
--font-zen-mono. Nothing else here declares a theme, so those values reach the
utilities and the default family unshadowed: the export carries two woff2
files, family Zen and Zen Mono, vendor HNZO, and neither Geist nor
fonts.googleapis.com appears anywhere in it.

The hero image in .github named Inter first; it names Zen now.
This commit is contained in:
2026-08-28 17:15:16 -07:00
parent 277439999d
commit 3bcdf58195
5 changed files with 20 additions and 20 deletions
+4 -4
View File
@@ -1,9 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1280" height="640" viewBox="0 0 1280 640" role="img" aria-label="papers">
<rect width="1280" height="640" fill="#0A0A0A"/>
<svg x="96" y="215" width="210" height="210" viewBox="0 0 67 67"><path d="M22.21 67V44.6369H0V67H22.21Z" fill="#fff"/><path d="M66.7038 22.3184H22.2534L0.0878906 44.6367H44.4634L66.7038 22.3184Z" fill="#fff"/><path d="M22.21 0H0V22.3184H22.21V0Z" fill="#fff"/><path d="M66.7198 0H44.5098V22.3184H66.7198V0Z" fill="#fff"/><path d="M66.7198 67V44.6369H44.5098V67H66.7198Z" fill="#fff"/></svg>
<text x="378" y="276" font-family="Inter,system-ui,-apple-system,sans-serif" font-size="78" font-weight="800" letter-spacing="-2" fill="#ffffff">papers</text>
<text x="378" y="322" font-family="Inter,system-ui,sans-serif" font-size="30" fill="#ffffff" opacity=".66">Academic and technical papers for Hanzo AI infrastructure, including…</text>
<text x="378" y="276" font-family="Zen,system-ui,-apple-system,sans-serif" font-size="78" font-weight="800" letter-spacing="-2" fill="#ffffff">papers</text>
<text x="378" y="322" font-family="Zen,system-ui,sans-serif" font-size="30" fill="#ffffff" opacity=".66">Academic and technical papers for Hanzo AI infrastructure, including…</text>
<rect x="378" y="338" width="806" height="3" rx="1.5" fill="#ffffff" opacity=".9"/>
<text x="378" y="390" font-family="Inter,system-ui,sans-serif" font-size="24" font-weight="600" fill="#ffffff" opacity=".5">github.com/hanzoai</text>
<text x="1184" y="390" text-anchor="end" font-family="Inter,system-ui,sans-serif" font-size="24" font-weight="600" fill="#ffffff" opacity=".5">hanzo.ai</text>
<text x="378" y="390" font-family="Zen,system-ui,sans-serif" font-size="24" font-weight="600" fill="#ffffff" opacity=".5">github.com/hanzoai</text>
<text x="1184" y="390" text-anchor="end" font-family="Zen,system-ui,sans-serif" font-size="24" font-weight="600" fill="#ffffff" opacity=".5">hanzo.ai</text>
</svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

+10
View File
@@ -8,6 +8,7 @@
"name": "@hanzoai/papers-site",
"version": "1.0.0",
"dependencies": {
"@hanzo/font": "^1.9.2",
"clsx": "^2.1.1",
"lucide-react": "^0.475.0",
"next": "^16.0.0",
@@ -48,6 +49,15 @@
"tslib": "^2.4.0"
}
},
"node_modules/@hanzo/font": {
"version": "1.9.2",
"resolved": "https://registry.npmjs.org/@hanzo/font/-/font-1.9.2.tgz",
"integrity": "sha512-CXKXhfRgAj9SnhRJtraS6jEToGz74hbrMSJm85Kp8y6uN64zOH+IvohpWT/Surh9Qn1KWIGXsIx216JMa++X6A==",
"license": "SIL OPEN FONT LICENSE",
"peerDependencies": {
"next": ">=13.2.0"
}
},
"node_modules/@img/colour": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz",
+1
View File
@@ -10,6 +10,7 @@
"lint": "next lint"
},
"dependencies": {
"@hanzo/font": "^1.9.2",
"next": "^16.0.0",
"react": "^19.1.0",
"react-dom": "^19.1.0",
+2 -2
View File
@@ -8,8 +8,8 @@
@custom-variant dark (&:is(.dark *));
@theme inline {
--font-sans: var(--font-geist), system-ui, sans-serif;
--font-mono: var(--font-geist-mono), ui-monospace, monospace;
--font-sans: var(--font-zen-sans), system-ui, sans-serif;
--font-mono: var(--font-zen-mono), ui-monospace, monospace;
--radius: 0.5rem;
--color-background: hsl(var(--background));
+3 -14
View File
@@ -1,21 +1,10 @@
import type { Metadata } from 'next'
import { Geist, Geist_Mono } from 'next/font/google'
import { Zen } from '@hanzo/font/sans'
import { ZenMono } from '@hanzo/font/mono'
import { ThemeProvider } from 'next-themes'
import { siteConfig } from '@/config/papers'
import './global.css'
const geist = Geist({
subsets: ['latin'],
variable: '--font-geist',
display: 'swap',
})
const geistMono = Geist_Mono({
subsets: ['latin'],
variable: '--font-geist-mono',
display: 'swap',
})
export const metadata: Metadata = {
title: `${siteConfig.name} Research Papers`,
description: siteConfig.description,
@@ -41,7 +30,7 @@ export default function RootLayout({
return (
<html
lang="en"
className={`${geist.variable} ${geistMono.variable}`}
className={`${Zen.variable} ${ZenMono.variable}`}
suppressHydrationWarning
>
<head>