DXC Logo
Halstack Design System
v16.1.0

Overview

Guidelines

Foundations

Migration

Utilities

Components

Typography

Introduction

Typography plays a critical role in structuring the user's experience through the visual impact it has on the interface content.

It defines what is the first noticeable piece of information or data based on the font's shape, size, color, or type, and it highlights some pieces of text over others.

Our selected typography helps organize and prioritize content in a way that is clear, accessible, and visually appealing.

Text styles and tokens

Text styles and typography tokens consist of certain font properties, such as font family, size or weight. In design tools like Figma, text styles are applied visually, while in code, typography tokens serve this purpose.

Some typographic elements used in the Halstack Design System include headers, body, helper texts, titles, and labels. In your designs, make use of those elements. These typographic choices are already embedded within the typography tokens and will make it possible to enable typography theming in the future.

These are the core definitions and tokens that form the base of the typographic system. They should be used consistently across all typographic styles.

Font family

For our sans-serif font-family we use Open Sans; a modern, humanist sans-serif typeface designed by Steve Matteson. It is known for its clarity, neutrality, and readability across a wide range of digital and print applications.

With its open forms, neutral yet friendly appearance, and optimized legibility at small sizes, Open Sans is optimized for both web and mobile interfaces, balancing aesthetic appeal with functional clarity. The typeface includes a wide character set that supports Latin, Greek, and Cyrillic scripts, making it suitable for internationalization.

Open Sans can be accessed via Google Fonts and is released under the SIL Open Font License Version 1.1.

Font family

Font weights

Different weights define hierarchy and emphasis in various elements.

WeightTokenValue
Lightfont/weight/light300
Regularfont/weight/regular400
Semiboldfont/weight/semibold600
Boldfont/weight/bold700

Font styles

Font styles provide additional ways to convey meaning and emphasis in text elements. While different styles such as italic can be used to highlight certain content, the default style applied is normal. This ensures consistency and readability across most text, reserving other styles for special cases.

TokenStyleUsage
font/style/normalnormalDefault
font/style/lightitalicitalicApplied selectively for helper text where subtle emphasis is needed.

Font sizes

Font sizes are assigned based on visual hierarchy needs. Not all sizes apply to every text element.

TokenValue (px)
font/size/1212
font/size/1414
font/size/1616
font/size/1818
font/size/2020
font/size/2424
font/size/3232
font/size/4040
font/size/4848
font/size/6060

Usage

Typography usage is categorized by purpose. Each category has predefined size and weight combinations to ensure consistency and scalability across interfaces.

Heading

Use headings for page titles and section introductions. Headings are designed to stand out from regular text, creating clear visual hierarchy and making it easier for readers to follow the organization of the content.

Headings mark the start of new sections. Always use designated heading styles, rather than just bolding text or changing the font size, since proper headings are important for accessibility.

Appropriate heading levels guide users through the page, especially those using screen readers or other assistive devices. Correct use of heading levels also helps organize information, making content easier to scan.

Heading tags (<h1> through <h6>) should be applied in order, without skipping levels. Each page should have a single h1, typically reserved for the main title, and subsequent headings should follow in sequence (for example, use h2 after h1, not h4).

Heading
TokenFont sizeFont weightUsage
typography/heading/xsfont/size/12Light / Regular / SemiboldH6
typography/heading/sfont/size/16Light / Regular / SemiboldH5
typography/heading/mfont/size/20Light / Regular / SemiboldH4
typography/heading/lfont/size/24Light / Regular / SemiboldH3
typography/heading/xlfont/size/32Light / Regular / SemiboldH2
typography/heading/xxlfont/size/40Light / Regular / SemiboldH1

Body

Used for paragraphs, long-form content, and general UI copy. It usually follows headings or subheadings, providing detailed information or messages. Body text should prioritize readability. Use sizes according to density and layout needs.

Body
TokenFont sizeFont weight
typography/body/xsfont/size/12Regular
typography/body/sfont/size/14Regular
typography/body/mfont/size/16Regular
typography/body/lfont/size/18Regular
typography/body/xlfont/size/20Regular
typography/body/xxlfont/size/24Regular

Helper text

Used for inline guidance, validation messages, or tooltips. Helper text is typically small and subtle but must remain legible.

Helper text
SizeFont sizeFont weightFont style
typography/helper-text/sfont/size/12Regular-
typography/helper-text/mfont/size/14Regular / Semibold-
typography/helper-text/lfont/size/16LightItalic

Title

Used for prominent titles in components such as cards or modals. Use sparingly for component-level titles where a strong label is needed.

Title
SizeFont sizeFont weight
Sfont/size/14Bold
Mfont/size/16Bold
Lfont/size/20Bold
XLfont/size/24Bold

Label

Used to describe UI elements such as form fields, checkboxes, or sections. Labels should be clear, concise, and consistent in weight and size throughout the product.

Label
SizeFont sizeFont weight
Sfont/size/12Regular / Semibold
Mfont/size/14Regular / Semibold
Lfont/size/16Regular / Semibold
XLfont/size/20Regular / Semibold

Used for navigational or interactive text elements. Links use clear, recognizable styling and must be distinguishable from body text.

Link

Best practices

  • Use the defined font family (font/family/sans) consistently.
  • Apply only the specified weight and size combinations per use case.
  • Avoid using font sizes smaller than 12px for accessibility reasons.
  • Maintain a minimum 4.5:1 contrast ratio for standard text.
  • Do not apply custom typography outside of the predefined system to ensure consistency and scalability.