Our Google Fonts Must-Haves for the Fall

Pepe

September 22, 2026 · 5 min read

Google Fonts has over a thousand options. These seven are the ones we’d reach for. We went through the catalog this season and picked fonts that hold up at scale, across weights, in real work. There’s a font tester at the bottom of this page so you can try them before you commit.

Figtree font card

Figtree

Geometric and warm at once. Erik Kennedy designed it to be versatile without being boring, and its seven weights work as well in body copy as in a headline. One of the few geometric sans-serifs that still feels human.

Urbanist font card

Urbanist

Futura’s cleaner sibling. Low contrast, geometric, confident. Nine weights from Thin to Black let you dial the personality up or pull it back. A strong choice for tech, consumer brands, anything that needs to feel current.

Geist font card

Geist

Vercel’s own typeface, made for interfaces first. Nine weights, plus a mono companion. If your project lives on screens, Geist was built for that.

Gloock font card

Gloock

One weight, all editorial. High-contrast serifs with dramatic thick-to-thin transitions. This is the font for headlines that need to hold the page.

<style> /* Keep the category chips inside the viewport on phones */ .blog_author-flex.w-dyn-items{flex-wrap:wrap;max-width:100%;} .blog_author-flex .w-dyn-item{max-width:100%;} </style>

Playfair Display font card

Playfair Display

Six weights, including the striking ExtraBold and Black. The go-to for magazine-style layouts and luxury brands that need to feel curated.

Cossette Titre font card

Cossette Titre

A condensed grotesque with subtle inverted contrast, so headlines pick up some personality without getting loud. Two weights, Regular and Bold, built for titles and display work. The name says it: this one’s for headlines.

Funnel Sans font card

Funnel Sans

Clean and functional across six weights from Light to ExtraBold. The kind of type that holds a layout together without asking for any credit.

<meta name="color-scheme" content="light"> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Figtree:wght@300;400;500;600;700;800;900&family=Urbanist:wght@100;200;300;400;500;600;700;800;900&family=Geist:wght@100;200;300;400;500;600;700;800;900&family=Gloock&family=Playfair+Display:ital,wght@0,400;0,700;1,400;1,700&family=Cossette+Titre&family=Funnel+Sans:wght@300;400;500;600;700;800&display=swap" rel="stylesheet"> <style> @font-face { font-family: 'Circular'; src: url('https://assets.yellowboxcreative.agency/fonts/circular/circular-black.woff') format('woff'); font-weight: 900; font-display: swap; } @font-face { font-family: 'Circular'; src: url('https://assets.yellowboxcreative.agency/fonts/circular/circular-book.woff') format('woff'); font-weight: 400; font-display: swap; } :root { color-scheme: light; --gft-bg: #FAFAF8; --gft-surface: #FFFFFF; --gft-border: #E0DCD6; --gft-ink: #191718; --gft-muted: #9E9B98; --gft-body: #4A4745; --gft-subtle: #6B6664; --gft-yellow: #FBD305; --gft-sans: 'Circular', system-ui, -apple-system, sans-serif; } #gf-tester { background: var(--gft-bg); border: 1px solid var(--gft-border); border-radius: 12px; padding: 28px 24px 24px; font-family: var(--gft-sans); color: var(--gft-ink); max-width: 720px; box-sizing: border-box; color-scheme: light; } #gft-label { font-weight: 900; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--gft-muted); margin-bottom: 16px; } #gft-tabs { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 20px; } .gft-tab { background: var(--gft-surface); border: 1.5px solid var(--gft-border); border-radius: 40px; padding: 7px 14px; font-family: var(--gft-sans); font-size: 13px; font-weight: 500; color: var(--gft-body); cursor: pointer; transition: border-color 0.12s, background 0.12s, color 0.12s; white-space: nowrap; line-height: 1.2; } .gft-tab:hover { border-color: var(--gft-ink); color: var(--gft-ink); } .gft-tab.active { background: var(--gft-ink); border-color: var(--gft-ink); color: #FAFAF8; } #gft-canvas { background: var(--gft-surface); border: 1px solid var(--gft-border); border-radius: 8px; padding: 32px 28px 24px; margin-bottom: 14px; min-height: 200px; } #gft-pairing-type { font-size: 9.5px; font-weight: 900; letter-spacing: 0.12em; text-transform: uppercase; color: var(--gft-muted); margin-bottom: 14px; } #gft-headline { font-size: 42px; line-height: 1.1; color: var(--gft-ink); margin-bottom: 18px; font-weight: 700; } #gft-sample { font-size: 15.5px; line-height: 1.7; color: var(--gft-body); max-width: 58ch; } #gft-legend { display: flex; gap: 18px; margin-top: 22px; padding-top: 18px; border-top: 1px solid var(--gft-border); flex-wrap: wrap; } .gft-legend-item { display: flex; align-items: center; gap: 8px; } .gft-legend-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; } .gft-legend-dot.display { background: var(--gft-ink); } .gft-legend-dot.body { background: var(--gft-muted); } .gft-legend-label { font-size: 11px; color: var(--gft-subtle); line-height: 1.3; } .gft-legend-name { font-weight: 700; color: var(--gft-ink); } #gft-footer { display: flex; align-items: flex-start; gap: 10px; flex-wrap: wrap; } #gft-copy-btn { background: var(--gft-yellow); border: none; border-radius: 40px; padding: 9px 18px; font-family: var(--gft-sans); font-size: 12px; font-weight: 900; letter-spacing: 0.03em; color: var(--gft-ink); cursor: pointer; flex-shrink: 0; transition: opacity 0.12s; } #gft-copy-btn:hover { opacity: 0.82; } #gft-import-wrap { flex: 1; min-width: 0; } #gft-import-code { display: none; background: #F0EDE9; border: 1px solid var(--gft-border); border-radius: 6px; padding: 9px 13px; font-family: 'SF Mono', 'Fira Code', 'Fira Mono', monospace; font-size: 11px; line-height: 1.5; color: var(--gft-body); word-break: break-all; cursor: pointer; } #gft-import-code.visible { display: block; } #gft-feedback { font-size: 11px; color: var(--gft-muted); margin-top: 6px; height: 14px; } #gft-import-hint { margin: 10px 0 0; font-family: var(--gft-sans); font-size: 12px; color: var(--gft-muted); line-height: 1.5; } @media (max-width: 540px) { #gf-tester { padding: 20px 16px 18px; } #gft-headline { font-size: 30px; } #gft-canvas { padding: 24px 18px 18px; } .gft-tab { font-size: 12px; padding: 6px 12px; } } </style> <div id="gf-tester"> <div id="gft-label">Font pairings →</div> <div id="gft-tabs"> <button class="gft-tab active" data-pair="0">Gloock + Figtree</button> <button class="gft-tab" data-pair="1">Playfair + Geist</button> <button class="gft-tab" data-pair="2">Urbanist + Funnel Sans</button> <button class="gft-tab" data-pair="3">Cossette + Figtree</button> </div> <div id="gft-canvas"> <div id="gft-pairing-type">Display Serif + Geometric Sans</div> <div id="gft-headline" style="font-family:'Gloock',serif;">A serif that leads, a sans that follows</div> <div id="gft-sample" style="font-family:'Figtree',sans-serif;">A display serif with real optical weight commands the page. Figtree's even geometry handles everything below the fold.</div> <div id="gft-legend"> <div class="gft-legend-item"> <div class="gft-legend-dot display"></div> <div class="gft-legend-label"><span class="gft-legend-name" id="gft-leg-display">Gloock</span> (display)</div> </div> <div class="gft-legend-item"> <div class="gft-legend-dot body"></div> <div class="gft-legend-label"><span class="gft-legend-name" id="gft-leg-body">Figtree</span> (body)</div> </div> </div> </div> <div id="gft-footer"> <button id="gft-copy-btn">Copy @import →</button> <div id="gft-import-wrap"> <code id="gft-import-code" class=""></code> <div id="gft-feedback"></div> </div> </div> <p id="gft-import-hint">Paste this at the top of your CSS file, or into your site builder's custom code settings.</p> </div> <script> (function(){ var PAIRS = [ { id: 'gloock-figtree', type: 'Display Serif + Geometric Sans', display: { name: 'Gloock', css: "'Gloock', serif", gf: 'Gloock' }, body: { name: 'Figtree', css: "'Figtree', sans-serif", gf: 'Figtree:wght@300;400;500;600;700;800;900' }, headline: 'A serif that leads, a sans that follows', sample: 'A display serif with real optical weight commands the page. Figtree’s even geometry handles everything below the fold.' }, { id: 'playfair-geist', type: 'Editorial Serif + Technical Sans', display: { name: 'Playfair Display', css: "'Playfair Display', serif", gf: 'Playfair+Display:ital,wght@0,400;0,700;1,400;1,700' }, body: { name: 'Geist', css: "'Geist', sans-serif", gf: 'Geist:wght@100;200;300;400;500;600;700;800;900' }, headline: 'Precision doesn’t have to be cold', sample: 'Playfair draws its contrast from 18th-century punch-cutting. Geist draws its from a design system built for code. They look like an odd couple, and they work well together.' }, { id: 'urbanist-funnel', type: 'Geometric Display + Geometric Body', display: { name: 'Urbanist', css: "'Urbanist', sans-serif", gf: 'Urbanist:wght@100;200;300;400;500;600;700;800;900' }, body: { name: 'Funnel Sans', css: "'Funnel Sans', sans-serif", gf: 'Funnel+Sans:wght@300;400;500;600;700;800' }, headline: 'What geometric really means at scale', sample: 'Two geometric sans serifs in one system usually cancel each other out. These don’t. Urbanist’s wide proportions and Funnel Sans’s optical efficiency operate on different axes, so hierarchy stays clear.' }, { id: 'cossette-figtree', type: 'Expressive Display + Readable Body', display: { name: 'Cossette Titre', css: "'Cossette Titre', sans-serif", gf: 'Cossette+Titre' }, body: { name: 'Figtree', css: "'Figtree', sans-serif", gf: 'Figtree:wght@300;400;500;600;700;800;900' }, headline: 'Make it stop. Make it go.', sample: 'Cossette Titre was built to hold a poster together at ten meters. Figtree was built to hold a paragraph together at arm’s length. Both know their job and stay in their lane.' } ]; var activeIdx = 0; var codeVisible = false; function gid(id){ return document.getElementById(id); } function buildImport(pair){ var families = [pair.display.gf]; if(pair.body.gf !== pair.display.gf) families.push(pair.body.gf); return "@import url('https://fonts.googleapis.com/css2?family=" + families.join('&family=') + "&display=swap');"; } function applyPair(idx){ activeIdx = idx; var p = PAIRS[idx]; var typeEl = gid('gft-pairing-type'); var headEl = gid('gft-headline'); var sampleEl = gid('gft-sample'); var legDisplay = gid('gft-leg-display'); var legBody = gid('gft-leg-body'); if(typeEl) typeEl.textContent = p.type; if(headEl){ headEl.textContent = p.headline; headEl.style.fontFamily = p.display.css; } if(sampleEl){ sampleEl.textContent = p.sample; sampleEl.style.fontFamily = p.body.css; } if(legDisplay) legDisplay.textContent = p.display.name; if(legBody) legBody.textContent = p.body.name; var codeEl = gid('gft-import-code'); if(codeEl){ codeEl.textContent = buildImport(p); codeEl.className = codeVisible ? 'visible' : ''; } var tabs = document.querySelectorAll('#gf-tester .gft-tab'); for(var i = 0; i < tabs.length; i++){ tabs[i].className = 'gft-tab' + (i === idx ? ' active' : ''); } } function showFeedback(msg){ var fb = gid('gft-feedback'); if(!fb) return; fb.textContent = msg; setTimeout(function(){ fb.textContent = ''; }, 2200); } function copyText(str){ if(navigator.clipboard && window.isSecureContext){ navigator.clipboard.writeText(str).then(function(){ showFeedback('✓ Copied to clipboard'); }).catch(function(){ legacyCopy(str); }); } else { legacyCopy(str); } } function legacyCopy(str){ var ta = document.createElement('textarea'); ta.value = str; ta.style.cssText = 'position:fixed;opacity:0;'; document.body.appendChild(ta); ta.focus(); ta.select(); try{ document.execCommand('copy'); showFeedback('✓ Copied to clipboard'); }catch(e){} document.body.removeChild(ta); } // Document-level delegation: survives Webflow DOM replacement document.addEventListener('click', function(e){ var el = e.target; while(el && el !== document.body){ if(el.getAttribute && el.getAttribute('data-pair') !== null && el.className && el.className.indexOf('gft-tab') !== -1){ applyPair(parseInt(el.getAttribute('data-pair'))); return; } if(el.id === 'gft-copy-btn'){ codeVisible = true; var codeEl = document.getElementById('gft-import-code'); if(codeEl){ codeEl.className = 'visible'; copyText(codeEl.textContent); } return; } if(el.id === 'gft-import-code'){ if(el.textContent) copyText(el.textContent); return; } el = el.parentElement; } }, false); document.addEventListener('touchstart', function(e){ var el = e.target; while(el && el !== document.body){ if(el.getAttribute && el.getAttribute('data-pair') !== null && el.className && el.className.indexOf('gft-tab') !== -1){ e.preventDefault(); applyPair(parseInt(el.getAttribute('data-pair'))); return; } if(el.id === 'gft-copy-btn'){ e.preventDefault(); codeVisible = true; var codeEl = document.getElementById('gft-import-code'); if(codeEl){ codeEl.className = 'visible'; copyText(codeEl.textContent); } return; } if(el.id === 'gft-import-code'){ e.preventDefault(); if(el.textContent) copyText(el.textContent); return; } el = el.parentElement; } }, { passive: false }); // Set initial @import code, retried to handle Webflow's async DOM replacement function tryInitCode(){ var codeEl = document.getElementById('gft-import-code'); if(codeEl && !codeEl.textContent.trim()){ codeEl.textContent = buildImport(PAIRS[0]); } } setTimeout(tryInitCode, 50); setTimeout(tryInitCode, 300); setTimeout(tryInitCode, 1200); })(); </script>

<!-- Tired fonts loaded here --> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Figtree:wght@300;400;500;600;700;800;900&family=Urbanist:wght@100;200;300;400;500;600;700;800;900&family=Geist:wght@100;200;300;400;500;600;700;800;900&family=Gloock&family=Playfair+Display:ital,wght@0,400;0,700;1,400;1,700&family=Cossette+Titre&family=Funnel+Sans:wght@300;400;500;600;700;800&family=Roboto:wght@400;700&family=Lato:wght@400;700&family=Raleway:wght@700;800&family=Montserrat:wght@400;700&family=Open+Sans:wght@400;700&display=swap" rel="stylesheet"> <style> #gf-avoid{ margin:40px 0; font-family:-apple-system,BlinkMacSystemFont,'Helvetica Neue',Arial,sans-serif; } @font-face{ font-family:'Circular Black'; src:url('https://assets.yellowboxcreative.agency/fonts/circular/circular-black.woff') format('woff'); font-weight:900;font-style:normal;font-display:swap; } #gf-avoid .gfa-header{ display:flex;align-items:baseline;justify-content:space-between; flex-wrap:wrap;gap:8px;margin-bottom:24px; } #gf-avoid .gfa-title{ font-family:'Circular Black',sans-serif;font-weight:900; font-size:1rem;letter-spacing:-.01em;color:#191718; } #gf-avoid .gfa-meta{ font-size:.78rem;color:#9E9B98; } /* ── Comparison cards ──────────────────── */ #gf-avoid .gfa-list{ display:flex;flex-direction:column;gap:12px; } #gf-avoid .gfa-card{ border-radius:12px;overflow:hidden; border:1px solid #E0DCD6; display:flex; transition:border-color .2s; } /* ── Tired side ────────────────────────── */ #gf-avoid .gfa-tired{ flex:0 0 45%;padding:20px 20px 18px; background:#F2F0EC; display:flex;flex-direction:column;justify-content:center; position:relative; } #gf-avoid .gfa-tired::after{ content:''; position:absolute;right:0;top:0;bottom:0;width:1px; background:#E0DCD6; } #gf-avoid .gfa-badge{ display:inline-block;font-size:.6rem;font-weight:700; letter-spacing:.08em;text-transform:uppercase; padding:2px 8px;border-radius:100px;margin-bottom:10px; align-self:flex-start; } #gf-avoid .gfa-badge-tired{ background:#E0DCD6;color:#8A8380; } #gf-avoid .gfa-badge-better{ background:#191718;color:#fff; transition:background .2s,color .2s; } #gf-avoid .gfa-font-name{ font-size:1.55rem;font-weight:700;line-height:1.1; color:#9E9B98; } #gf-avoid .gfa-tired .gfa-why{ font-size:.72rem;color:#B0ABA6;margin-top:8px;line-height:1.4; } /* ── Better side ───────────────────────── */ #gf-avoid .gfa-better{ flex:1;padding:20px 20px 18px; background:#FAFAF8; display:flex;flex-direction:column;justify-content:center; transition:background .2s; } #gf-avoid .gfa-better .gfa-font-name{ color:#191718; } #gf-avoid .gfa-better .gfa-why{ font-size:.72rem;color:#6B6664;margin-top:8px;line-height:1.4; } /* ── Arrow divider ─────────────────────── */ #gf-avoid .gfa-arrow{ display:flex;align-items:center;justify-content:center; padding:0 10px;background:#F2F0EC; color:#9E9B98;font-size:1rem; flex-shrink:0; border-right:1px solid #E0DCD6; transition:color .2s; } /* ── Hover states ──────────────────────── */ #gf-avoid .gfa-card:hover{border-color:#FBD305;} #gf-avoid .gfa-card:hover .gfa-badge-better{background:#FBD305;color:#191718;} #gf-avoid .gfa-card:hover .gfa-arrow{color:#FBD305;} #gf-avoid .gfa-card:hover .gfa-better{background:#FFFDF0;} @media(max-width:560px){ #gf-avoid .gfa-card{flex-direction:column;} #gf-avoid .gfa-tired{flex:none;} #gf-avoid .gfa-tired::after{display:none;} #gf-avoid .gfa-arrow{ padding:6px 20px;border-right:none;border-bottom:1px solid #E0DCD6; border-top:1px solid #E0DCD6; } } </style> <div id="gf-avoid"> <div class="gfa-header"> <div class="gfa-title">What to skip</div> <div class="gfa-meta">And what to reach for instead</div> </div> <div class="gfa-list"> <!-- 1 · Roboto → Geist --> <div class="gfa-card"> <div class="gfa-tired"> <span class="gfa-badge gfa-badge-tired">Tired pick</span> <div class="gfa-font-name" style="font-family:'Roboto',sans-serif;">Roboto</div> <div class="gfa-why">So default it's invisible. A decade of Android and Material Design drained it of personality.</div> </div> <div class="gfa-arrow">→</div> <div class="gfa-better"> <span class="gfa-badge gfa-badge-better">Try instead</span> <div class="gfa-font-name" style="font-family:'Geist',sans-serif;">Geist</div> <div class="gfa-why">Same geometric bones, but with more personality at display sizes. Precise where Roboto is plain, distinctive where Roboto disappears.</div> </div> </div> <!-- 2 · Lato → Figtree --> <div class="gfa-card"> <div class="gfa-tired"> <span class="gfa-badge gfa-badge-tired">Tired pick</span> <div class="gfa-font-name" style="font-family:'Lato',sans-serif;">Lato</div> <div class="gfa-why">Clean, but overused in NGO sites and starter themes. Blends into the background before it ever registers.</div> </div> <div class="gfa-arrow">→</div> <div class="gfa-better"> <span class="gfa-badge gfa-badge-better">Try instead</span> <div class="gfa-font-name" style="font-family:'Figtree',sans-serif;">Figtree</div> <div class="gfa-why">All of Lato's readability with rounder, warmer letterforms that actually feel considered. Better at body scale and friendlier without going soft.</div> </div> </div> <!-- 3 · Raleway → Urbanist --> <div class="gfa-card"> <div class="gfa-tired"> <span class="gfa-badge gfa-badge-tired">Tired pick</span> <div class="gfa-font-name" style="font-family:'Raleway',sans-serif;font-weight:700;">Raleway</div> <div class="gfa-why">The early 2010s boutique hotel look. Its thin-weight elegance curdled after every lifestyle brand used it back-to-back.</div> </div> <div class="gfa-arrow">→</div> <div class="gfa-better"> <span class="gfa-badge gfa-badge-better">Try instead</span> <div class="gfa-font-name" style="font-family:'Urbanist',sans-serif;font-weight:800;letter-spacing:-.02em;">Urbanist</div> <div class="gfa-why">The geometric elegance Raleway was reaching for, without the dated aftertaste. Wide, confident, and actually works at text sizes too.</div> </div> </div> <!-- 4 · Montserrat → Funnel Sans --> <div class="gfa-card"> <div class="gfa-tired"> <span class="gfa-badge gfa-badge-tired">Tired pick</span> <div class="gfa-font-name" style="font-family:'Montserrat',sans-serif;font-weight:700;">Montserrat</div> <div class="gfa-why">Every startup and personal portfolio from 2015 to 2022. Overweight in the capitals, underweight in the body.</div> </div> <div class="gfa-arrow">→</div> <div class="gfa-better"> <span class="gfa-badge gfa-badge-better">Try instead</span> <div class="gfa-font-name" style="font-family:'Funnel Sans',sans-serif;font-weight:700;">Funnel Sans</div> <div class="gfa-why">Geometric bones without the cap fatigue. Better optical balance across weights and far less likely to make your project look templated.</div> </div> </div> <!-- 5 · Open Sans → Playfair Display --> <div class="gfa-card"> <div class="gfa-tired"> <span class="gfa-badge gfa-badge-tired">Tired pick</span> <div class="gfa-font-name" style="font-family:'Open Sans',sans-serif;font-weight:700;">Open Sans</div> <div class="gfa-why">The reader-friendly default that became a non-choice. Still decent at body scale, but too familiar to communicate craft.</div> </div> <div class="gfa-arrow">→</div> <div class="gfa-better"> <span class="gfa-badge gfa-badge-better">Try instead</span> <div class="gfa-font-name" style="font-family:'Playfair Display',serif;font-weight:700;">Playfair Display</div> <div class="gfa-why">Sometimes the answer to an overused sans is committing to a real serif. Playfair brings editorial weight that Open Sans can't match.</div> </div> </div> </div><!-- /list --> </div> <script> (function(){ var cards = document.querySelectorAll('#gf-avoid .gfa-card'); if('IntersectionObserver' in window){ var io = new IntersectionObserver(function(entries){ entries.forEach(function(en){ if(en.isIntersecting){ en.target.classList.add('visible'); io.unobserve(en.target); } }); },{threshold:.1}); cards.forEach(function(c){ io.observe(c); }); } else { cards.forEach(function(c){ c.classList.add('visible'); }); } })(); </script>

<meta name="color-scheme" content="light"> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Figtree:wght@300;400;500;600;700;800;900&family=Urbanist:wght@100;200;300;400;500;600;700;800;900&family=Geist:wght@100;200;300;400;500;600;700;800;900&family=Gloock&family=Playfair+Display:ital,wght@0,400;0,700;1,400;1,700&family=Cossette+Titre&family=Funnel+Sans:wght@300;400;500;600;700;800&display=swap" rel="stylesheet"> <style> @font-face { font-family: 'Circular'; src: url('https://assets.yellowboxcreative.agency/fonts/circular/circular-black.woff') format('woff'); font-weight: 900; font-display: swap; } @font-face { font-family: 'Circular'; src: url('https://assets.yellowboxcreative.agency/fonts/circular/circular-book.woff') format('woff'); font-weight: 400; font-display: swap; } :root { color-scheme: light; --gf7-bg: #FAFAF8; --gf7-surface: #FFFFFF; --gf7-border: #E0DCD6; --gf7-ink: #191718; --gf7-muted: #9E9B98; --gf7-body: #4A4745; --gf7-yellow: #FBD305; --gf7-sans: 'Circular', system-ui, -apple-system, sans-serif; } #gf7 { background: var(--gf7-bg); border: 1px solid var(--gf7-border); border-radius: 12px; padding: 28px 24px 24px; font-family: var(--gf7-sans); color: var(--gf7-ink); max-width: 720px; box-sizing: border-box; color-scheme: light; } #gf7-label { font-family: var(--gf7-sans); font-weight: 900; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--gf7-muted); margin-bottom: 16px; } #gf7-btns { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 20px; } .gf7-btn { background: var(--gf7-surface); border: 1.5px solid var(--gf7-border); border-radius: 40px; padding: 8px 16px; font-size: 15px; font-weight: 500; color: var(--gf7-body); cursor: pointer; transition: border-color 0.12s, background 0.12s, color 0.12s; white-space: nowrap; line-height: 1.2; } .gf7-btn:hover { border-color: var(--gf7-ink); color: var(--gf7-ink); } .gf7-btn.active { background: var(--gf7-ink); border-color: var(--gf7-ink); color: #FAFAF8; } #gf7-preview { background: var(--gf7-surface); border: 1px solid var(--gf7-border); border-radius: 8px; padding: 28px 24px 22px; margin-bottom: 14px; min-height: 160px; } #gf7-prev-cat { font-family: var(--gf7-sans); font-size: 10px; font-weight: 900; letter-spacing: 0.12em; text-transform: uppercase; color: var(--gf7-muted); margin-bottom: 12px; } #gf7-prev-head { font-size: 46px; line-height: 1.08; color: var(--gf7-ink); margin-bottom: 16px; outline: none; cursor: text; font-weight: 700; } #gf7-prev-head:empty::before { content: attr(data-placeholder); color: var(--gf7-muted); pointer-events: none; } #gf7-prev-body { font-size: 16px; line-height: 1.65; color: var(--gf7-body); font-weight: 400; } #gf7-footer { display: flex; align-items: flex-start; gap: 10px; flex-wrap: wrap; } #gf7-copy-btn { background: var(--gf7-yellow); border: none; border-radius: 40px; padding: 9px 18px; font-family: var(--gf7-sans); font-size: 12px; font-weight: 900; letter-spacing: 0.03em; color: var(--gf7-ink); cursor: pointer; flex-shrink: 0; transition: opacity 0.12s; } #gf7-copy-btn:hover { opacity: 0.82; } #gf7-import-wrap { flex: 1; min-width: 0; } #gf7-import-code { display: none; background: #F0EDE9; border: 1px solid var(--gf7-border); border-radius: 6px; padding: 9px 13px; font-family: 'SF Mono', 'Fira Code', 'Fira Mono', monospace; font-size: 11.5px; line-height: 1.5; color: var(--gf7-body); word-break: break-all; cursor: pointer; } #gf7-import-code.visible { display: block; } #gf7-feedback { font-family: var(--gf7-sans); font-size: 11px; color: var(--gf7-muted); margin-top: 6px; height: 14px; } @media (max-width: 520px) { #gf7 { padding: 20px 16px 18px; } #gf7-prev-head { font-size: 34px; } .gf7-btn { font-size: 13.5px; padding: 7px 13px; } } </style> <div id="gf7"> <div id="gf7-label">Try the fonts →</div> <div id="gf7-btns"> <button class="gf7-btn active" data-idx="0">Figtree</button> <button class="gf7-btn" data-idx="1">Urbanist</button> <button class="gf7-btn" data-idx="2">Geist</button> <button class="gf7-btn" data-idx="3">Gloock</button> <button class="gf7-btn" data-idx="4">Playfair Display</button> <button class="gf7-btn" data-idx="5">Cossette Titre</button> <button class="gf7-btn" data-idx="6">Funnel Sans</button> </div> <div id="gf7-preview"> <div id="gf7-prev-cat"></div> <div id="gf7-prev-head" contenteditable="true" spellcheck="false" data-placeholder="Type something…">The quick brown fox</div> <div id="gf7-prev-body">A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9</div> </div> <div id="gf7-footer"> <button id="gf7-copy-btn">Copy @import →</button> <div id="gf7-import-wrap"> <code id="gf7-import-code"></code> <div id="gf7-feedback"></div> </div> </div> </div> <script> (function(){ var FONTS = [ { name: 'Figtree', css: "'Figtree', sans-serif", gf: 'Figtree:wght@300;400;500;600;700;800;900', cat: 'Sans Serif' }, { name: 'Urbanist', css: "'Urbanist', sans-serif", gf: 'Urbanist:wght@100;200;300;400;500;600;700;800;900', cat: 'Sans Serif' }, { name: 'Geist', css: "'Geist', sans-serif", gf: 'Geist:wght@100;200;300;400;500;600;700;800;900', cat: 'Sans Serif' }, { name: 'Gloock', css: "'Gloock', serif", gf: 'Gloock', cat: 'Display Serif' }, { name: 'Playfair Display', css: "'Playfair Display', serif", gf: 'Playfair+Display:ital,wght@0,400;0,700;1,400;1,700', cat: 'Serif' }, { name: 'Cossette Titre', css: "'Cossette Titre', sans-serif", gf: 'Cossette+Titre', cat: 'Display Sans' }, { name: 'Funnel Sans', css: "'Funnel Sans', sans-serif", gf: 'Funnel+Sans:wght@300;400;500;600;700;800', cat: 'Sans Serif' } ]; var activeIdx = 0; var codeVisible = false; var gf7Container = null; function gid(id){ return document.getElementById(id); } function buildImport(f){ return "@import url('https://fonts.googleapis.com/css2?family=" + f.gf + "&display=swap');"; } function applyFont(idx){ activeIdx = idx; var f = FONTS[idx]; var head = gid('gf7-prev-head'); var body = gid('gf7-prev-body'); var cat = gid('gf7-prev-cat'); if(head) head.style.fontFamily = f.css; if(body) body.style.fontFamily = f.css; if(cat) cat.textContent = f.cat; var code = gid('gf7-import-code'); if(code){ code.textContent = buildImport(f); if(codeVisible) code.className = 'visible'; else code.className = ''; } var container = gf7Container || document.getElementById('gf7'); if(container){ var btns = container.querySelectorAll('.gf7-btn'); for(var i = 0; i < btns.length; i++){ btns[i].className = 'gf7-btn' + (i === idx ? ' active' : ''); } } } function showFeedback(msg){ var fb = gid('gf7-feedback'); if(!fb) return; fb.textContent = msg; setTimeout(function(){ fb.textContent = ''; }, 2200); } function copyText(str){ if(navigator.clipboard && window.isSecureContext){ navigator.clipboard.writeText(str).then(function(){ showFeedback('✓ Copied to clipboard'); }).catch(function(){ legacyCopy(str); }); } else { legacyCopy(str); } } function legacyCopy(str){ var ta = document.createElement('textarea'); ta.value = str; ta.style.position = 'fixed'; ta.style.opacity = '0'; document.body.appendChild(ta); ta.focus(); ta.select(); try { document.execCommand('copy'); showFeedback('✓ Copied to clipboard'); } catch(e){} document.body.removeChild(ta); } // Document-level delegation — survives Webflow DOM replacement document.addEventListener('click', function(e){ var el = e.target; while(el && el !== document.body){ if(el.getAttribute && el.getAttribute('data-idx') !== null && el.className && el.className.indexOf('gf7-btn') !== -1){ applyFont(parseInt(el.getAttribute('data-idx'))); return; } if(el.id === 'gf7-copy-btn'){ codeVisible = true; var code = document.getElementById('gf7-import-code'); if(code){ code.className = 'visible'; copyText(code.textContent); } return; } if(el.id === 'gf7-import-code'){ if(el.textContent) copyText(el.textContent); return; } el = el.parentElement; } }, false); document.addEventListener('touchstart', function(e){ var el = e.target; while(el && el !== document.body){ if(el.getAttribute && el.getAttribute('data-idx') !== null && el.className && el.className.indexOf('gf7-btn') !== -1){ e.preventDefault(); applyFont(parseInt(el.getAttribute('data-idx'))); return; } if(el.id === 'gf7-copy-btn'){ e.preventDefault(); codeVisible = true; var code = document.getElementById('gf7-import-code'); if(code){ code.className = 'visible'; copyText(code.textContent); } return; } if(el.id === 'gf7-import-code'){ e.preventDefault(); if(el.textContent) copyText(el.textContent); return; } el = el.parentElement; } }, { passive: false }); // Initialize button font-families and initial state — retried for Webflow timing function tryInit(){ var container = document.getElementById('gf7'); if(!container) return; var btns = container.querySelectorAll('.gf7-btn'); for(var i = 0; i < btns.length; i++){ if(FONTS[i]) btns[i].style.fontFamily = FONTS[i].css; } applyFont(0); } setTimeout(tryInit, 50); setTimeout(tryInit, 300); setTimeout(tryInit, 1200); })(); </script>
<style> #gf-rail{ font-family:'Circular Book',-apple-system,BlinkMacSystemFont,'Helvetica Neue',Arial,sans-serif; display:flex;flex-direction:column;row-gap:24px; } @font-face{ font-family:'Circular Black'; src:url('https://assets.yellowboxcreative.agency/fonts/circular/circular-black.woff') format('woff'); font-weight:900;font-style:normal;font-display:swap; } @font-face{ font-family:'Circular Book'; src:url('https://assets.yellowboxcreative.agency/fonts/circular/circular-book.woff') format('woff'); font-weight:400;font-style:normal;font-display:swap; } /* ── Nav ─────────────────────────── */ #gf-rail .gfr-section-lbl{ font-family:'Circular Black',sans-serif;font-weight:900; font-size:.66rem;letter-spacing:.09em;text-transform:uppercase; color:#5E5D5D;margin-bottom:14px; } #gf-rail .gfr-nav-list{ list-style:none;padding:0;margin:0; display:flex;flex-direction:column;gap:3px; } #gf-rail .gfr-nav-list li a{ display:flex;align-items:center;gap:10px; padding:8px 10px;border-radius:8px; text-decoration:none;font-size:.875rem;font-weight:500; color:#5E5D5D;transition:background .15s,color .15s; } #gf-rail .gfr-nav-list li a:hover{background:rgba(0,0,0,.05);color:#191718;} #gf-rail .gfr-nav-list li a.is-active{background:#191718;color:#fff;} #gf-rail .gfr-nav-list li a .gfr-num{ font-family:'Circular Black',sans-serif;font-size:.65rem;font-weight:900; width:20px;height:20px;border-radius:50%;border:1.5px solid currentColor; display:flex;align-items:center;justify-content:center;flex-shrink:0; opacity:.55;transition:opacity .15s; } #gf-rail .gfr-nav-list li a.is-active .gfr-num{opacity:1;border-color:#fff;} /* ── Divider ─────────────────────── */ #gf-rail .gfr-divider{height:1px;background:#E0DCD6;} /* ── Shortlist ───────────────────── */ #gf-rail .gfr-shortlist-empty{ font-size:.8rem;color:#9E9B98;line-height:1.55; padding:14px 12px;text-align:center; border:1.5px dashed #E0DCD6;border-radius:8px; } #gf-rail .gfr-shortlist-list{ list-style:none;padding:0;margin:0; display:flex;flex-direction:column;gap:8px; } #gf-rail .gfr-shortlist-item{ display:flex;align-items:center;justify-content:space-between; padding:10px 14px;border-radius:8px; background:#FAFAF8;border:1px solid #E0DCD6; animation:gfrSlideIn .3s ease both; } @keyframes gfrSlideIn{ from{opacity:0;transform:translateY(-5px);} to{opacity:1;transform:translateY(0);} } #gf-rail .gfr-pair-display{font-size:.8rem;font-weight:700;color:#191718;margin-bottom:2px;} #gf-rail .gfr-pair-body{font-size:.72rem;color:#6B6664;} #gf-rail .gfr-remove{ background:none;border:none;cursor:pointer; color:#C8BEB5;font-size:13px;line-height:1; padding:4px 6px;border-radius:4px;transition:color .15s; } #gf-rail .gfr-remove:hover{color:#191718;} /* ── CTA ─────────────────────────── */ #gf-rail .gfr-cta{border-left:3px solid #FBD305;padding:2px 0 2px 18px;} #gf-rail .gfr-cta .gfr-cta-eyebrow{ font-family:'Circular Black',sans-serif;font-weight:900; font-size:.66rem;letter-spacing:.09em;text-transform:uppercase; color:#5E5D5D;margin-bottom:8px; } #gf-rail .gfr-cta .gfr-cta-headline{ font-family:'Circular Black',sans-serif;font-weight:900; font-size:1.05rem;line-height:1.3;margin-bottom:10px; letter-spacing:-.005em;color:#191718; } #gf-rail .gfr-cta .gfr-cta-copy{ font-size:.87rem;color:#5E5D5D;line-height:1.5;margin-bottom:14px; } #gf-rail .gfr-cta a.gfr-cta-btn{ display:inline-flex;align-items:center;gap:6px; font-family:'Circular Book',sans-serif;font-weight:700; font-size:.82rem;color:#191718;background:#FBD305; padding:9px 16px;border-radius:100px;text-decoration:none; transition:background .15s;cursor:pointer; } #gf-rail .gfr-cta a.gfr-cta-btn:hover{background:#e8c200;} /* ── Contact modal ───────────────── */ #gft-type-overlay{ display:none;position:fixed;inset:0;z-index:9999; align-items:center;justify-content:center; background:rgba(25,23,24,.90); backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px); padding:20px;box-sizing:border-box; font-family:'Circular Book',-apple-system,BlinkMacSystemFont,'Helvetica Neue',Arial,sans-serif; } #gft-type-overlay.is-open{display:flex;} #gft-type-overlay .gfto-card{ background:#FAFAF8;border-radius:16px; max-width:520px;width:100%; padding:44px 44px 38px; position:relative;box-sizing:border-box; animation:gftoIn .25s ease both; } @keyframes gftoIn{ from{opacity:0;transform:translateY(12px);} to{opacity:1;transform:translateY(0);} } #gft-type-overlay .gfto-close{ position:absolute;top:16px;right:16px; background:none;border:none;cursor:pointer; color:#C8BEB5;font-size:20px;line-height:1; width:32px;height:32px;border-radius:6px; display:flex;align-items:center;justify-content:center; transition:color .15s,background .15s; } #gft-type-overlay .gfto-close:hover{color:#191718;background:rgba(0,0,0,.06);} #gft-type-overlay .gfto-eyebrow{ font-family:'Circular Black',sans-serif;font-weight:900; font-size:.66rem;letter-spacing:.09em;text-transform:uppercase; color:#5E5D5D;margin-bottom:18px; display:flex;align-items:center;gap:8px; } #gft-type-overlay .gfto-eyebrow::before{ content:'';display:inline-block; width:22px;height:3px;background:#FBD305;border-radius:2px;flex-shrink:0; } #gft-type-overlay .gfto-headline{ font-family:'Circular Black',sans-serif;font-weight:900; font-size:1.8rem;line-height:1.12;letter-spacing:-.018em; color:#191718;margin-bottom:10px; } #gft-type-overlay .gfto-body{ font-size:.925rem;color:#5E5D5D;line-height:1.65;margin-bottom:22px; } /* form fields */ #gft-type-overlay .gfto-field{ display:flex;flex-direction:column;gap:5px;margin-bottom:14px; } #gft-type-overlay .gfto-field label{ font-family:'Circular Black',sans-serif; font-size:.68rem;font-weight:900;letter-spacing:.06em;text-transform:uppercase; color:#5E5D5D; } #gft-type-overlay .gfto-field input, #gft-type-overlay .gfto-field textarea{ background:#F0EDE9;border:1.5px solid #E0DCD6;border-radius:8px; padding:10px 13px; font-family:'Circular Book',-apple-system,sans-serif;font-size:.875rem; color:#191718;outline:none;transition:border-color .15s; box-sizing:border-box;width:100%; } #gft-type-overlay .gfto-field input:focus, #gft-type-overlay .gfto-field textarea:focus{border-color:#191718;} #gft-type-overlay .gfto-field textarea{resize:vertical;min-height:88px;} #gft-type-overlay .gfto-submit{ display:flex;align-items:center;justify-content:center;gap:8px; font-family:'Circular Black',sans-serif;font-weight:900; font-size:.875rem;color:#191718;background:#FBD305; padding:12px 24px;border-radius:100px;border:none; cursor:pointer;transition:background .15s,opacity .15s; width:100%;margin-top:4px;letter-spacing:.01em; } #gft-type-overlay .gfto-submit:hover:not(:disabled){background:#e8c200;} #gft-type-overlay .gfto-submit:disabled{opacity:.6;cursor:not-allowed;} #gft-type-overlay .gfto-status{ margin-top:12px;font-size:.82rem;line-height:1.5; text-align:center;min-height:20px; } #gft-type-overlay .gfto-status.ok{color:#2a7f4f;} #gft-type-overlay .gfto-status.err{color:#c0392b;} #gft-type-overlay .gfto-footer{ margin-top:18px; font-size:.74rem;color:#9E9B98;line-height:1.5; } @media(max-width:560px){ #gft-type-overlay .gfto-card{padding:32px 24px 28px;} #gft-type-overlay .gfto-headline{font-size:1.45rem;} } </style> <div id="gf-rail"> <!-- 1 · Navigation --> <div> <div class="gfr-section-lbl">In this guide</div> <ul class="gfr-nav-list"> <li><a href="#gf-tester" data-gfr-link="gf-tester"><span class="gfr-num">1</span>Pairings</a></li> <li><a href="#gf-avoid" data-gfr-link="gf-avoid"><span class="gfr-num">2</span>What to skip</a></li> <li><a href="#gf7" data-gfr-link="gf7"><span class="gfr-num">3</span>Try the fonts</a></li> </ul> </div> <div class="gfr-divider"></div> <!-- 3 · CTA --> <div class="gfr-cta"> <div class="gfr-cta-eyebrow">From YBX</div> <div class="gfr-cta-headline">Ready to explore something more custom for your type family?</div> <div class="gfr-cta-copy">We build type systems that hold everywhere: brand, web, and editorial.</div> <a href="/contact" class="gfr-cta-btn">Let's talk &rarr;</a> </div> </div> <script> (function(){ var links = document.querySelectorAll('[data-gfr-link]'); if('IntersectionObserver' in window){ var io = new IntersectionObserver(function(entries){ entries.forEach(function(en){ if(en.isIntersecting){ var id = en.target.id; links.forEach(function(a){ a.classList.toggle('is-active', a.getAttribute('data-gfr-link')===id); }); } }); },{threshold:.25,rootMargin:'0px 0px -55% 0px'}); ['gf-tester','gf-avoid','gf7'].forEach(function(id){ var el = document.getElementById(id); if(el) io.observe(el); }); } })(); </script> <script> /* ── Contact modal ───────────────────────── */ (function(){ if(document.getElementById('gft-type-overlay')) return; var overlay = document.createElement('div'); overlay.id = 'gft-type-overlay'; overlay.setAttribute('role','dialog'); overlay.setAttribute('aria-modal','true'); overlay.setAttribute('aria-label','Get in touch with Yellowbox Creative'); overlay.innerHTML = '<div class="gfto-card">' + '<button class="gfto-close" aria-label="Close">&times;</button>' + '<div class="gfto-eyebrow">Yellowbox Creative</div>' + '<div class="gfto-headline">Let\'s talk type.</div>' + '<div class="gfto-body">Tell us about your project—what you\'re building, what\'s not working, or where you want to end up.</div>' + '<form id="gfto-form" novalidate>' + '<div class="gfto-field"><label for="gfto-name">Name</label><input type="text" id="gfto-name" name="name" placeholder="Your name" autocomplete="name" required></div>' + '<div class="gfto-field"><label for="gfto-email">Email</label><input type="email" id="gfto-email" name="email" placeholder="you@example.com" autocomplete="email" required></div>' + '<div class="gfto-field"><label for="gfto-msg">Message</label><textarea id="gfto-msg" name="message" placeholder="What are you working on?" required></textarea></div>' + '<div aria-hidden="true" style="position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;"><input type="text" name="website" tabindex="-1" autocomplete="off"></div>' + '<button type="submit" class="gfto-submit">Send it →</button>' + '<div class="gfto-status" id="gfto-status"></div>' + '</form>' + '<div class="gfto-footer">We work with brands, publishers, and agencies. No retainer required to start.</div>' + '</div>'; document.body.appendChild(overlay); function openModal(){ overlay.classList.add('is-open'); document.body.style.overflow = 'hidden'; } function closeModal(){ overlay.classList.remove('is-open'); document.body.style.overflow = ''; } overlay.querySelector('.gfto-close').addEventListener('click', closeModal); overlay.addEventListener('click', function(e){ if(e.target === overlay) closeModal(); }); document.addEventListener('keydown', function(e){ if(e.key === 'Escape' && overlay.classList.contains('is-open')) closeModal(); }); /* ── Cortex Forms: /api/form-submit, formId article-inquiry → Sales Pipeline + #sales + hello@ ── */ var form = document.getElementById('gfto-form'); if(form){ form.addEventListener('submit', function(e){ e.preventDefault(); var btn = form.querySelector('.gfto-submit'); var status = document.getElementById('gfto-status'); var name = (form.querySelector('[name="name"]').value||'').trim(); var email = (form.querySelector('[name="email"]').value||'').trim(); var msg = (form.querySelector('[name="message"]').value||'').trim(); status.className = 'gfto-status'; status.textContent = ''; if(!name || !email || !msg){ status.className = 'gfto-status err'; status.textContent = 'Please fill in all fields.'; return; } btn.disabled = true; btn.textContent = 'Sending…'; var hp = form.querySelector('[name="website"]'); fetch('https://cortex.yellowboxcreative.agency/api/form-submit',{ method:'POST', headers:{'Content-Type':'application/json'}, body:JSON.stringify({ formId:'article-inquiry', hp:(hp && hp.value) || '', submittedAt:new Date().toISOString(), config:{ formId:'article-inquiry', contactName:name, contactFirstName:name.split(/\s+/)[0], contactEmail:email, clientName:'Google Fonts article' }, answers:[ {index:1, question:'Message', answer:msg}, {index:2, question:'Article', answer:document.title}, {index:3, question:'Page', answer:location.origin + location.pathname} ] }) }) .then(function(r){ return r.json().then(function(d){ return { ok: r.ok && d && d.ok === true }; }); }) .then(function(d){ if(d.ok){ form.style.display = 'none'; status.className = 'gfto-status ok'; status.textContent = 'Got it. We\'ll be in touch soon.'; } else { throw new Error('fail'); } }) .catch(function(){ btn.disabled = false; btn.textContent = 'Send it →'; status.className = 'gfto-status err'; status.textContent = 'Something went wrong. Try again in a moment.'; }); }); } /* ── Wire CTA button to open modal ── */ var rail = document.getElementById('gf-rail'); if(rail){ var ctaBtn = rail.querySelector('.gfr-cta-btn'); if(ctaBtn){ ctaBtn.addEventListener('click', function(e){ e.preventDefault(); openModal(); }); } } })(); </script>

Discovery

Trends & Culture

Strategy & Planning

Tools & Software

Brand & Identity

Pepe

September 22, 2026 · 5 min read

More from Yellowbox

Our Google Fonts Must-Haves for the Fall

Seven Google Fonts worth actually using, for brand, editorial, UI, and bold statements. Try the pairings live, see what to skip, and copy the CSS.

Image of the resource

Adobe Fonts Worth Knowing

Six Adobe Fonts worth knowing, from a heavy poster face to a quiet text sans. Try the pairings live and get the licensing straight before you build.

Image of the resource

Plan Your Creative

Map the year's initiatives, campaigns, and communication needs in one place, so creative support, planning, and momentum stay ahead of the calendar.

Image of the resource

Canva vs. Adobe Express

Both Canva and Adobe Express can help your team create faster — but only if you know what you're building on top of. This comparison breaks down where each tool excels, where it falls short, and what to have in place before your team picks one.

Image of the resource

Design Persona Quiz

The Design Persona Quiz helps organizations uncover their creative instincts and visual communication style. By identifying your design persona, you gain insight into how your brand can communicate with greater clarity, consistency, and confidence.

Image of the resource

Design Trends 2026

The YBX Design Trends 2026 resource explores the creative movements shaping the year ahead and offers guidance on how organizations can apply trends thoughtfully—using design as a tool for clarity, connection, and long-term brand health.

Image of the resource

The Sad Beige Design Era

Sad, safe, and forgettable: why so many brands landed on the same muted palette. How a decade of “clean” minimalism sanded brands down to one look, which ones held their equity through it, and what building a real color system looks like instead.

Image of the resource
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.