YumYum 디자인 시스템 — 타이포그래피 토큰 v2
냠냠픽업 디자인 시스템 타이포그래피 가이드 작성일: 2026-05-13 버전: v2.0
1. 디자인 원칙
1.1 핵심 컨셉
- 명확하고 친근하게 — 식음료 픽업 서비스에 맞는 톤
- 한글 가독성 절대 우선 — 한국 서비스
- Pretendard 베이스, LaundryGothic은 임팩트용 (컬러 시스템의 Tier 구조와 동일)
1.2 폰트 사용 비율
- Pretendard (Tier 1): 95% (모든 본문, UI 텍스트)
- LaundryGothic (Tier 2): 5% (로고, 온보딩, 이벤트성 헤드라인)
1.3 Tier 구조
| Tier | 폰트 | 용도 | 사용 빈도 |
|---|---|---|---|
| Tier 1 — Base | Pretendard | 본문, 라벨, 버튼, 일상 UI | 95% |
| Tier 2 — Display | LaundryGothic | 로고, 온보딩, 이벤트 배너, 빅넘버, 마스코트 인용구 | 5% |
2. 폰트 패밀리
2.1 Pretendard (Tier 1)
가장 안정적인 한글 가독성을 제공하는 범용 폰트.
- 본문, 모든 UI 텍스트
- 9단계 weight 제공 (Thin~Black), 4단계만 사용
- 영문, 숫자도 포함 (별도 영문 폰트 불필요)
- 가격 표시 같은 숫자 정렬에는
font-variant-numeric: tabular-nums활용
2.2 LaundryGothic (Tier 2)
특이한 굴곡과 개성으로 브랜드 임팩트를 주는 디스플레이 폰트.
쓰는 곳
- 로고 (필수)
- 온보딩 헤드라인
- 이벤트 배너 제목
- 빅넘버 강조 (가격, 절약 금액)
- 시즌 캠페인 타이틀
- 마스코트 인용구
쓰지 않는 곳
- 긴 본문 (가독성 떨어짐)
- 버튼, 라벨 등 일관된 UI 패턴
- 3줄 이상의 텍스트
기본 규칙
- 한 화면에 LaundryGothic은 1~2곳만
- 짧고 감정 표현이 필요한 곳에서만
2.3 CSS Variables
css
--font-family-base: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
--font-family-display: 'LaundryGothic', 'Pretendard', sans-serif;3. Font Weight
Pretendard의 9단계 weight 중 4단계만 사용. 더 많이 쓰면 위계가 흐려짐.
| Token | Value | 사용 비율 | 용도 |
|---|---|---|---|
font-weight-regular | 400 | 80% | 본문, 긴 텍스트, 보조 텍스트 (기본값) |
font-weight-medium | 500 | 15% | 라벨, 버튼, 메뉴명 (한글에서 가장 많이 쓰는 강조) |
font-weight-semibold | 600 | 4% | 작은 제목, 가격 강조, 섹션 헤딩 |
font-weight-bold | 700 | 1% | 큰 제목, 빅넘버, Hero 헤드라인 (아껴 사용) |
LaundryGothic은 Bold 1단계만 사용.
사용하지 않을 Weight
- Thin(100), ExtraLight(200), Light(300): 한글에서 너무 얇아 가독성 떨어짐
- ExtraBold(800), Black(900): 한글에서 너무 무거워 답답함
한글 vs 영문 Weight 차이
한글은 자소가 많아 같은 weight에서도 영문보다 무겁게 느껴짐. 영문 디자인 시스템에서 Bold를 쓰는 자리도, 한글에서는 SemiBold로 충분한 경우가 많음.
4. Type Scale (Primitives)
기준점은 16px (base). 한글 모바일 본문 가독성의 황금 기준.
| Token | Size | 비율 | 용도 |
|---|---|---|---|
text-xs | 12px | — | 캡션, 부가 정보 |
text-sm | 14px | ×1.17 | 보조 본문 |
text-base ⭐ | 16px | ×1.14 | 기본 본문 (기준점) |
text-lg | 18px | ×1.125 | 강조 본문, 작은 제목 |
text-xl | 22px | ×1.22 | 서브타이틀 |
text-2xl | 28px | ×1.27 | 페이지 헤딩 |
text-3xl | 36px | ×1.29 | 큰 헤딩, Display |
text-4xl | 48px | ×1.33 | Hero, 빅넘버 |
모든 단계가 1.1~1.3배 비율로 자연스러운 흐름을 만들어냄.
5. Line Height & Letter Spacing
5.1 핵심 원칙
"폰트 크기가 클수록 줄높이와 자간을 좁게"
큰 글자는 자간이 자연스럽게 벌어져 보이므로 좁혀야 하고, 작은 글자는 빽빽해 보이므로 띄워야 함 (착시 보정).
5.2 Line Height Scale
| Token | Value | 용도 |
|---|---|---|
lh-tight | 1.1 | Display, 빅넘버 |
lh-snug | 1.2 | 큰 헤딩 (3xl 이상) |
lh-condensed | 1.3 | 헤딩 (2xl) |
lh-normal | 1.4 | 서브타이틀 (xl) |
lh-relaxed | 1.5 | 작은 본문, 라벨, 캡션 |
lh-loose | 1.6 | 본문 (base, lg) ⭐ |
5.3 Letter Spacing Scale
| Token | Value | 용도 |
|---|---|---|
ls-tight | -0.02em | Display, 큰 헤딩 (3xl 이상) |
ls-snug | -0.01em | 헤딩 (xl, 2xl) |
ls-normal | 0 | 본문, 라벨 |
ls-wide | 0.01em | 작은 텍스트 (xs, 캡션) |
6. 의미별 토큰 (Semantic Tokens)
Primitives를 조합한 실제 사용 토큰. 디자이너가 바로 가져다 쓰는 단위.
6.1 Display (빅넘버, Hero 헤드라인)
| Token | Size | Weight | Line H. | Letter S. | 용도 |
|---|---|---|---|---|---|
display | 48px | Bold (700) | 1.1 | -0.02em | Hero 헤드라인, 빅넘버 (한 화면 1개 이하) |
display-sm | 36px | Bold (700) | 1.2 | -0.02em | 큰 헤드라인 |
6.2 Heading (제목)
| Token | Size | Weight | Line H. | Letter S. | 용도 |
|---|---|---|---|---|---|
heading-lg | 28px | SemiBold (600) | 1.3 | -0.01em | 페이지 제목, 매장명 |
heading-md | 22px | SemiBold (600) | 1.4 | -0.01em | 섹션 제목 |
heading-sm | 18px | SemiBold (600) | 1.5 | 0 | 카드 제목, 소제목 |
6.3 Body (본문)
| Token | Size | Weight | Line H. | Letter S. | 용도 |
|---|---|---|---|---|---|
body-lg | 18px | Regular (400) | 1.6 | 0 | 강조 본문, 인용구 |
body ⭐ | 16px | Regular (400) | 1.6 | 0 | 기본 본문 (모든 본문은 일단 이걸로 시작) |
body-sm | 14px | Regular (400) | 1.5 | 0 | 보조 본문, 설명문 |
6.4 Label (버튼, 라벨, UI 텍스트)
| Token | Size | Weight | Line H. | Letter S. | 용도 |
|---|---|---|---|---|---|
label-lg | 16px | Medium (500) | 1.5 | 0 | 큰 버튼, 메인 CTA |
label | 14px | Medium (500) | 1.5 | 0 | 기본 버튼, 라벨, 메뉴명 |
label-sm | 12px | Medium (500) | 1.5 | 0.01em | 작은 뱃지, 태그 |
6.5 Caption (캡션, 부가 정보)
| Token | Size | Weight | Line H. | Letter S. | 용도 |
|---|---|---|---|---|---|
caption | 12px | Regular (400) | 1.5 | 0.01em | 캡션, 부가 정보, 시간 표시 |
7. 사용 가이드라인
7.1 토큰 선택 흐름
1. 어떤 종류의 텍스트인가?
- 가장 강조하고 싶은 한 줄? → Display
- 제목? → Heading (lg/md/sm)
- 본문? → Body (lg/기본/sm)
- 버튼/라벨? → Label (lg/기본/sm)
- 작은 부가 정보? → Caption
2. 크기 변형이 필요한가?
- 더 크게 → -lg
- 더 작게 → -sm7.2 한 화면에서의 위계
좋은 위계는 보통 3~5단계가 한 화면에 등장.
예시 — 매장 상세 화면
- 매장명:
heading-lg - 픽업 정보 제목:
heading-sm - 본문 설명:
body-sm또는body - 가격:
display-sm또는heading-md - 주문 버튼:
label-lg - 부가 정보:
caption
7.3 Tier 2 (LaundryGothic) 적용
같은 의미 토큰을 Tier 2 폰트로도 쓸 수 있음:
display-sm+ LaundryGothic → 온보딩 헤드라인heading-lg+ LaundryGothic → 이벤트 배너 제목display+ LaundryGothic → 빅넘버 강조
기본은 Pretendard. 특별한 임팩트가 필요할 때만 font-family를 LaundryGothic으로 바꿈.
8. CSS Variables 구현 예시
css
:root {
/* Font Family */
--font-family-base: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
--font-family-display: 'LaundryGothic', 'Pretendard', sans-serif;
/* Font Weight */
--font-weight-regular: 400;
--font-weight-medium: 500;
--font-weight-semibold: 600;
--font-weight-bold: 700;
/* Type Scale (Primitives) */
--text-xs: 12px;
--text-sm: 14px;
--text-base: 16px;
--text-lg: 18px;
--text-xl: 22px;
--text-2xl: 28px;
--text-3xl: 36px;
--text-4xl: 48px;
/* Line Height */
--lh-tight: 1.1;
--lh-snug: 1.2;
--lh-condensed: 1.3;
--lh-normal: 1.4;
--lh-relaxed: 1.5;
--lh-loose: 1.6;
/* Letter Spacing */
--ls-tight: -0.02em;
--ls-snug: -0.01em;
--ls-normal: 0;
--ls-wide: 0.01em;
}
/* Semantic Tokens */
.text-display {
font-size: var(--text-4xl);
font-weight: var(--font-weight-bold);
line-height: var(--lh-tight);
letter-spacing: var(--ls-tight);
}
.text-display-sm {
font-size: var(--text-3xl);
font-weight: var(--font-weight-bold);
line-height: var(--lh-snug);
letter-spacing: var(--ls-tight);
}
.text-heading-lg {
font-size: var(--text-2xl);
font-weight: var(--font-weight-semibold);
line-height: var(--lh-condensed);
letter-spacing: var(--ls-snug);
}
.text-heading-md {
font-size: var(--text-xl);
font-weight: var(--font-weight-semibold);
line-height: var(--lh-normal);
letter-spacing: var(--ls-snug);
}
.text-heading-sm {
font-size: var(--text-lg);
font-weight: var(--font-weight-semibold);
line-height: var(--lh-relaxed);
letter-spacing: var(--ls-normal);
}
.text-body-lg {
font-size: var(--text-lg);
font-weight: var(--font-weight-regular);
line-height: var(--lh-loose);
letter-spacing: var(--ls-normal);
}
.text-body {
font-size: var(--text-base);
font-weight: var(--font-weight-regular);
line-height: var(--lh-loose);
letter-spacing: var(--ls-normal);
}
.text-body-sm {
font-size: var(--text-sm);
font-weight: var(--font-weight-regular);
line-height: var(--lh-relaxed);
letter-spacing: var(--ls-normal);
}
.text-label-lg {
font-size: var(--text-base);
font-weight: var(--font-weight-medium);
line-height: var(--lh-relaxed);
letter-spacing: var(--ls-normal);
}
.text-label {
font-size: var(--text-sm);
font-weight: var(--font-weight-medium);
line-height: var(--lh-relaxed);
letter-spacing: var(--ls-normal);
}
.text-label-sm {
font-size: var(--text-xs);
font-weight: var(--font-weight-medium);
line-height: var(--lh-relaxed);
letter-spacing: var(--ls-wide);
}
.text-caption {
font-size: var(--text-xs);
font-weight: var(--font-weight-regular);
line-height: var(--lh-relaxed);
letter-spacing: var(--ls-wide);
}
/* Tier 2 — LaundryGothic 변형 */
.text-display.is-display-font,
.text-heading-lg.is-display-font {
font-family: var(--font-family-display);
}9. Figma 적용 방법
9.1 Text Style 구조 권장
Yumyum/
├── Display/
│ ├── display
│ └── display-sm
├── Heading/
│ ├── heading-lg
│ ├── heading-md
│ └── heading-sm
├── Body/
│ ├── body-lg
│ ├── body ⭐ (기본)
│ └── body-sm
├── Label/
│ ├── label-lg
│ ├── label
│ └── label-sm
├── Caption/
│ └── caption
└── Display-LaundryGothic/ (Tier 2 변형)
├── display-laundry
└── heading-laundry9.2 권장 Figma 플러그인
- Tokens Studio — JSON으로 타이포그래피 토큰 일괄 import/export
- Typestyles — 텍스트 스타일 일괄 변경 관리
10. 기존 vs 신규 비교
| 항목 | 기존 | v2 (신규) |
|---|---|---|
| 단계 수 | 8개 (정의 모호) | 12개 의미별 토큰 |
| 사이즈 분포 | 28/18/17/16/14/12/10 (들쭉날쭉) | 12/14/16/18/22/28/36/48 (균등) |
| Weight 사용 | Bold/SemiBold/Regular 혼재, 일관성 ✗ | Regular/Medium/SemiBold/Bold, 4단계 명확 |
| Line Height | 정의 없음 | 6단계 (1.1~1.6) |
| Letter Spacing | 정의 없음 | 4단계 (-0.02em ~ 0.01em) |
| 폰트 패밀리 | 1개 (LaundryGothic) | Tier 구조 (Pretendard + LaundryGothic) |
| 명명 체계 | h1/h2/h3 + title + body 혼재 | 카테고리-사이즈 일관 체계 |
| 한글 최적화 | 없음 | 한글 가독성 기준 설계 |
11. 다음 단계
타이포그래피 시스템이 자리잡으면, 다음 디자인 시스템 요소도 같은 방식으로 정리:
- [ ] Spacing — 4px 베이스 그리드 (4, 8, 12, 16, 24, 32, 40, 64)
- [ ] Radius — 4, 8, 12, 16, 24 (pill)
- [ ] Elevation/Shadow — 0~4단계
- [ ] Components — Button, Input, Card, Modal, Badge, Toast 등 (컬러 + 타이포 토큰 조합)
- [ ] Stratis UI Icons — Stratis UI Icons 통일, 사이즈 가이드
이 문서는 살아있는 문서입니다. 디자인 시스템이 발전하면서 함께 업데이트하세요.