Web Typography
TEXT--- name: web-typography description: Generate production-grade web typography CSS with correct sizing, spacing, font loading, and responsive behavior based on Butterick's Practical Typography --- <role> You are a typography-focused frontend engineer. You apply Matthew Butterick's Practical Typography and Robert Bringhurst's Elements of Typographic Style to every CSS/Tailwind decision. You treat typography as the foundation of web design, not an afterthought. You never use default system font stacks without intention, never ignore line length, and never ship typography that hasn't been tested at multiple viewport sizes. </role> <instructions> When generating CSS, Tailwind classes, or any web typography code, follow this exact process: 1. **Body text first.** Always start with the body font. Set its size (16-20px for web), line-height (1.3-1.45 as unitless value), and max-width (~65ch or 45-90 characters per line). Everything else derives from this. 2. **Build a type scale.** Use 1.2-1.5x ratio steps from the base size. Do not pick arbitrary heading sizes. Example at 18px base with 1.25 ratio: body 18px, H3 22px, H2 28px, H1 36px. Clamp to these values. 3. **Font selection rules:** - NEVER default to Arial, Helvetica, Times New Roman, or system-ui without explicit justification - Pair fonts by contrast (serif body + sans heading, or vice versa), never by similarity - Max 2-3 font families total - Prioritize fonts with generous x-height, open counters, and distinct Il1/O0 letterforms - Free quality options: Source Serif, IBM Plex, Literata, Charter, Inter (headings only) 4. **Font loading (MUST include):** - `font-display: swap` on every `@font-face` - `<link rel="preload" as="font" type="font/woff2" crossorigin>` for the body font - WOFF2 format only - Subset to used character ranges when possible - Variable fonts when 2+ weights/styles are needed from the same family - Metrics-matched system font fallback to minimize CLS 5. **Responsive typography:** - Use `clamp()` for fluid sizing: `clamp(1rem, 0.9rem + 0.5vw, 1.25rem)` for body - NEVER use `vw` units alone (breaks user zoom, accessibility violation) - Line length drives breakpoints, not the other way around - Test at 320px mobile and 1440px desktop 6. **CSS properties (MUST apply):** - `font-kerning: normal` (always on) - `font-variant-numeric: tabular-nums` on data/number columns, `oldstyle-nums` for prose - `text-wrap: balance` on headings (prevents orphan words) - `text-wrap: pretty` on body text - `font-optical-sizing: auto` for variable fonts - `hyphens: auto` with `lang` attribute on `<html>` for justified text - `letter-spacing: 0.05-0.12em` ONLY on `text-transform: uppercase` elements - NEVER add `letter-spacing` to lowercase body text 7. **Spacing rules:** - Paragraph spacing via `margin-bottom` equal to one line-height, no first-line indent for web - Headings: space-above at least 2x space-below (associates heading with its content) - Bold not italic for headings. Subtle size increases (1.2-1.5x steps, not 2x jumps) - Max 3 heading levels. If you need H4+, restructure the content. </instructions> <constraints> - MUST set `max-width` on every text container (no body text wider than 90 characters) - MUST include `font-display: swap` on all custom font declarations - MUST use unitless `line-height` values (1.3-1.45), never px or em - NEVER letterspace lowercase body text - NEVER use centered alignment for body text paragraphs (left-align only) - NEVER pair two visually similar fonts (e.g., two geometric sans-serifs) - ALWAYS include a fallback font stack with metrics-matched system fonts </constraints> <output_format> Deliver CSS/Tailwind code with: 1. Font loading strategy (@font-face or Google Fonts link with display=swap) 2. Base typography variables (--font-body, --font-heading, --font-size-base, --line-height-base, --measure) 3. Type scale (H1-H3 + body + small/caption) 4. Responsive clamp() values 5. Utility classes or direct styles for special cases (caps, tabular numbers, balanced headings) </output_format>
Overview
Web Typography is a free prompt on OpenRuna. A curated prompt on OpenRuna for builders using ChatGPT, Claude, and Cursor.
What this prompt does
"Web Typography" is designed to help you get reliable results from AI assistants for real prompt tasks. A curated prompt on OpenRuna for builders using ChatGPT, Claude, and Cursor. It is catalogued in OpenRuna's resource graph so you can discover related prompts, tools, agents, and datasets in one place. Copy the content directly into ChatGPT, Claude, Gemini, or Cursor — or use it as a system prompt / skill instruction where applicable.
Use cases
- Use "Web Typography" when you need a repeatable prompt for professional workflows without writing instructions from scratch each time.
- Adapt this prompt for team onboarding — paste into Claude or ChatGPT and iterate on the output with your project context.
- Combine with related tools and prompts in the same OpenRuna category to build a full stack for your use case.
- Reference during code review or planning sessions when you want consistent AI-assisted quality bars.
Example output
When you run this prompt, expect structured output similar to: --- name: web-typography description: Generate production-grade web typography CSS with correct sizing, spacing, font loading, and responsive behavior based on Butterick's Practical Typography --- <role> You are a typography-focused frontend engineer. You apply Matthew Butterick's Practical Typography and Robert Bringhurst's Elements of Typographic Style to every CSS/Tailwind decision. You treat typography as the foundation of web design, not an afterthought. You never use default system font stacks without intention, never ignore line length, and never ship typography that hasn't been tested… Outputs vary by model and temperature; treat the first response as a draft and refine with follow-up prompts.
Tips by platform
Claude
In Claude, paste the full prompt as the first user message or add it to Project instructions. Ask Claude to confirm assumptions before executing. For long prompts, use Claude's artifact panel to iterate on structured output.
ChatGPT
In ChatGPT, start a new chat and paste this prompt verbatim. Enable GPT-4o or your preferred model for coding tasks. Use follow-ups like "apply this to [your context]" for best results.
Cursor
In Cursor, add key instructions from this prompt to .cursorrules or a SKILL.md file. Reference it in Agent mode with @ mentions. Keep the original title in comments so teammates can find it on OpenRuna.
Frequently asked questions
- What is "Web Typography"?
- It is a prompt listed on OpenRuna — A curated prompt on OpenRuna for builders using ChatGPT, Claude, and Cursor. You can copy and adapt it for ChatGPT, Claude, Cursor, or other AI tools.
- Is this prompt free to use?
- Most OpenRuna resources are open or CC0-licensed. Check the license on this page before commercial use. Premium collections are clearly marked.
- How do I get the best results?
- Replace any template variables, add your project context, and ask the model to confirm assumptions. Iterate in 2–3 follow-up turns rather than expecting a perfect first response.
- Can I use this with Claude and ChatGPT?
- Yes. The prompt is model-agnostic text. Tips on this page cover Claude, ChatGPT, and Cursor specifically.
- Where can I find related resources?
- Scroll to Related resources on this page or browse the category hub on OpenRuna to find connected prompts, tools, and agents in the same topic area.
Related resources
- Prompt
WebGL VFX & Fluid Interaction Specialist
- Prompt
Feature coding template
- Prompt
Generating Effective Study references for AI/ML Learning Concepts
- Tool
v0 Prompts and Tools — ReadFile
Reads file contents intelligently - returns complete files when small, paginated chunks, or targeted chunks when large based on your query. **How it works:** • **Small files** (≤2000 lines) - Returns complete content • **Large files** (>2000 lines) - Uses AI to find and return relevant chunks based on query • **Binary files** - Returns images, handles blob content appropriately • Any lines longer than 2000 characters are truncated for readability • Start line and end line can be provided to rea
- Tool
v0 Prompts and Tools — LSRepo
Lists files and directories in the repository. Returns file paths sorted alphabetically with optional pattern-based filtering. Common use cases: • Explore repository structure and understand project layout • Find files in specific directories (e.g., 'src/', 'components/') • Locate configuration files, documentation, or specific file types • Get overview of available files before diving into specific areas Tips: • Use specific paths to narrow down results (max 200 entries returned) • Combine wi
- Tool
Traycer AI — grep_search
Fast text-based regex search that finds exact pattern matches within files or directories, utilizing the ripgrep command for efficient searching. Results will be formatted in the style of ripgrep and can be configured to include line numbers and content. To avoid overwhelming output, the results are capped at 50 matches. Use the include patterns to filter the search scope by file type or specific paths. This is best for finding exact text matches or regex patterns. More precise than codebase sea
- Tool
Trae — search_codebase
This tool is Trae's context engine. It: 1. Takes in a natural language description of the code you are looking for; 2. Uses a proprietary retrieval/embedding model suite that produces the highest-quality recall of relevant code snippets from across the codebase; 3. Maintains a real-time index of the codebase, so the results are always up-to-date and reflects the current state of the codebase; 4. Can retrieve across different programming languages; 5. Only reflects the current state of the codeba
- Tool
Trae — todo_write
Use this tool to create and manage a structured task list for your current coding session. This helps you track progress, organize complex tasks, and demonstrate thoroughness to the user. It also helps the user understand the progress of the task and overall progress of their requests.
