Typography
Montage 디자인 시스템의 타이포그래피 체계
Typography는 Montage 디자인 시스템에서 사용되는 모든 텍스트 스타일을 정의합니다. 폰트 크기, 두께, 자간, 행간 등 텍스트의 시각적 특성을 일관되게 적용할 수 있도록 표준화된 타이포그래피 시스템을 제공합니다.
Note
텍스트 스타일을 적용할 때는 일관성을 위해 직접 폰트를 지정하기보다 Typography 시스템을 사용하는 것이 권장됩니다.
enum Variant
텍스트 변형을 정의하는 열거형
-
Overview
Variant는 텍스트의 용도와 계층 구조에 따라 서로 다른 사이즈, 자간, 행간 값을 갖는 텍스트 스타일을 정의합니다.
계층 구조:
- Display: 가장 크고 강조된 텍스트 (배너, 랜딩 페이지 등)
- Title: 주요 제목 텍스트
- Heading: 중간 크기의 제목 텍스트
- Headline: 소제목 텍스트
- Body: 기본 본문 텍스트
- Label: 작은 텍스트 (버튼, 폼 레이블 등)
- Caption: 가장 작은 보조 텍스트
case body1
기본 본문 텍스트
case body1Reading
긴 텍스트용 본문
case body2
작은 본문 텍스트
case body2Reading
긴 텍스트용 작은 본문
case caption1
캡션 텍스트
case caption2
작은 캡션 텍스트
case display1
가장 큰 디스플레이 텍스트
case display2
큰 디스플레이 텍스트
case display3
중간 디스플레이 텍스트
case heading1
주요 헤딩
case heading2
보조 헤딩
case headline1
강조 헤드라인
case headline2
일반 헤드라인
case label1
라벨 텍스트
case label1Reading
긴 텍스트용 라벨
case label2
작은 라벨 텍스트
case title1
대제목
case title2
중간 제목
case title3
소제목
var fontHeight: CGFloat
각 변형에 대한 폰트 높이
var fontSize: CGFloat
각 변형에 대한 폰트 크기
var lineHeight: CGFloat
각 변형에 대한 행 높이
var lineSpacing: CGFloat
각 변형에 대한 행간 높이
var textStyle: Font.TextStyle
Dynamic Type 스케일의 기준이 되는 SwiftUI 텍스트 스타일.
-
Discussion
각 variant의 고정 크기는 그대로 두되, 사용자가 시스템 글자 크기를 키우면 여기에 매핑된 텍스트 스타일의 스케일 곡선을 따라 커진다. 큰 글자(display/title)는 완만하게, 작은 글자(caption)는 더 적극적으로 커지도록 역할·크기가 가장 가까운 스타일에 연결한다.
단 Typography.Variant.caption2는 이름이 같은
.caption2대신 Typography.Variant.caption1과 같은.caption을 쓴다..caption2곡선만 유독 가팔라서(11pt 기준 xLarge 15pt, xxxLarge 19pt) 가장 작아야 할 caption2가 caption1·label2를 추월하고 xxxLarge에서는 label1과 같아진다. 같은 곡선에 두면 caption2가 caption1 아래 자리를 지켜 크기 위계가 모든 단계에서 보존된다.
var tracking: CGFloat
각 변형에 대한 자간 (letter spacing)
var uiTextStyle: UIFont.TextStyle
Dynamic Type 스케일의 기준이 되는 UIKit 텍스트 스타일. textStyle과 동일한 논리이며 UIKit 케이스 이름(.title1, .caption1)만 다르다.
enum Weight
폰트 두께를 정의하는 열거형
-
Overview
Weight는 텍스트의 시각적 강조를 위한 세 가지 기본 두께를 제공합니다. 텍스트의 중요도나 계층 구조에 따라 적절한 두께를 선택하여 사용합니다.
case bold
굵은 두께
case medium
중간 두께
case regular
일반 두께
var pretendardWeight: Pretendard.Weight
Pretendard 폰트 두께 매핑
extension UIFont
static func font(size: CGFloat, weight: Typography.Weight) -> UIFont?
Montage 디자인 시스템의 폰트를 생성합니다.
-
Parameters
-
Return Value
생성된 UIFont 인스턴스. 폰트를 찾을 수 없는 경우 nil 반환
-
Discussion
Note
반환 폰트는
.body기준 Dynamic Type 스케일이 적용된다. 실행 중 글자 크기 변경에 반응하려면 사용하는 뷰에서adjustsFontForContentSizeCategory = true를 설정해야 한다.
static func font(variant: Typography.Variant, weight: Typography.Weight) -> UIFont
Montage 디자인 시스템의 폰트를 생성합니다.
-
Parameters
-
Return Value
생성된 UIFont 인스턴스. 폰트를 찾을 수 없는 경우 시스템 폰트로 대체
-
Discussion
Note
반환 폰트는 variant별 텍스트 스타일(uiTextStyle) 기준 Dynamic Type 스케일이 적용된다. 실행 중 글자 크기 변경에 반응하려면 사용하는 뷰에서
adjustsFontForContentSizeCategory = true를 설정해야 한다.
extension Font
static func font(size: CGFloat, weight: Typography.Weight) -> Font
Montage 디자인 시스템의 폰트를 생성합니다.
-
Parameters
-
Return Value
생성된 Font 인스턴스
static func font(variant: Typography.Variant, weight: Typography.Weight) -> Font?
Montage 디자인 시스템의 폰트를 생성합니다.
-
Parameters
-
Return Value
생성된 Font 인스턴스
extension UILabel
static func label(String, variant: Typography.Variant, weight: Typography.Weight, color: UIColor) -> UILabel
Montage 디자인 시스템의 스타일을 적용한 UILabel을 생성합니다.
-
Parameters
-
Return Value
생성된 UILabel 인스턴스
static func label(String, variant: Typography.Variant, weight: Typography.Weight, semantic: Color.Semantic) -> UILabel
Montage 디자인 시스템의 스타일을 적용한 UILabel을 생성합니다.
-
Parameters
-
Return Value
생성된 UILabel 인스턴스
extension Text
func typography(variant: Typography.Variant, weight: Typography.Weight, color: SwiftUI.Color) -> Text
타이포그래피 변형에 따른 스타일을 적용합니다.
-
Parameters
-
Return Value
스타일이 적용된 Text 인스턴스
func typography(variant: Typography.Variant, weight: Typography.Weight, semantic: Color.Semantic) -> Text
타이포그래피 변형에 따른 스타일을 적용합니다.
-
Parameters
-
Return Value
스타일이 적용된 Text 인스턴스
func paragraph(variant: Typography.Variant, weight: Typography.Weight, color: SwiftUI.Color) -> some View
타이포그래피 변형에 따른 단락 스타일을 적용합니다.
-
Parameters
-
Return Value
단락 스타일이 적용된 View
func paragraph(variant: Typography.Variant, weight: Typography.Weight, semantic: Color.Semantic) -> some View
타이포그래피 변형에 따른 단락 스타일을 적용합니다.
-
Parameters
-
Return Value
단락 스타일이 적용된 View
extension View
func adjustLineHeight(variant: Typography.Variant) -> some View
타이포그래피 변형에 따른 줄 높이를 적용합니다.
-
Parameters
-
Return Value
줄 높이가 적용된 View
extension NSAttributedString
static func attributedString(String, variant: Typography.Variant, weight: Typography.Weight, color: SwiftUI.Color, lineBreakMode: NSLineBreakMode) -> NSAttributedString
Montage 디자인 시스템의 타이포그래피를 적용한 NSAttributedString을 생성합니다.
-
Parameters
-
Return Value
Montage 스타일이 적용된 NSAttributedString
static func attributedString(String, variant: Typography.Variant, weight: Typography.Weight, semantic: Color.Semantic, lineBreakMode: NSLineBreakMode) -> NSAttributedString
Montage 디자인 시스템의 타이포그래피를 적용한 NSAttributedString을 생성합니다.
-
Parameters
-
Return Value
Montage 스타일이 적용된 NSAttributedString