Typography
Carbon uses a clear naming approach and type tokens to manage typography across complex and layered layouts and patterns, and these tokens sit within two type sets: expressive and productive.
- Overview
- Utility styles
- Body styles
- Fixed heading styles
- Fluid heading styles
- Fluid display styles
- Questions
Overview
Carbon uses type tokens to manage typography, and these tokens sit within two type sets. The productive and expressive type sets support designers creating for a full range of user needs and activities across product and web pages. To understand when to use styles from each set, see Type usage.
Base type sizes
The productive type set uses a base type size of 14px, while the expressive type set uses a base type size of 16px.
Style naming conventions
Within Body styles and Supporting styles, the same set of styles are
offered, and an easy way to spot which type set they belong to is to look at the
suffix. Productive styles are named with a suffix of -01
and expressive style
names have a suffix of -02
.
Two heading sets
There are two heading sets, one for productive and one for expressive. The major difference between them is in how they are implemented in code because of the nature of the pages.
The productive type set uses fixed headings. Product pages have a higher density of information housed inside containers for space efficiency, and in these situations fixed type styles are a must.
The expressive type set has two fixed headings, for use where smaller headings are needed. The remaining headings are fluid. Web pages need to be able to flex and work at different breakpoints, and the fluid heading styles change size at different breakpoints, and can extrapolate/stretch in between sizes for smooth transitions.
Utility styles
The utility styles are for use with productive and expressive moments and
include styles for code snippets, labels for captions and helper text, as well
as legal copy. Productive styles have a suffix of -01
and expressive styles
have a suffix of -02
.
This is for inline code snippets and smaller code elements.
Type: IBM Plex Mono
Size: 12px / .75rem
Line height: 16px / 1em
Weight: 400 / Regular
Letter spacing: .32px
Type set: Productive
This is for large code snippets and larger code elements.
Type: IBM Plex Mono
Size: 14px / .875rem
Line height: 20px / 1.25em
Weight: 400 / Regular
Letter spacing: .32px
Type set: Expressive
This is a multipurpose type style that can be used for field labels in components, error messages, and captions. It should not be used for body copy.
Type: IBM Plex Sans
Size: 12px / .75rem
Line height: 16px / 1em
Weight: 400 / Regular
Letter spacing: .32px
Type set: Productive
This is a multipurpose type style that can be used for field labels in components, error messages, and captions. It should not be used for body copy.
Type: IBM Plex Sans
Size: 14px / .875rem
Line height: 18px / 1.125em
Weight: 400 / Regular
Letter spacing: .16px
Type set: Expressive
This is for explanatory helper text that appears below a field title within a component.
Type: IBM Plex Sans
Size: 12px / .75rem
Line height: 16px / 1em
Weight: 400 / Regular
Letter spacing: .32px
Type set: Productive
This is for explanatory helper text that appears below a field title within a component.
Type: IBM Plex Sans
Size: 14px / .875rem
Line height: 18px / 1.125em
Weight: 400 / Regular
Letter spacing: .16px
Type set: Expressive
This is for legal copy appearing in product pages.
Type: IBM Plex Sans
Size: 12px / .75rem
Line height: 16px / 1em
Weight: 400 / Regular
Letter spacing: .32px
Type set: Productive
This is for legal copy appearing in web pages.
Type: IBM Plex Sans
Size: 14px / .875rem
Line height: 18px / 1.125em
Weight: 400 / Regular
Letter spacing: .16px
Type set: Expressive
Body styles
There are two body styles for productive and expressive moments. Productive
styles have a suffix of -01
and expressive styles have a suffix of -02
.
This is for short paragraphs with no more than four lines and is commonly used in components.
Type: IBM Plex Sans
Size: 14px / .875rem
Line height: 18px / 1.125em
Weight: 400 / Regular
Letter spacing: .16px
Type set: Productive
This is for short paragraphs with no more than four lines. Use in expressive components, such as button and link.
Type: IBM Plex Sans
Size: 16px / 1rem
Line height: 22px / 1.375em
Weight: 400 / Regular
Letter spacing: 0px
Type set: Expressive
With a slightly taller line height than body-compact-01, this body style is used in productive layouts for long paragraphs with more than four lines. Use also for longer body copy in components such as accordion or structured list. It is always left-aligned. Body-long-01 can also be used for productive moments within expressive experiences.
Type: IBM Plex Sans
Size: 14px / .875rem
Line height: 20px / 1.25em
Weight: 400 / Regular
Letter spacing: .16px
Type set: Productive
With a slightly taller line height than body-compact-02, this style is commonly used in expressive layouts for long paragraphs with four lines or more. It is always left-aligned.
Type: IBM Plex Sans
Size: 16px / 1rem
Line height: 24px / 1.5em
Weight: 400 / Regular
Letter spacing: 0px
Type set: Expressive
Fixed heading styles
The fixed heading styles are used for product pages where multiple containers are used and space efficiency is key. Fixed means they are not responsive. The type size remains constant regardless of break point.
Creators of web pages also use the fixed headings -01
and -02
where smaller
headings are needed.
This is for component and layout headings. It pairs with $body-compact-01.
Type: IBM Plex Sans
Size: 14px / .875rem
Line height: 18px / 1.125em
Weight: 600 / Semi-Bold
Letter spacing: .16px
Type set: Productive
This is for smaller layout headings. It pairs with $body-compact-02.
Type: IBM Plex Sans
Size: 16px / 1rem
Line height: 22px / 1.375em
Weight: 600 / Semi-Bold
Letter spacing: 0px
Type set: Expressive
This is for component and layout headings. It pairs with $body-01.
Type: IBM Plex Sans
Size: 14px / .875rem
Line height: 20px / 1.25em
Weight: 600 / Semi-Bold
Letter spacing: .16px
Type set: Productive
This is for smaller layout headings. It pairs with $body-02.
Type: IBM Plex Sans
Size: 16px / 1rem
Line height: 24px / 1.5em
Weight: 600 / Semi-Bold
Letter spacing: 0px
Type set: Expressive
This is for component and layout headings.
Type: IBM Plex Sans
Size: 20px / 1.25rem
Line height: 28px / 1.75em
Weight: 400 / Regular
Letter spacing: 0px
Type set: Productive
This is for layout headings.
Type: IBM Plex Sans
Size: 28px / 1.75rem
Line height: 36px / 2.25em
Weight: 400 / Regular
Letter spacing: 0px
Type set: Productive
This is for layout headings.
Type: IBM Plex Sans
Size: 32px / 2rem
Line height: 40px / 2.5em
Weight: 400 / Regular
Letter spacing: 0px
Type set: Productive
This is for layout headings.
Type: IBM Plex Sans
Size: 42px / 2.625rem
Line height: 50px / 3.125em
Weight: 300 / Light
Letter spacing: 0px
Type set: Productive
This is for layout headings.
Type: IBM Plex Sans
Size: 54px / 3.375rem
Line height: 64px / 4em
Weight: 300 / Light
Letter spacing: 0px
Type set: Productive
Fluid heading styles
The fluid heading styles are primarily used in web pages, and are therefore part of the expressive set of type styles. These headings are responsive and the type styles change size at different breakpoints.
Do not use these styles inside a container. They may be used in product pages where text sits outside of a container, and a blend of expressive and productive type styles is desired for hierarchy and distinction. For more information, see Type usage.
This is for component and layout headings.
Type: IBM Plex Sans
Size: 20px / 1.25rem
Line height: 28px / 1.75em
Weight: 400 / Regular
Letter spacing: 0px
Type set: Expressive
This is for layout headings.
Type: IBM Plex Sans
Size: 28px / 1.75rem
Line height: 36px / 2.25em
Weight: 400 / Regular
Letter spacing: 0px
Type set: Expressive
This is for layout headings.
Type: IBM Plex Sans
Size: 42px / 2.625rem
Line height: 50px / 3.125em
Weight: 300 / Light
Letter spacing: 0px
Type set: Expressive
This is for layout headings.
Type: IBM Plex Sans
Size: 42px / 2.625rem
Line height: 50px / 3.125em
Weight: 600 / Semi-Bold
Letter spacing: 0px
Type set: Expressive
Fluid display styles
The callout and display styles are part of the expressive set and being fluid, they will adjust at different breakpoints. Do not use these styles inside a container. For guidance about using display styles, see Type usage.
This is for larger paragraphs of type that are usually three or more lines in length.
Type: IBM Plex Sans
Size: 28px / 1.75rem
Line height: 36px / 2.25em
Weight: 300 / Light
Letter spacing: 0px
Type set: Expressive
“Quote.”
Type: IBM Plex Serif
Size: 24px / 1.5rem
Line height: 30px / 1.875em
Weight: 400 / Regular
Letter spacing: 0px
Type set: Expressive
“Quote.”
Type: IBM Plex Serif
Size: 42px / 2.625rem
Line height: 50px / 3.125em
Weight: 300 / Light
Letter spacing: 0px
Type set: Expressive
Display
Type: IBM Plex Sans
Size: 54px / 3.375rem
Line height: 64px / 4em
Weight: 300 / Light
Letter spacing: 0px
Type set: Expressive
Display
Type: IBM Plex Sans
Size: 54px / 3.375rem
Line height: 64px / 4em
Weight: 600 / Semi-Bold
Letter spacing: 0px
Type set: Expressive
Display
Type: IBM Plex Sans
Size: 92px / 5.75rem
Line height: 102px / 6.375em
Weight: 300 / Light
Letter spacing: -.64px
Type set: Expressive
Display
Type: IBM Plex Sans
Size: 92px / 5.75rem
Line height: 102px / 6.375em
Weight: 600 / Semi-Bold
Letter spacing: -.64px
Type set: Expressive
Questions?
For IBMers only: If you have any questions about using either of these experiences, reach out to the teams on Slack or sign up to share your work in a review.
Carbon Design System
- Slack channel: #carbon-design-system
- Meetups with Carbon Design System
Carbon for IBM Dotcom
- Slack channel: #carbon-for-ibm-dotcom
- Office hours with Carbon for IBM.com. See our Slack channel for details.