Tiro
Tiro Design
Foundations

Typography

Tiro의 타이포그래피 시스템. 듀얼 폰트 (브랜드 세리프 + UI 산세리프).

Tiro는 듀얼 폰트 시스템을 사용합니다:

  • Averia Serif Libre: 브랜드 목소리 (마케팅, 히어로, 태그라인, in-app의 브랜드 모멘트)
  • Pretendard JP: UI 워크호스 (네비게이션, 본문, 데이터 — 모든 로케일)

두 폰트는 기본 역할이 다르지만 교차 사용 가능합니다:

  • Averia는 UI 내부에서도 브랜드 모멘트에 사용 가능 — AI 채팅 인사말, 온보딩 환영, Tiro가 화자로 등장하는 표면 등
  • Pretendard JP는 한국어 마케팅 헤드라인의 기본입니다. 세리프 분기는 2026-08 에 없앴습니다

일반 원칙: 기능적 UI 텍스트(버튼, 라벨, 네비, 본문)에 Averia 쓰지 않고, 영어/일본어 마케팅 hero에 Pretendard JP 쓰지 않는다. 그 외의 교차는 디자인 판단.


Font Families

TokenValueDescription
ui
Pretendard JP
모든 UI 텍스트 (KO / EN / JA). 한국어 브랜드 헤드라인은 brandKr 로 옮겼습니다.
brandKr
Hahmlet
한국어 브랜드 헤드라인 · 마케팅 전용. 2026-08-17 헤이즐 결정으로 마케팅 한글 자리를 100% 이 글꼴로 바꿉니다. 검토물은 hahmlet-2026-08-16/Tiro_한글제목글꼴_검토전체.html 입니다.
brand
Averia Serif Libre
영문 브랜드 헤드라인 · 마케팅 전용. 본문에 쓰지 않습니다.
mono
Geist Mono
코드 · 타임스탬프 · 테크니컬 라벨

Pretendard JP는 한글·일본어·Latin 스크립트를 일관된 메트릭으로 커버합니다. KO/EN용 별도 폰트 스택을 두지 않습니다.


Type Scale

Web · Desktop · Mobile

아래 램프는 세 플랫폼이 같이 쓰는 정본입니다.

모바일 앱(tiro-app)도 이 램프를 씁니다. 자체 Typography 객체 13단이 램프 단 이름을 카멜케이스로 그대로 씁니다. cmpXs = cmp-xs, bodyMd = body-md. React Native 는 CSS 변수를 못 받아서 클래스 문자열을 담은 TS 상수가 필요하고, 그 상수의 이름과 값이 램프와 1:1 입니다. 이관 기록은 MIGRATION-2026-08.md 의 8-7 입니다.

컴포넌트 문서의 예제는 아직 옛 이름을 씁니다. Typography.label1 · subtitle1 · body1_16 같은 이름이 16개 문서에 34곳 남아 있습니다. 폐기된 웹 램프와 옛 모바일 스케일이 섞여 있고 둘 다 지금 코드에 없습니다. 갱신은 별건입니다.

자간만 축이 둘입니다. 램프 각 단이 trackingMobile(px, 640px 미만)과 tracking(em, 640px 이상) 두 값을 가지고, React Native 는 브레이크포인트를 넘지 않으므로 항상 px 값을 받습니다.

램프는 한 단이 크기와 굵기와 행간과 자간을 함께 정합니다. 고를 때 먼저 묻는 것은 크기가 아니라 이 글이 줄바꿈되는가 입니다.

  • typography-cmp-* 는 한 줄짜리입니다. 버튼, 라벨, 배지, 메뉴, 탭. 행간이 좁습니다.
  • typography-body-* 는 여러 줄짜리입니다. 본문, 설명문. 같은 크기라도 행간이 넓습니다.
  • typography-h1 ~ h5 는 제목입니다. 굵기가 단마다 고정입니다 (h1 700, h2~h5 600).
  • typography-mono-* 는 타임스탬프·녹음 길이처럼 자리가 흔들리면 안 되는 숫자입니다. tabular-nums 와 함께 씁니다.

같은 13px이라도 cmp-sm 은 행간 18, body-sm 은 행간 20입니다. 한 줄로 끝나는 라벨에 body 를 쓰면 위아래가 뜨고, 문단에 cmp 를 쓰면 줄이 붙습니다.

굵기는 접미사로 붙습니다. 접미사 없음이 400, -plus 가 500, -bold 가 700입니다. -bold 는 cmp-* 에만 있습니다.

버튼 전용 단은 없습니다. 버튼 라벨도 위 규칙을 따릅니다. 실제 Button 컴포넌트는 크기별로 typography-cmp-md-plus(lg) · typography-body-sm-plus(default, sm) · typography-cmp-xs-plus(xs) 를 씁니다.

Headers

TokenValueDescription
h1
32 → 36px / 38 · Bold 700
tracking -0.025em
h2
28 → 30px / 34 · SemiBold 600
tracking -0.022em
h3
24px / 32 · SemiBold 600
tracking -0.02em
h4
20px / 28 · SemiBold 600
tracking -0.018em
h5
18px / 28 · SemiBold 600
tracking -0.015em

Component — 단일행 (cmp-*)

TokenValueDescription
cmp-lg
16px / 24 · Regular 400
tracking -0.012em
cmp-lg-plus
16px / 24 · SemiBold 600
tracking -0.012em
cmp-md
14px / 20 · Regular 400
tracking -0.01em
cmp-md-plus
14px / 20 · SemiBold 600
tracking -0.01em
cmp-md-bold
14px / 20 · Bold 700
tracking -0.01em
cmp-sm
13px / 18 · Regular 400
tracking -0.008em
cmp-sm-plus
13px / 18 · SemiBold 600
tracking -0.008em
cmp-sm-bold
13px / 18 · Bold 700
tracking -0.008em
cmp-xs
12px / 16 · Regular 400
tracking -0.005em
cmp-xs-plus
12px / 16 · SemiBold 600
tracking -0.005em
cmp-xs-bold
12px / 16 · Bold 700
tracking -0.005em
cmp-2xs
11px / 16 · Regular 400
tracking 0em
cmp-2xs-plus
11px / 16 · SemiBold 600
tracking 0em
cmp-2xs-bold
11px / 16 · Bold 700
tracking 0em
cmp-3xs
10px / 14 · Regular 400
tracking 0em
cmp-3xs-plus
10px / 14 · SemiBold 600
tracking 0em

Body — 다중행 (body-*)

TokenValueDescription
body-xl
18px / 28 · Regular 400
tracking -0.015em
body-xl-plus
18px / 28 · Medium 500
tracking -0.015em
body-lg
16px / 26 · Regular 400
tracking -0.012em
body-lg-plus
16px / 26 · Medium 500
tracking -0.012em
body-md
14px / 22 · Regular 400
tracking -0.01em
body-md-plus
14px / 22 · Medium 500
tracking -0.01em
body-sm
13px / 20 · Regular 400
tracking -0.008em
body-sm-plus
13px / 20 · Medium 500
tracking -0.008em
body-xs
12px / 18 · Regular 400
tracking -0.005em
body-xs-plus
12px / 18 · Medium 500
tracking -0.005em
body-2xs
11px / 18 · Regular 400
tracking 0em
body-2xs-plus
11px / 18 · Medium 500
tracking 0em
body-3xs
10px / 16 · Regular 400
tracking 0em

Mono

TokenValueDescription
mono-sm
13px / 20 · Regular 400
tracking -0.015em · mono
mono-2xs
11px / 16 · Medium 500
tracking -0.015em · mono

rem 표기 (16px base): px 표기 · 제목 h1 36 · h2 30 · h3 24 · h4 20 · h5 18
한 줄 cmp-xl 18 · cmp-lg 16 · cmp-md 14 · cmp-sm 13 · cmp-xs 12 · cmp-2xs 11 · cmp-3xs 10
여러 줄 body-xl 18 · body-lg 16 · body-md 14 · body-sm 13 · body-xs 12 · body-2xs 11 · body-3xs 10
모노 mono-sm 13 · mono-2xs 11


Brand Display (세리프, 마케팅 전용)

브랜드 타이포는 3단계 hierarchy (B / M / L) 로 운영합니다. B / M / L은 hierarchy 레벨 라벨이지 literal font weight 이름이 아닙니다.

HierarchyAveria Serif Libre (EN)한국어 · 일본어
B (강조)Bold 700Pretendard JP SemiBold 600
M (기본)Regular 400Pretendard JP Regular 400
L (옅은 강조)Light 300Pretendard JP Light 300
  • Averia Serif Libre는 Medium weight 자체가 존재하지 않음 — "M" 레벨은 Regular(400)으로 구현
  • 한국어 · 일본어 브랜드 텍스트는 세리프를 쓰지 않습니다. Noto Serif KR/JP는 2026-08 에 토큰 층에서 폐기했습니다. 토큰 소비처가 0건이었습니다. 자세한 내용은 MIGRATION-2026-08.md §4-6
  • 폰트 자산은 아직 배포에 남아 있습니다. PlanActivationWelcomeOverlay 와 OG 이미지 렌더 두 곳이 디자인 시스템을 지나지 않고 직접 지정하기 때문입니다. 그 둘을 정리해야 자산을 지울 수 있습니다

Italic (Averia 전용):

HierarchyRomanItalic
BBoldBold Italic
MRegularItalic
LLightLight Italic

Averia italic은 AI 채팅 인사말 ("Hi [name], Nice to see you again") 등 Tiro가 화자로 등장하는 브랜드 모멘트에 사용. 영문 전용입니다.

TokenValueDescription
brand-h1
32 → 64px / 34 · Bold 700
tracking -0.045em · brand
brand-h2
28 → 50px / 32 · Bold 700
tracking -0.03em · brand
brand-h3
32 → 36px / 38 · Regular 400
tracking 0em · brand
brand-h4
24px / 1 · Bold 700
tracking 0.01em · brand
brand-h5
20px / 28 · Light 300
tracking 0em · brand

브랜드 램프는 brand-h1 ~ brand-h5 5단입니다. brand-h1 과 brand-h2 만 크기가 반응형이고, 기본이 모바일 값이며 640px 이상에서 데스크탑 값으로 바뀝니다 (h1 32→64, h2 28→50). 제품 UI의 기본 본문은 14px 입니다.


Principles

  • Serif for soul, sans for utility — Averia는 브랜드 감성, Pretendard JP는 정보 처리
  • CJK는 세리프를 쓰지 않는다 — 한국어/일본어 브랜드 텍스트는 Pretendard JP로 갑니다. CJK 세리프는 Latin Bold와 매칭할 때 광학적으로 더 무거워져 톤이 어긋났고, 무게를 한 단 내리는 예외 규칙이 계속 따라붙었습니다. 규칙을 없애는 쪽을 택했습니다
  • B/M/L은 hierarchy 라벨 — literal weight 이름이 아님. 폰트별 실제 weight는 Brand Display 표 참조. Averia에는 Medium이 없음 (M = Regular)
  • Weight restraint in UI — 본문은 Regular(400)/Medium(500) 위주, Bold(700)는 제목·강조에만. Tiro는 calm, not emphatic
  • Italic은 Averia 한정 — AI 채팅 인사말 등 Tiro가 화자로 등장하는 브랜드 모멘트에서만. 한국어 · 일본어는 italic 미운영

Do / Don't

  • Do: 브랜드 모멘트 (로그인 헤드라인, 히어로, AI 채팅 인사말, 온보딩 환영)에는 Averia Serif Libre 기본 사용
  • Do: UI 기능 텍스트 (버튼, 라벨, 네비, 본문)는 Pretendard JP 기본 사용
  • Do: 타임스탬프·녹음 시간·카운터는 Geist Mono + tabular-nums
  • Do: 한국어 · 일본어 마케팅 헤드라인은 Pretendard JP 사용
  • Do: Averia "M" hierarchy는 Regular(400)으로 매핑 — 코드/Figma에서 Medium 적용 시도하면 fallback 발생
  • Do: Averia italic은 AI 채팅 인사말 등 Tiro가 화자로 등장하는 모멘트에만
  • Don't: 영문 마케팅 hero에 Pretendard JP 기본 사용 금지 (editorial weight 가 필요한 자리는 Averia)
  • Don't: UI 기능 텍스트의 기본 폰트로 Averia 사용 금지 (가독성·신뢰도)
  • Don't: 한 컴포넌트에 두 가지 초과 weight 혼용 금지
  • Don't: Averia에 Medium weight 적용 금지 (해당 weight 미존재 — 시스템이 Regular로 fallback하거나 깨짐)
  • Don't: 한국어 · 일본어에 세리프 브랜드 폰트 지정 금지 (2026-08 폐기)

On this page