Typography

Typography can help create clear hierarchies, organize information, and guide users through a product or experience.

Resources



Type tokens and sets

Carbon uses type tokens and themes to manage typography. Type tokens are pre-set configurations of typographic elements such as font size, weight, or leading (line height) that are specifically calibrated for use alongside IBM Plex in product. Selecting the appropriate type style is determined by layout or template structure. Layouts may have several levels of architecture or areas that require varying typographic hierarchies.

Productive vs. Expressive type sets

Productive type is reserved for use in web-based product design, where the user needs to focus on tasks. The Productive styles are curated to create a series of clear user expectations about hierarchy. Expressive type, on the other hand, allows for a more dramatic, graphic use of type in editorial and marketing design — which many users would find distracting in product.

There are two heading sets, one Productive and one Expressive. The difference between the Productive and Expressive styles is mainly evident in the Headings. Aside from the token names, which are specifically calibrated for product vs. editorial designers (e.g. $label-01 vs. $caption-01) — the Supporting and Body styles have the same values in both the Productive and Expressive sets.

Typeface: IBM Plex

Carbon uses the open-source typeface IBM Plex. It has been carefully designed to meet IBM’s needs as a global technology company and reflect IBM’s spirit, beliefs, and design principles. IBM Plex can be accessed and downloaded from the Plex GitHub Repo.

IBM Plex Sans

IBM Plex Serif

IBM Plex Mono

Sans-serif font stack

font-family: 'IBM Plex Sans', 'Helvetica Neue', Arial, sans-serif;

Serif font stack

font-family: 'IBM Plex Serif', 'Georgia', Times, serif;

Mono font stack

font-family: 'IBM Plex Mono', 'Menlo', 'DejaVu Sans Mono',
'Bitstream Vera Sans Mono', Courier, monospace;

Scale

The IBM type scale is built on a single equation. The formula for our scale was created to provide hierarchy for all types of experiences. The formula assumes that y₀=12 px:

rem px
0.75 Plex 12
0.875 Plex 14
1 Plex 16
1.125 Plex 18
1.25 Plex 20
1.5 Plex 24
1.75 Plex 28
2 Plex 32
2.25 Plex 36
2.625 Plex 42
3 Plex 48
3.375 Plex 54
3.75 Plex 60
4.25 Plex 68
4.75 Plex 76
5.25 Plex 84
5.75 Plex 92
Xn = Xn-1 + {INT[(n-2)/4] + 1} * 2
Xn: step n type size Xn-1: step n-1 type size

Style

Typography creates purposeful texture, guiding users to read and understand the hierarchy of information. The right typographic treatment and the controlled usage of type styles helps manage the display of content, keeping it useful, simple, and effective.

Weights

Font weight is an important typographic variable that can add emphasis and differentiate content hierarchy. Font weight and size pairings must be carefully balanced. A bold weight will always have more emphasis than a lighter weight font of the same size. However, a lighter weight font can rank hierarchically higher than a bold font if the lighter weight type size is significantly larger than the bold one.

We suggest using IBM Plex Light, Regular, and SemiBold for digital experiences. The semibold weight is ideal for section headers, but should not be used for long text.

Semibold (600)

Regular (400)

Light (300)

Italic

Each weight has an italic style, which should only be used when you need to emphasize certain words in a sentence (titles of works, technical terms, names of devices, captions, etc.).

Semibold Italic (600)

Regular (400)

Light (300

Type color

Type color should be carefully considered, with legibility and accessibility as paramount concerns. Keep type color neutral in running text. Use primary blue for primary actions.

Neutral color for text
I'm a magenta sentence for no reason
Neutral color for text
Color is not for decoration
Link with icon

Core blue colors are used for text links and primary actions

Download with icon

Secondary actions use Gray 100 and icons

Oops, something went wrong! colored text

Other use cases for colored type are code snippets, warnings, alerts, etc.

Code snippet with colored highlight type