# Guideline 4.0 - Design: Hard to Read Typography

**Guideline:** 4.0 · **Store:** Apple App Store · **Risk:** low · **Difficulty:** easy · **Typical turnaround:** 2-4 hours

Canonical URL: https://appstorereject.com/rejections/apple/4/guideline-40-design-hard-to-read-typography

## Description

Apple flagged your app for hard-to-read text or typography. This can mean font sizes are too small, line spacing is too tight, decorative fonts are used for body text, text color lacks contrast against its background, or the app does not respect the user’s Dynamic Type preferences. Apple expects text to be legible at a glance and comfortable to read for extended periods.

## Common variations

- Body text font size is too small (below 11pt)
- Decorative or script font used for body or instructional text
- Insufficient line spacing makes text difficult to scan
- Text does not scale with Dynamic Type user preference
- Light-colored text on a light background or dark text on a dark background

## Example rejection email

```
Your app included hard to read type or typography. Since App Store users expect apps to be simple, refined, and easy to use, we want to call your attention to this design issue.

Specifically, text in several screens of your app uses a font size that is too small to read comfortably, and body text uses a decorative font that reduces legibility. Next Steps: Please revise your app to improve the readability of the typography and resubmit.
```

## Resolution steps

## How to Fix Hard to Read Typography

1. **Increase minimum font size** — Body text should be at least 17pt (the iOS default for `.body` style). Supporting text should be no smaller than 13pt. Never go below 11pt for any user-facing text.

2. **Replace decorative fonts for body text** — Use the system font (San Francisco) or a high-legibility typeface for all body text, labels, and instructional copy. Reserve decorative fonts for titles or branding only.

3. **Adopt Dynamic Type** — Use `UIFont.preferredFont(forTextStyle:)` in UIKit or SwiftUI’s built-in text styles (`.body`, `.headline`, `.caption`). This automatically scales text to the user’s preferred size.

4. **Improve line spacing** — Ensure line height is at least 1.2× the font size. In SwiftUI, use `.lineSpacing()` modifier. In UIKit, set `paragraphStyle.lineSpacing`.

5. **Check color contrast** — Ensure a minimum contrast ratio of 4.5:1 for body text and 3:1 for large text (18pt+). Use Xcode’s Accessibility Inspector or an online contrast checker.

6. **Test at all Dynamic Type sizes** — In the iOS Simulator, go to Settings → Accessibility → Display & Text Size and test your app at the smallest and largest (including accessibility sizes) settings.

7. **Resubmit with reviewer notes** — Mention that you’ve improved typography and support Dynamic Type.

## Appeal guidance

Appeals are unlikely to succeed for typography rejections because the fix is simple and fast. Only appeal if you believe the reviewer misidentified the screen or your typography already meets HIG standards — in that case, provide exact font sizes and contrast ratios.

## Before / after examples

**Before:** // Hardcoded tiny font with decorative typeface
Text(article.body)
    .font(.custom("Papyrus", size: 12))
    .lineSpacing(0)
    .foregroundColor(Color.gray)
**After:** // System body style with Dynamic Type and proper spacing
Text(article.body)
    .font(.body)
    .lineSpacing(4)
    .foregroundStyle(.primary)
**Why it works:** The .body text style defaults to 17pt San Francisco and automatically scales with Dynamic Type. Using .primary foreground ensures proper contrast in both light and dark mode.

## Common questions

**Can you appeal a 4.0 rejection?**

Appeals are unlikely to succeed for typography rejections because the fix is simple and fast. Only appeal if you believe the reviewer misidentified the screen or your typography already meets HIG standards — in that case, provide exact font sizes and contrast ratios.

**How long does this typically take to fix?**

Typical turnaround is 2-4 hours (difficulty: easy). After resubmission, most re-reviews complete within 24-48 hours.

---
*Machine-readable source: https://api.appstorereject.com/api/rejections/detail?slug=guideline-40-design-hard-to-read-typography*