typeof.net website design: fonts, colors and UI patterns
4 featured captures from typeof.net, with sourced design evidence from Fudge.
How is typeof.net designed? Show me the visual system I can use as a reference.
Captured pages
Iosevka Customizer variants grid showing character selection with dropdown inheritance controls and multi-style preview columns for upright, italic, and oblique on dark background
Iosevka Customizer basics panel with family name input, serif and spacing dropdowns, weight and width numeric selectors, slope toggle buttons, and export checkboxes on dark
Iosevka landing page variants section with large display heading, stylistic set list in three columns, character grid with dropdown selectors, and tabbed navigation for sans and
Iosevka landing page spatial efficiency section with large display heading, monospace comparison table showing UCD data against Fira Code and IBM Plex columns
Overview
The typeof.net design system presents a dark, technically precise visual language built around the Iosevka monospace type family. The interface reads like a development environment or specialized configuration tool—every element reinforces the site's purpose as a font foundry and customizer. Near-black surfaces dominate, with subtle elevation changes distinguishing interactive panels from the canvas. Cyan accents appear sparingly, marking active states, hyperlinks, and selected values with the clarity of a syntax highlighter. The overall impression is one of controlled density: information-rich grids, tabular data, and configuration controls arranged with the systematic spacing of well-formatted code. This is a design system for users who read text all day and expect their tools to respect typographic nuance.
Colors
The color palette is intentionally restrained, derived from a dark-theme coding aesthetic. Five core colors establish the full range of surfaces, text, and accents.
| token | value | use |
|---|---|---|
| canvas | #0a0a0a | Deepest background, page foundation |
| surface | #111111 | Primary panel and section backgrounds |
| surface-elevated | #1a1a1a | Raised controls, dropdowns, hover states |
| ink | #e8e8e8 | Primary text, headings, active labels |
| ink-muted | #888888 | Secondary text, descriptions, inactive options |
| ink-dim | #555555 | Tertiary text, disabled states, subtle metadata |
| accent | #5ccfe6 | Active selections, hyperlinks, checked states, numeric highlights |
| accent-dim | #4a9eb0 | Pressed or hovered accent states |
| border | #2a2a2a | Panel outlines, table rules, control separators |
| border-subtle | #1f1f1f | Internal grid lines, hairline divisions |
The relationship between tones follows a strict hierarchy: canvas sits below surface, which sits below surface-elevated, creating minimal but perceptible depth. The accent color functions as the only saturated hue, drawing attention to interactive and informational highlights without competing with the type specimens that dominate each view. Text operates on three luminance levels, with ink for primary reading, ink-muted for supporting content, and ink-dim for structural or disabled elements. No light mode is present in the visible interface; the system assumes persistent dark context.
Typography
All visible text is set in Iosevka, a slender monospace family. The type serves both functional and expressive roles—body copy maintains readable proportions while large display settings showcase the font's architectural qualities.
| token | family | size | weight | leading | tracking | use |
|---|---|---|---|---|---|---|
| hero-display | Iosevka | 4rem | 300 | 1.1 | -0.02em | Major section headings, landing page titles |
| section-display | Iosevka | 2.5rem | 300 | 1.2 | -0.01em | Subsection headings, feature titles |
| body | Iosevka | 1rem | 400 | 1.6 | 0 | Paragraphs, descriptions, configuration labels |
| body-small | Iosevka | 0.875rem | 400 | 1.5 | 0 | Dropdown values, compact UI text |
| label | Iosevka | 0.75rem | 500 | 1.4 | 0.05em | Tab labels, metadata, small caps navigation |
| code | Iosevka | 0.875rem | 400 | 1.5 | 0 | Tabular data, character specimens, code comparisons |
The hero-display weight of 300 produces an elegant, elongated appearance at large sizes that contrasts with the denser body weights. Negative tracking on display sizes compensates for monospace fixed-width spacing, preventing excessive looseness. The label token uses positive tracking and medium weight to create functional distinction at small sizes. Verify licensing for Iosevka before production use.
Layout
The layout follows an asymmetric two-column structure on landing pages, with a wide left column for display typography and a narrower right column for explanatory text. This ratio approximately 55:45 creates breathing room around large headings while keeping related content proximate. Configuration interfaces use a more complex multi-panel arrangement: left sidebar for categorical navigation, central workspace for character grids, and right preview for live specimen rendering.
Section spacing is generous, with 6rem separating major content blocks to prevent the dense typographic content from feeling cramped. Within panels, 1.5rem gaps separate related controls and text groups. Tight 0.5rem spacing appears in compact UI such as checkbox lists and tab rows.
The character grid in the customizer uses a rigid matrix layout with uniform cell dimensions, each cell containing a single character and a small dropdown indicator. This grid respects the monospace nature of the typeface—cells align to implicit character widths, reinforcing the systematic quality of the tool. Comparison tables on the landing page use full-width layouts with multiple columns of aligned data, mimicking terminal or spreadsheet formatting.
Border-based separation replaces shadow elevation throughout. Panels and sections are delineated by 1px rules in border or border-subtle rather than dimensional shadows, maintaining the flat, technical aesthetic.
Visual language
The visual language communicates precision through restraint. Every interactive element is rectangular with minimal rounding—0.25rem corners on panels and inputs suggest slight softness without departing from the utilitarian character. There are no gradients, no drop shadows, no decorative imagery beyond the type specimens themselves.
Character specimens are the primary visual content. They appear at multiple scales: massive display settings for feature headings, body-size paragraphs for proofing text, and dense grid arrangements for individual glyph selection. The specimens include mixed scripts, mathematical symbols, and programming constructs, demonstrating the font's range.
Accent usage follows a disciplined pattern: cyan appears for active toggle states, selected numeric values, hyperlinks within body text, and the small checkmarks that confirm selections. This limited application makes each accent instance meaningful. Inactive or alternative options recede into ink-muted or ink-dim.
The interface avoids decorative iconography. Functional indicators are typographic: small downward arrows for dropdowns, checkmarks for confirmation, numeric labels for ordering. Even the tab navigation in the customizer uses text labels rather than icons.
Components
Section heading
Large display typography that anchors major content areas. Uses hero-display or section-display tokens depending on hierarchy. Positioned in the left column of asymmetric layouts or spanning full width in configuration views. Color is ink with occasional accent highlights for emphasized words or numbers within the heading.
Configuration panel
Surface component for grouping related controls. Background is surface with border outline and 0.25rem radius. Internal spacing of 1.5rem separates control groups. Contains labeled rows with left-aligned labels and right-aligned values or inputs.
Dropdown control
Compact selection interface with surface-elevated background, border outline, and body-small typography. Includes a small downward arrow indicator in ink-muted. Active state reveals a menu panel with the same surface treatment. Used for inheritance selection, serif style, and spacing configuration.
Toggle button group
Mutually exclusive option selectors arranged horizontally. Each button has surface background, ink-muted text, and border outline. Active state shifts to surface-elevated background with ink text and may include a accent checkmark or underline. Used for slope selection (Upright, Oblique, Italic) and weight/width numeric choices.
Checkbox
Small square indicator with border outline and no fill when unchecked. Checked state displays a accent checkmark or fill. Accompanied by body-small label text. Used for export options and feature toggles.
Character grid
Dense matrix of selectable characters on surface background. Each cell contains a single glyph in ink with a small downward arrow in ink-dim indicating variant selection. Cell borders use border-subtle for minimal separation. Hover or active cells may shift to surface-elevated. Grid spacing is tight, approximately 0.5rem between cell contents, with cells sized to accommodate the monospace character width.
Comparison table
Full-width tabular display for font metrics and glyph data. Header row uses label typography in ink-muted. Data cells use code typography in ink. Column separators use border-subtle. Row hover states may apply surface-elevated background. Used for spatial efficiency demonstrations and technical specifications.
Tab navigation
Horizontal row of text labels for switching between related views. Active tab uses ink with accent underline or border. Inactive tabs use ink-muted. Compact spacing with tight gaps between items. Used for style categories (Sans, Slab) and numeric variant sets.
Responsive behavior
The two-column landing page layout should stack vertically on narrower viewports, with display headings maintaining size longer than typical due to their role as primary specimens. The character grid in the customizer should reduce visible columns, potentially scrolling horizontally to preserve the matrix structure. Configuration panels should transition to full-width stacked arrangements, with control labels positioned above rather than beside inputs. Tab navigation may wrap to multiple rows or convert to a dropdown selector if horizontal space is constrained. The comparison table requires horizontal scrolling on narrow viewports to preserve column alignment.
Practical implementation guidance
### Preserve - The near-black canvas and subtle surface elevation hierarchy - Monospace typography for every text element, including headings - Cyan accent as the sole saturated color, applied sparingly - Rectangular forms with minimal 0.25rem rounding - Border-based separation instead of shadows - Character specimens as the primary visual content
### Avoid - Adding decorative imagery or illustrations unrelated to type specimens - Introducing additional accent colors that compete with the cyan - Using proportional fonts for any interface element - Applying gradients, shadows, or dimensional effects - Excessive rounding on controls or panels
### Recommended build order 1. Establish the dark canvas and surface color hierarchy 2. Implement Iosevka at all type scales with appropriate weights 3. Build the configuration panel structure with border outlines 4. Create the character grid with uniform cell sizing 5. Add interactive states with accent highlights 6. Implement the two-column landing layout with display typography 7. Add comparison tables with monospace data alignment
### Accessibility - Ensure ink-muted text maintains minimum 4.5:1 contrast against surface backgrounds; adjust to ink-dim only for non-essential decorative text - Provide visible focus indicators using accent borders or outlines on interactive elements - Support keyboard navigation through the character grid and configuration controls - Consider a light mode alternative for users with photophobia, as the current system assumes persistent dark context - Maintain sufficient touch targets for grid cells and toggle buttons on pointer devices
Scope note
This guide covers the Iosevka landing page and customizer interface visible in the supplied images. Mobile layouts, animation, loading states, error handling, and checkout or download flows are not represented. Measurements are practical adaptation targets. The customizer's underlying font generation logic and all glyph variant data fall outside visual system scope.