Skip to content

Typography

The Carbon Connect type system uses three typefaces, each serving a distinct purpose. Together they create a visual hierarchy that is clear, professional, and accessible.


Typefaces

Inter -- Primary Interface Font

Property Value
Classification Sans-serif, humanist
Use All user interface elements, body text, navigation, buttons, forms, labels
Weights available Regular (400), Medium (500), Semibold (600), Bold (700)
Source Google Fonts (open source, SIL OFL)

Inter is designed specifically for screen readability. Its large x-height, open letterforms, and tabular number support make it ideal for data-heavy interfaces like the Carbon Connect dashboard.

Why Inter:

  • Optimized for UI contexts at small and medium sizes
  • Excellent tabular figures for aligning numbers in tables and dashboards
  • Clear letter distinction (no ambiguity between I/l/1 or O/0)
  • Extensive language support covering all EU member states

Source Serif Pro -- Editorial Font

Property Value
Classification Serif, transitional
Use Long-form content, blog posts, reports, marketing headlines, printed materials
Weights available Regular (400), Semibold (600), Bold (700)
Source Google Fonts (open source, SIL OFL)

Source Serif Pro adds warmth and authority to editorial content. It pairs naturally with Inter, sharing similar proportions while providing clear typographic contrast.

Why Source Serif Pro:

  • Professional, authoritative appearance for thought leadership content
  • Excellent readability at long-form text sizes
  • Harmonizes with Inter without clashing
  • Strong language support for multilingual content

JetBrains Mono -- Code Font

Property Value
Classification Monospace
Use Code blocks, API references, technical documentation, terminal output
Weights available Regular (400), Medium (500), Bold (700)
Source Google Fonts (open source, SIL OFL)

JetBrains Mono provides clear code rendering with increased letter height and distinctive character forms that reduce ambiguity.

Why JetBrains Mono:

  • Purpose-built for code readability
  • Ligature support for common programming constructs
  • Clear distinction between similar characters (0/O, 1/l/I)
  • Consistent width for aligned code formatting

Type Scale

The type scale follows a modular progression that ensures clear hierarchy at every level.

Headings

Level Size Line Height Weight Font Usage
Display 48px / 3rem 1.1 Bold (700) Inter Hero sections, landing pages
H1 36px / 2.25rem 1.2 Bold (700) Inter Page titles
H2 30px / 1.875rem 1.25 Semibold (600) Inter Section headings
H3 24px / 1.5rem 1.3 Semibold (600) Inter Subsection headings
H4 20px / 1.25rem 1.35 Medium (500) Inter Card titles, group labels
H5 18px / 1.125rem 1.4 Medium (500) Inter Small section titles
H6 16px / 1rem 1.4 Semibold (600) Inter Label headings, overlines

Body Text

Style Size Line Height Weight Font Usage
Body Large 18px / 1.125rem 1.6 Regular (400) Inter Lead paragraphs, featured text
Body 16px / 1rem 1.6 Regular (400) Inter Default body text
Body Small 14px / 0.875rem 1.5 Regular (400) Inter Secondary text, descriptions
Caption 12px / 0.75rem 1.4 Regular (400) Inter Labels, metadata, timestamps

Editorial Text

Style Size Line Height Weight Font Usage
Editorial Heading 36px / 2.25rem 1.2 Bold (700) Source Serif Pro Blog post titles, report titles
Editorial Subheading 24px / 1.5rem 1.3 Semibold (600) Source Serif Pro Article section headings
Editorial Body 18px / 1.125rem 1.7 Regular (400) Source Serif Pro Long-form article text

Code Text

Style Size Line Height Weight Font Usage
Code Block 14px / 0.875rem 1.6 Regular (400) JetBrains Mono Multi-line code samples
Code Inline 14px / 0.875rem inherit Regular (400) JetBrains Mono Inline code references
Code Small 12px / 0.75rem 1.5 Regular (400) JetBrains Mono Terminal output, logs

Usage Guidelines

Weight Usage

Weight When to Use
Regular (400) Body text, descriptions, paragraphs -- the default for readable content
Medium (500) Navigation items, table headers, form labels -- slightly more emphasis than regular
Semibold (600) Section headings (H2-H3), button text, important labels -- clear emphasis without heaviness
Bold (700) Page titles (H1), display text, strong emphasis -- maximum visual weight

Alignment

Context Alignment
Body text Left-aligned (never justified -- justified text creates uneven spacing)
Headings Left-aligned
Table headers Left-aligned (text columns) or right-aligned (numeric columns)
Button labels Center-aligned
Navigation Left-aligned or center-aligned depending on layout

Line Length

For optimal readability, constrain line length:

Context Maximum Width Characters
Body text 680px 65-75 characters
Editorial content 720px 70-80 characters
UI text (cards, panels) Width of container 40-60 characters preferred

Why Line Length Matters

Lines that are too long force the eye to travel too far to find the next line, reducing reading speed and comprehension. Lines that are too short break up the flow of text. The 65-75 character range is widely regarded as optimal for body text.

Spacing

Element Margin/Spacing Rule
Between H1 and first paragraph 16px (1rem)
Between H2 and content above 48px (3rem)
Between H3 and content above 32px (2rem)
Between paragraphs 16px (1rem)
Between list items 8px (0.5rem)

Responsive Scaling

On smaller screens, the type scale adjusts to maintain readability without overwhelming limited space:

Element Desktop Tablet (768px) Mobile (480px)
Display 48px 40px 32px
H1 36px 30px 26px
H2 30px 26px 22px
H3 24px 22px 20px
Body 16px 16px 16px
Body Small 14px 14px 14px
Caption 12px 12px 12px

Minimum Size

Never use text smaller than 12px (0.75rem) for any content. At smaller sizes, text becomes difficult to read for many users and fails accessibility requirements.


Font Loading

Web Implementation

/* Primary font - Inter */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');

/* Editorial font - Source Serif Pro */
@import url('https://fonts.googleapis.com/css2?family=Source+Serif+Pro:wght@400;600;700&display=swap');

/* Code font - JetBrains Mono */
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&display=swap');

CSS Custom Properties

:root {
  --font-primary: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-editorial: 'Source Serif Pro', 'Georgia', 'Times New Roman', serif;
  --font-code: 'JetBrains Mono', 'Fira Code', 'Consolas', monospace;
}

Fallback Strategy

Each typeface has a carefully chosen fallback chain:

Primary Fallback 1 Fallback 2 Generic
Inter -apple-system Segoe UI sans-serif
Source Serif Pro Georgia Times New Roman serif
JetBrains Mono Fira Code Consolas monospace

Using display=swap ensures text is immediately visible using fallback fonts while custom fonts load asynchronously.