# [[가변 타이포그래피 (Fluid Typography)]]

## 📌 Brief 시 Summary
가변 타이포그래피(Fluid Typography)는 미디어 쿼리나 특정 중단점(breakpoint)에서 폰트 크기가 갑작스럽게 변하는 대신, 뷰포트 너비의 범위에 따라 폰트 크기가 부드럽고 일정하게 조정되도록 만드는 반응형 웹 디자인 기법입니다 [1, 2]. 고정된 폰트 크기가 모바일에서는 너무 작거나 데스크톱에서는 너무 커지는 문제를 해결하기 위해 고안되었습니다 [3]. 주로 CSS의 `clamp()` 함수와 상대 단위(vw, rem 등)를 결합하여 사용하며, 추가적인 중단점 설정 없이도 다양한 화면 크기에서 최적화된 가독성과 일관성을 제공합니다 [1, 4].

## 📖 Core Content
* **가변 타이포그래피의 작동 원리와 이점:** 가변 타이포그래피는 수동으로 중단점을 설정하고 계산할 필요 없이, 지정된 최소 크기와 최대 크기 사이에서 뷰포트의 크기 변화율에 따라 폰트 크기가 자동으로 보간(interpolated)되어 렌더링됩니다 [5]. 이를 통해 화면이 매우 좁은 320px 모바일 화면부터 2560px 이상의 대형 모니터까지 글자가 깨지거나 지나치게 비대해지는 현상을 방지하며, 여러 개의 미디어 쿼리를 작성해야 하는 수고를 덜어 유지보수성을 크게 높여줍니다 [1, 4].
* **`clamp()` 함수를 활용한 구현:** 현대 반응형 설계의 핵심 기술은 CSS의 `clamp(min, preferred, max)` 함수를 활용하는 것입니다 [1]. 이 함수는 하한선(최소 폰트 크기), 뷰포트 상대적 배율(선호 크기), 상한선(최대 폰트 크기)을 설정하여, 브라우저의 사용 가능한 공간에 맞춰 글자 크기를 동적으로 조절합니다 [1, 4]. 예를 들어, `font-size: clamp(1.5rem, 2vw + 1rem, 3rem);`과 같이 선언하면 브라우저가 상황에 맞게 폰트 크기를 연산합니다 [4].
* **접근성(Accessibility)을 위한 설계 고려사항:** 가변 타이포그래피를 구현할 때 단순히 뷰포트 단위(`vw` 또는 `cqi`)만 단독으로 사용하여 폰트 크기를 설정하면, 사용자가 브라우저에서 화면 확대(zoom) 기능을 사용할 때 글자 크기가 커지지 않아 접근성 지침(WCAG의 200% 확대 요구사항)을 위반할 위험이 있습니다 [6]. 이를 방지하기 위해서는 `calc(16px + 1vw)`처럼 기본 픽셀 또는 상대 단위에 뷰포트 단위를 더하거나 [7], `clamp()` 함수 내에서 `em` 또는 `rem` 단위(사용자 설정 기준)와 뷰포트 단위를 조합하여 브라우저 확대 기능이 정상적으로 동작하도록 해야 합니다 [8].
* **타이포그래피 스케일링 구성:** 복잡한 디자인 시스템에서는 여러 폰트 크기 간의 관계를 나타내는 타이포그래피 스케일이 필요합니다 [9]. CSS의 `pow()` 함수를 활용하면 1rem을 기본 크기로 설정한 뒤, 외부 도구 없이도 수학적 비율에 맞춘 자체적인 타이포그래피 스케일을 유연하게 생성 및 유지보수할 수 있습니다 [10, 11].

## 🔗 Knowledge Connections
- **Related Topics:** [[반응형 디자인 (Responsive Design)]], [[접근성 (Accessibility)]], [[미디어 쿼리 (Media Queries)]], [[CSS 함수 (clamp, calc, pow)]]
- **Projects/Contexts:** [[유지보수 가능한 CSS 아키텍처 설계]], [[모바일 퍼스트 (Mobile-First) 디자인 전략]], [[디자인 시스템 (Design Systems) 구축]]
- **Contradictions/Notes:** 뷰포트 단위(vw, vi 등)를 단독으로 사용하여 폰트 크기를 완전히 유동적으로 만드는 것은 매끄러운 뷰포트 대응을 제공하지만, 사용자 선호 설정과 브라우저 확대 기능을 무력화시켜 사용자 경험과 접근성을 저해하므로 단독 사용은 피해야 합니다 [6].

---
*Last updated: 2026-04-26*