Pollen
GithubShare on Twitter
  • Introducing Pollen
  • Basics
    • Getting started
    • Configuration
      • Configuring Modules
      • Extending Pollen
      • Media & Supports
    • Javascript
  • Modules
    • Typography
    • Layout
    • UI
    • Grid
    • Colors
  • Utils
    • defineConfig
    • fluid
    • shimmie
  • Misc
    • Motivations
    • Contributing
  • Migration Guide
    • v4 -> v5
Powered by GitBook
On this page
  • Modular Scale
  • Fluid Modular Scale
  • Font Families
  • Font Weights
  • Line Height
  • Letter Spacing
  • Prose Width

Was this helpful?

Edit on GitHub
  1. Modules

Typography

Foundations in type

PreviousJavascriptNextLayout

Last updated 11 months ago

Was this helpful?

Modular Scale

Pollen provides a robust modular typography scale to encourage consistent typography sizing across an interface. Sizes are set in rem units to support proper font scaling, and assume a 16px root font-size.

Property group
Applies to

--scale-*

font-size

.heading {
  font-size: var(--scale-4);
}
Property
Value
Equivalent to

--scale-000

0.75rem

12px

--scale-00

0.875rem

14px

--scale-0

1rem

16px

--scale-1

1.125rem

18px

--scale-2

1.25rem

20px

--scale-3

1.5rem

24px

--scale-4

1.875rem

30px

--scale-5

2.25rem

36px

--scale-6

3rem

48px

--scale-7

3.75rem

60px

--scale-8

4.5rem

72px

--scale-9

6rem

96px

--scale-10

8rem

128px

Fluid Modular Scale

In addition to the standard modular typographic scale above, Pollen also comes with a fluid scale that tweens between steps on the scale as screen width changes. Its built with Pollen's own fluid utility, which generates complex CSS clamp() functions based on screen width bounds.

Each fluid font size resizes between a min and max size, starting at mobile screen sizes (480px) and ending at normal desktop screen sizes (1280px).

Property group
Applies to

--scale-fluid-*

font-size

.heading {
  font-size: var(--scale-fluid-5);
}
Property
Value
Range

--scale-fluid-000

clamp(0.625rem, 0.55rem + 0.25vw, 0.75rem)

0.625rem -> 0.75rem

--scale-fluid-00

clamp(0.75rem, 0.675rem + 0.25vw, 0.875rem)

0.75rem -> 0.875rem

--scale-fluid-0

clamp(0.875rem, 0.8rem + 0.25vw, 1rem)

0.875rem -> 1rem

--scale-fluid-1

clamp(1rem, 0.925rem + 0.25vw, 1.125rem)

1rem -> 1.125rem

--scale-fluid-2

clamp(1.125rem, 1.05rem + 0.25vw, 1.25rem)

1.125rem -> 1.25rem

--scale-fluid-3

clamp(1.8125rem, 2rem + -0.625vw, 1.5rem)

1.8125rem -> 1.5rem

--scale-fluid-4

clamp(1.5rem, 1.275rem + 0.75vw, 1.875rem)

1.5rem -> 1.875rem

--scale-fluid-5

clamp(1.875rem, 1.65rem + 0.75vw, 2.25rem)

1.875rem -> 2.25rem

--scale-fluid-6

clamp(2.25rem, 1.8rem + 1.5vw, 3rem)

2.25rem -> 3rem

--scale-fluid-7

clamp(3rem, 2.55rem + 1.5vw, 3.75rem)

3rem -> 3.75rem

--scale-fluid-8

clamp(3.75rem, 3.3rem + 1.5vw, 4.5rem)

3.75rem -> 4.5rem

--scale-fluid-9

clamp(4.5rem, 3.6rem + 3vw, 6rem)

4.5rem -> 6rem

--scale-fluid-10

clamp(6rem, 4.8rem + 4vw, 8rem)

6rem -> 8rem

Font Families

Base font stacks as better alternatives to browser defaults, designed for rapid prototyping and to be overridden as your project grows.

Property group
Applies to

--font-*

font-family

body {
  font-family: var(--font-sans);
}
Property
Value

--font-sans

ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"

--font-serif

ui-serif, Georgia, Cambria, "Times New Roman", Times, serif

--font-mono

ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace

Font Weights

Consistent font weights across an interface

.heading {
  font-weight: var(--weight-bold)
}
Property group
Applies to

--weight-*

font-weight

Property
Value

--weight-light

300

--weight-regular

400

--weight-medium

500

--weight-semibold

600

--weight-bold

700

--weight-extrabold

800

--weight-black

900

Line Height

Encourage consistent line heights across an interface, applied as unitless values to scale with font size.

Property group
Applies to

--line-*

line-height

body {
  line-height: var(--line-md);
}
Property
Value

--line-none

1

--line-xs

1.25

--line-sm

1.275

--line-md

1.5

--line-lg

1.625

--line-xl

2

Letter Spacing

Encourage consistent letter spacing across an interface, applied as em units relative to the text's size

Property group
Applies to

--letter-*

letter-spacing

.uppercase {
  letter-spacing: var(--letter-xs);
}
Property
Value

--letter-xs

-0.05em

--letter-sm

-0.025em

--letter-none

0

--letter-lg

0.025em

--letter-xl

0.05em

Prose Width

Max-widths optimised for legibility of large blocks of text, based on the font and font-size of content.

Property group
Applies to

--prose-*

max-width

article {
  max-width: var(--prose-normal);
  margin: 0 auto;
}
Property
Value
Measure

--prose-xs

45ch

45 letters

--prose-sm

55ch

55 letters

--prose-md

65ch

65 letters

--prose-lg

75ch

75 letters

--prose-xl

85ch

85 letters