Skip to content

Conversation

@moondev03
Copy link
Member

@moondev03 moondev03 commented Jan 20, 2026

📌 작업 내용

  • Typography System 설계 및 적용
  • 미리보기 구현

🧩 관련 이슈


📸 스크린샷

image

📢 논의하고 싶은 내용

Summary by CodeRabbit

릴리스 노트

  • 신기능

    • 통합 타이포그래피 시스템 추가: 폰트 무게·크기·줄간격·자간 토큰 지원
    • Suit 폰트 패밀리 도입 및 디자인 시스템 내 전역 타이포그래피 제공
    • 타이포그래피 미리보기 갤러리 추가
  • 리팩토링

    • 색상/테마 관련 네임스페이스 정리 및 테마에 타이포그래피 통합 적용

✏️ Tip: You can customize this high-level summary in your review settings.

PrezelColors 파일의 위치를 theme 패키지에서 foundation/color 패키지로 변경하고, 관련 import 구문을 수정했습니다.
*   feat: Pretendard Bold 폰트 추가
*   feat: Pretendard Medium 폰트 추가
*   feat: Pretendard SemiBold 폰트 추가
Prezel Design System에서 사용할 폰트의 Weight, Size, LineHeight, LetterSpacing에 대한 enum class를 정의합니다.

*   `PrezelFontWeight`: Regular, Medium, Bold 정의
*   `PrezelFontSize`: 12dp부터 24dp까지 5단계 크기 정의 및 `sp` 변환 함수 추가
*   `PrezelFontLineHeight`: 16sp부터 32sp까지 6단계 줄 높이 정의
*   `PrezelFontLetterSpacing`: 폰트 크기에 따라 동적으로 자간을 계산하는 로직 추가
Prezel 디자인 시스템의 타이포그래피를 정의하기 위해 `PrezelTextStyle` 데이터 클래스를 추가합니다. 이 클래스는 `fontWeight`, `fontSize`, `lineHeight`, `letterSpacing`을 포함하며, 이를 Compose의 `TextStyle`로 변환하는 `toTextStyle()` 함수를 제공합니다.
*   feat: Suit 폰트 PrezelFontFamily 추가
*   feat: 폰트의존성 추가
Prezel 디자인 시스템에 사용될 Text Style을 정의합니다.
Title, Body, Caption 스타일에 대해 각각 Medium, Bold, Regular 등의 Weight를 적용한 스타일들을 추가했습니다.
Prezel 디자인 시스템에 사용될 Typography 데이터 클래스를 추가합니다.

- `Title`, `Body`, `Caption` 스타일을 정의합니다.
- 각 스타일에 대해 `Medium`, `Bold`, `Regular` 등의 가중치를 포함합니다.
`PrezelTypographyScheme`를 추가하여 디자인 시스템의 타이포그래피를 정의합니다. 이 객체는 `PrezelTextStyles`를 `TextStyle`로 변환하여 `PrezelTypography`를 생성하는 `Default` 함수를 제공합니다.
* PrezelTheme에 Typography를 사용할 수 있도록 `LocalPrezelTypography` 및 관련 속성을 추가합니다.
* `PrezelTheme` Composable에서 `PrezelTypographyScheme`을 제공하도록 수정합니다.
*   `PrezelFontLineHeight`의 단위를 sp에서 dp로 변경
*   사용자의 기기 글꼴 크기 설정에 따라 lineHeight가 동적으로 sp로 변환되도록 `sp()` 확장 함수 추가
*   `PrezelTextStyle`에서 `lineHeight.value` 대신 `lineHeight.sp()`를 사용하도록 수정
* `PrezelFontSpec.kt`
    * `PrezelFontSize` 및 `PrezelFontLineHeight`의 `sp()` 함수를 `sp` 속성으로 변경하여 가독성을 개선했습니다.
    * `PrezelFontLetterSpacing`의 단위를 `em`으로 변경하여 글꼴 크기에 상대적으로 적용되도록 수정했습니다.
* `PrezelTextStyle.kt`
    * `toTextStyle()` 함수를 단일 표현식 함수로 단순화했습니다.
    * 변경된 `PrezelFontSpec`의 속성들을 직접 사용하도록 수정했습니다.
* `PrezelTypographyScheme.kt`에 모든 타이포그래피 스타일을 표시하는 미리보기(@Preview)를 추가합니다.
* 각 타이포그래피 스타일에 대한 이름, 크기, 줄 높이, 자간 및 굵기 정보를 포함합니다.
@moondev03 moondev03 self-assigned this Jan 20, 2026
@moondev03 moondev03 added the ✨ feat 새로운 기능 추가 또는 기존 기능 확장 label Jan 20, 2026
@moondev03 moondev03 linked an issue Jan 20, 2026 that may be closed by this pull request
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 20, 2026

Walkthrough

core:designsystem 모듈에 Material 기반이 아닌 커스텀 Typography System을 도입합니다. 폰트 가중치, 크기, 줄높이, 자간을 정의하는 열거형들(PrezelFontWeight, PrezelFontSize, PrezelFontLineHeight, PrezelFontLetterSpacing)과 SuitFamily 폰트를 추가합니다. PrezelTextStyle 데이터 클래스와 미리 정의된 텍스트 스타일 집합(PrezelTextStyles)을 생성하고, 이를 집계하는 PrezelTypography 타입을 도입합니다. 기존 Material3 기반 TypeTokens 파일을 제거하고, PrezelTheme에 composition local을 통한 typography 프로퍼티(LocalPrezelTypography 및 PrezelTheme.typography)를 추가합니다. 또한 PrezelTypographyScheme에 Default 구성과 타이포그래피 미리보기 UI가 포함됩니다.

Possibly related PRs

  • Color System 설계 및 적용 #10: designsystem 모듈의 PrezelColors 및 PrezelTheme 파일 변경과 패키지/임포트 관련 수정이 겹쳐 코드 수준에서 직접적인 연관성이 있음.
🚥 Pre-merge checks | ✅ 4 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed PR 제목이 변경 사항의 주요 내용을 정확하게 반영하고 있으며, Typography System 설계 및 적용이라는 핵심 변경 사항을 명확하게 요약하고 있습니다.
Description check ✅ Passed PR 설명이 템플릿의 필수 섹션(작업 내용, 관련 이슈, 스크린샷, 논의 내용)을 모두 포함하고 있으며, 변경 사항과 관련된 정보를 충분히 제공하고 있습니다.
Linked Issues check ✅ Passed PR의 모든 코드 변경 사항이 이슈 #11의 요구 사항(Material Typography 대신 서비스 전용 Typography System 설계, 폰트 토큰 정의, 의미 기반 구조 제공)을 충족하고 있습니다.
Out of Scope Changes check ✅ Passed 모든 코드 변경 사항이 Typography System 설계 및 적용이라는 이슈 #11의 범위 내에 있으며, 범위를 벗어난 변경 사항이 없습니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@HamBeomJoon HamBeomJoon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니당

*   feat: PrezelTextStyle에 Suit 폰트 적용
Prezel 디자인 시스템의 폰트 관련 상수의 네이밍 컨벤션을 통일합니다.

기존 `V_100`과 같이 언더스코어(_)를 사용하던 방식에서 `V100`으로 변경하여 일관성을 확보하고 가독성을 개선합니다.

*   `PrezelFontSize` enum 상수명 변경 (e.g., `V_100` -> `V100`)
*   `PrezelFontLineHeight` enum 상수명 변경 (e.g., `V_100` -> `V100`)
*   `PrezelFontLetterSpacing` enum 상수명 변경 (e.g., `V_100` -> `V100`)
*   변경된 enum 상수를 사용하도록 `PrezelTextStyles` 객체 업데이트
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In
`@Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/foundation/typography/PrezelFontSpec.kt`:
- Around line 11-17: The PrezelFontWeight enum's names (REGULAR, MEDIUM, BOLD)
map to non-standard FontWeight values (FontWeight.Medium, FontWeight.SemiBold,
FontWeight.Bold) and need a KDoc to explain this intentional mapping; add a KDoc
comment directly above the enum PrezelFontWeight that states Suit only provides
Medium/SemiBold/Bold and documents the mapping (REGULAR -> Suit Medium (500),
MEDIUM -> Suit SemiBold (600), BOLD -> Suit Bold (700)) and the rationale so
future readers understand why REGULAR != FontWeight.Normal.
🧹 Nitpick comments (1)
Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/foundation/typography/PrezelFontSpec.kt (1)

34-48: value 프로퍼티 가시성 불일치

PrezelFontSize.valueprivate인 반면, PrezelFontLineHeight.valuepublic입니다. 의도적인 설계가 아니라면 API 일관성을 위해 동일한 가시성 수준을 유지하는 것이 좋습니다.

♻️ 일관성을 위한 수정 제안
 enum class PrezelFontLineHeight(
-    val value: Dp,
+    private val value: Dp,
 ) {

@moondev03 moondev03 merged commit 8853436 into develop Jan 21, 2026
1 check passed
@moondev03 moondev03 deleted the feat/#11-typography-system branch January 21, 2026 11:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ feat 새로운 기능 추가 또는 기존 기능 확장

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Typography System 설계 및 적용

3 participants