Typography & Fonts
Relevant source files
The following files were used as context for generating this wiki page:
Introduction
The typography system in the EPIC-SUPREME-PORTFOLIO (AETHER) project is designed to convey "Supreme Geometric Minimalism." It utilizes a combination of modern variable fonts and systematic CSS properties to maintain high legibility while establishing a premium visual identity. The system prioritizes performance through font preloading and provides a structured hierarchy for titles, subtitles, and interactive data.
The typography serves as a core component of the "Aether" design language, characterized by extreme font weights (ranging from 500 to 900) and specific letter-spacing configurations that complement the geometric background elements.
Sources: index.html:7, aether-style.css:1, README.md:14-25
Font Architecture & Loading
The project employs a performance-first approach to font delivery. It uses the WOFF2 format for its primary typefaces, which are served locally to ensure reliability and speed.
Font Assets
The system relies on two primary variable font families stored within the project structure:
- SF Pro Variable: The primary typeface used for the main UI and headings.
- Inter Variable: Used as a secondary or fallback modern sans-serif typeface.
Sources: README.md:23-25
Loading Strategy
To minimize Flash of Unstyled Text (FOUT) or Flash of Invisible Text (FOIT), the project preloads the critical SF-Pro-Variable.woff2 asset. This ensures the font is available immediately during the initial render of the page.
<link rel="preload" href="aether-fonts/SF-Pro-Variable.woff2" as="font" type="font/woff2" crossorigin>
Sources: index.html:10
The following diagram illustrates the font loading and application flow:
The diagram shows the prioritized execution from high-performance preloading to the final CSS font-stack application.
Sources: index.html:10, aether-style.css:28
Typography Hierarchy & Styling
The typographic hierarchy is strictly defined through CSS variables and specific component classes to ensure consistency across different sections.
Global Styles
The global text configuration is applied to the body element, setting a base line height of 1.7 for optimal readability and defining the font stack.
| Property | Value | Context |
|---|---|---|
| font-family | 'SF Pro', -apple-system, Inter, sans-serif | Global |
| line-height | 1.7 | Body Text |
| color | var(--white) / rgba(255, 255, 255, 0.8) | Global / Subtitles |
| font-weight | 500 (Medium) to 900 (Black) | Variable Scale |
Sources: aether-style.css:28-32, aether-style.css:164, aether-style.css:179
Component-Specific Typography
The project uses distinct styles for different UI levels:
- Hero Title (
.hero-title): Usesclamp()for responsive sizing (4remto7rem) and a weight of900. It features a tightline-heightof0.95to emphasize the geometric, compact look. - Section Headers (
.section-title): Range from2.5remto4remwith a weight of900. - UI Labels (
.stat-label,.meta-label): Utilize0.9remto0.95remsizing withuppercasetransform and0.05emletter-spacing for a technical, architectural feel. - Logo (
.nav-logo,.aether-text): Employs heavy weights (900) and negative or positive letter-spacing (-0.02emor0.1em) to distinguish brand elements.
Sources: aether-style.css:77-85, aether-style.css:162-169, aether-style.css:266-273, aether-style.css:327-332
Dynamic Typography Implementation
Certain typographic elements are dynamic, managed by the AetherPortfolio class in the JavaScript engine.
Statistical Counters
The initCounters method targets elements with the .stat-number class. It dynamically updates the textContent of these elements by interpolating from zero to a target value defined in the data-count attribute. This creates a visual "counting" effect for project stats and experience years.
// Logic for dynamic text updates
const target = +counter.dataset.count;
const increment = target / 50;
let current = 0;
const timer = setInterval(() => {
current += increment;
if (current < target) {
counter.textContent = Math.floor(current);
} else {
counter.textContent = target;
clearInterval(timer);
}
}, 30);
Sources: aether-script.js:38-57
Relationship Diagram: Styles and Logic
The diagram represents how CSS variables and global rules feed into specific component styles, which are then occasionally manipulated by JavaScript.
Sources: aether-style.css:3-13, aether-style.css:28, aether-script.js:38
Technical Specifications Table
The following table summarizes the typographic configuration for key elements:
| Element | Class/Selector | Font Weight | Size | Color |
|---|---|---|---|---|
| Brand Logo | .nav-logo | 900 | 1.5rem | var(--gold) |
| Hero Title | .hero-title | 900 | 4rem - 7rem | var(--white) |
| Hero Accent | .title-accent | 900 | Inherit | var(--gold) |
| Section Title | .section-title | 900 | 2.5rem - 4rem | var(--white) |
| Body Text | body | Default | 1rem | var(--white) |
| Stats Number | .stat-number | 900 | 3rem | var(--gold) |
| Meta Labels | .meta-label | 500/600 | 0.95rem | rgba(255,255,255,0.6) |
Sources: aether-style.css:126-131, aether-style.css:162-175, aether-style.css:184-188, aether-style.css:266-273, aether-style.css:327-332
Conclusion
Typography in the AETHER project is more than just text display; it is a structural element of the "geometric minimalism" aesthetic. By utilizing variable fonts like SF Pro and Inter, and implementing a strict hierarchy of weights and responsive sizes, the system ensures that the portfolio remains professional, readable, and visually striking across all device sizes. The integration of JavaScript for dynamic counter updates adds a layer of interactivity that enhances the technical feel of the developer's craftsmanship.