Lesson 11 of 12

Typography for UI

Most of any interface is text: labels, buttons, prices, error messages, instructions. Good typography for UI makes that text easy to read and easy to scan. Combined with colour and hierarchy, it decides whether a screen feels calm and clear or crowded and tiring.

Choosing a typeface

For product UI, readability beats personality. A good UI typeface has clear, open letter shapes, distinct characters (capital I, lowercase l and the number 1 should not look the same), several weights, and good support for numbers and symbols.

  • Start with one family. A single sans-serif with regular, medium and bold weights can handle an entire app.
  • Add a second family only with a clear purpose, such as a display font for marketing headings.
  • Check that the font includes the ₹ rupee sign and tabular (equal-width) numbers if you show prices or tables.
  • For Indian languages, choose families that cover the scripts you need – for example, the Noto Sans family offers Devanagari, Tamil, Telugu, Bengali and more, and families such as Mukta and Hind support Devanagari alongside Latin.
  • Consider system fonts (Roboto on Android, San Francisco on iOS) for fast loading and a native feel.

Tip: Indian scripts often need more vertical space than Latin text because of marks above and below the letters. Test labels in each language you support, and give buttons enough height so text is not clipped.

Building a type scale

A type scale is a small, fixed set of font sizes. Instead of picking sizes randomly, you multiply a base size by a ratio. With a 16 px base and a ratio of 1.25, you get roughly 16, 20, 25, 31 and 39 px. Round them to practical values and give each a role:

Style nameSize / line heightWeightUse
Display40 / 48BoldHero headings on landing pages
Heading 132 / 40BoldPage titles
Heading 224 / 32SemiboldSection titles
Heading 320 / 28SemiboldCard titles
Body16 / 24RegularParagraphs, descriptions
Small14 / 20RegularHelper text, metadata
Label14 / 20MediumButtons, form labels

Notice that every line height is a multiple of 4 or 8, which fits the spacing system from the wireframing lesson.

Readability rules

PropertyPractical guidelineWhy
Body size16 px is a sensible default on mobile and webSmaller text strains eyes, especially on small phones
Line heightAbout 1.4–1.6 × the font size for body text; tighter for big headingsHelps the eye find the next line
Line lengthRoughly 45–75 characters per line for paragraphsVery long lines are tiring; very short ones break the rhythm
AlignmentLeft-aligned for most textJustified text creates uneven gaps; centred blocks are hard to scan
CapitalsAvoid long ALL-CAPS textWord shapes disappear and reading slows
WeightUse 2–3 weights at mostToo many weights weaken hierarchy

Accessibility and typography

  • Text colour must meet the contrast ratios from the previous lesson: 4.5:1 for body text, 3:1 for large text.
  • WCAG 1.4.4 requires that text can be resized up to 200% without losing content or function – design layouts that can grow, and avoid fixed-height text boxes.
  • WCAG 1.4.12 requires that content still works when users increase line, letter, word and paragraph spacing – another reason to avoid tight, fixed containers.
  • Do not put important text inside images; it cannot be resized, translated or read by screen readers.

Watch out: Light grey, thin, 12 px text may look elegant in a portfolio mock-up, but it is hard to read for many people and often fails contrast. Test on a real phone, outdoors if you can.

Setting up typography for UI in Figma

  1. Create text styles for each row of your type scale (Heading 1, Body, Label and so on).
  2. Optionally store font sizes, line heights and font families as number and string Variables, so a style can change in one place.
  3. Apply styles everywhere – avoid one-off text settings. Figma shows when text is not using a style.
  4. In Dev Mode, developers see the style name and values for each text layer.

Developers turn these styles into CSS using font-size, line-height and rem units – see CSS text and fonts and CSS units. For more rules and examples, read Typography rules for UI. In the final lesson, usability testing, you will check whether real people can actually use everything you have designed.

Further reading

Key takeaways

  • Choose one readable family with several weights, the ₹ sign and the scripts you need.
  • Use a type scale – a small set of sizes with clear roles – instead of random sizes.
  • Body text around 16 px, line height about 1.4–1.6, 45–75 characters per line, left-aligned.
  • Text must meet contrast, resize to 200% and tolerate extra spacing (WCAG 1.4.3, 1.4.4, 1.4.12).
  • Turn your scale into Figma text styles (and optionally Variables) for consistency and hand-off.

Quick quiz

Check what you learned – pick an answer.

1. What is a type scale?

2. Which line height suits 16 px body text best?

3. Why should you avoid fixed-height text boxes?

Practice exercise

Define a type scale for a college website with at least six styles. For each, give the size, line height, weight and use. Then create them as Figma text styles and apply them to one page, such as an “Exam Timetable” page.

Show a hint

Choose a base of 16 px and a ratio between 1.2 and 1.333, then round to practical values on a 4-point grid.

Show the solution
A good answer picks one readable sans-serif with Latin and, if needed, Tamil or Devanagari support. Example scale: Heading 1 32/40 bold for the page title; Heading 2 24/32 semibold for “Semester 1”, “Semester 3”; Heading 3 20/28 semibold for department names; Body 16/24 regular for instructions; Table text 14/20 regular with tabular numbers for dates and times; Label 14/20 medium for buttons such as “Download PDF”. All text is left-aligned, the instructions paragraph stays within about 70 characters per line, and every text layer in the page uses a style. Grey helper text is checked for at least 4.5:1 contrast.

Progress is saved in this browser only.