한글 가독성 Lab — 타이포그래피 A/B 실험
동일한 한국어 문장을 서로 다른 두 가지 CSS 조건(글자 크기, 행간, 자간, 문단 폭, 줄바꿈 규칙)에서 동시에 렌더링하고, 실제 브라우저가 계산한 요소 높이(px)와 줄 수(Line Count)의 물리적 차이를 정량 비교합니다.
한글 타이포그래피 A/B 실시간 비교 조작기
동일한 한글 텍스트를 두 독립 조건(A/B)에서 렌더링하고 높이, 줄 수, 오버플로를 측정 비교합니다.
.typography-preset-a {
font-family: -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Pretendard", "Malgun Gothic", sans-serif;
font-size: 16px;
font-weight: 400;
line-height: 1.6;
letter-spacing: -0.02em;
max-width: 640px;
word-break: keep-all;
overflow-wrap: break-word;
}.typography-preset-b {
font-family: -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Pretendard", "Malgun Gothic", sans-serif;
font-size: 16px;
font-weight: 400;
line-height: 1.2;
letter-spacing: 0.05em;
max-width: 360px;
word-break: normal;
overflow-wrap: normal;
}디지털 화면에서의 한글 타이포그래피 엔지니어링 원리
한글은 1443년 창제된 음소 문자이면서도 표기 시에는 초성(자음), 중성(모음), 종성(받침)을 하나의 사각형 글자 틀(Em Box) 안에서 조합하여 표기하는 독창적인 ‘모아쓰기’ 체계를 지닙니다. 알파벳이 소문자의 x-height를 기준으로 상하 여백(Ascender/Descender)이 자연스럽게 확보되는 구조인 것과 달리, 한글은 글자 틀 안에서 자음과 모음이 결합되는 구조적 특성상 상하좌우 여백이 상대적으로 적어 디지털 디스플레이에서 폰트 크기 대비 시각적 밀도가 높게 체감될 수 있습니다.
1. 행간(line-height)과 줄 간 수직 간격(Leading)의 레이아웃 특성
한 줄을 읽고 다음 줄로 시선이 이동할 때 행간(line-height)이 1.3 이하로 협소하면, 윗줄의 종성(받침)과 아랫줄의 초성 간 물리적 수직 여백이 좁아져 시각적 줄 구분이 모호해지는 현상이 발생합니다. 본 실험실의 브라우저 레이아웃 실측 데이터에 따르면, 16px 폰트 기준 동일 문단에서 line-height를 1.2에서 1.65로 조절할 때 문단 전체의 렌더링 높이와 줄 간 수직 여백이 약 40% 이상 확장되는 물리적 기하 변화가 확인됩니다. (※ 이는 브라우저 DOM 높이 측정 결과이며, 실제 인간 독자의 주관적 피로도나 인지 속도는 개인의 시각 조건 및 환경에 따라 상이하므로 별도의 인체공학적 사용자 연구와 구분되어야 합니다.)
2. 한 줄당 글자 수(Measure)와 본문 폭(max-width)의 한계
W3C 웹 접근성 가이드라인(WCAG 2.2) 1.4.8(Visual Presentation) 기준은 최고 적합성 수준인 AAA 성공 기준(Success Criterion)에 해당하며, 시선 이동의 부담을 줄이기 위해 한 줄당 텍스트 길이를 영문 기준 80자(글리프 밀도가 높은 한글의 경우 약 40자 내외) 이하로 유지할 것을 권장합니다. 데스크톱 고해상도 모니터(1920px 이상)에서 본문 컨테이너에 max-width를 선언하지 않으면, 한 줄이 1,200px 이상 길어져 시선 이동 거리가 과도해질 수 있습니다. 반대로 320px 모바일 화면에서는 한 줄당 15자 내외로 너무 자주 줄바꿈되어 문맥 파악에 방해가 될 수 있습니다. 따라서 실무에서는 max-width: 640px ~ 680px 구간을 설정하여 반응형 화면에서 균형 잡힌 문단 비례를 형성하는 패턴을 널리 활용합니다.
3. 단어 단위 줄바꿈(word-break: keep-all)의 실무 적용과 안전장치
CSS 표준 속성인 word-break: keep-all;은 띄어쓰기 공백을 기준으로만 줄바꿈을 허용하여 한글 단어가 중간에 쪼개지는 현상을 방지합니다. 그러나 이 속성은 긴 영단어, 이메일 주소, 하이퍼링크 URL이 포함될 때 컨테이너 경계선을 무시하고 가로로 넘쳐나는 부작용을 동반합니다. 따라서 실제 상용 서비스에 적용할 때는 반드시 overflow-wrap: break-word; 또는 overflow-wrap: anywhere;를 병행 선언하는 2중 방어 코드가 필수적입니다.
🔗 본 실험과 연계된 실무 사례 연구:
- 사례 2: 문단 리듬과 행간 — 281자 한글 단락에서의 줄바꿈 및 행간 실측 분석
- 사례 4: 혼합 텍스트 줄바꿈 — keep-all과 URL이 충돌할 때의 레이아웃 결함 해결책
한글 타이포그래피 자주 묻는 질문 (FAQ)
Q. 한글 웹 폰트에서 행간(line-height)의 권장 기준은 어떻게 되나요?
A. 영문은 x-height(소문자 높이) 중심인 반면, 한글은 사각형 틀(Em square) 전체를 채우는 초성·중성·종성 모아쓰기 구조입니다. 따라서 영문 기준의 1.4~1.5 행간은 한글에서 시각적으로 다소 조밀하게 느껴질 수 있으며, 디지털 화면 본문 기준 1.6~1.75 수준이 상하 획 간섭을 줄이는 실무적인 참고 구간으로 자주 활용됩니다. 다만 이는 모든 서체와 사용자에게 일괄 적용되는 공식 최적값이 아니며, 폰트 고유의 비례와 본문 폭, 독자층에 맞춰 조율해야 합니다.
Q. word-break: keep-all 속성을 본문 전체에 적용해도 안전한가요?
A. keep-all은 단어 단위로 줄바꿈을 유도하여 한글 단어 응집도를 높여주지만, 영문 단어나 긴 URL, 공백 없는 긴 복합명사가 포함되면 컨테이너 우측에 거대한 공백이 생기거나 가로 넘침이 발생할 수 있습니다. 실무에서는 반드시 overflow-wrap: break-word 또는 anywhere 속성을 함께 선언하여 긴 문자열이 경계선을 초과할 때만 안전하게 음절 단위로 줄바꿈되도록 방어해야 합니다.
Q. Range API 기반의 줄 수 측정이 단순 수식 계산보다 정확한 이유는 무엇인가요?
A. 단순히 전체 요소 높이를 line-height(px)로 나누는 방식은 첫 줄 어센더(Ascender), 마지막 줄 디센더(Descender), 패딩 및 서체별 라인 메트릭 차이로 인해 1줄 내외의 오차가 자주 발생합니다. 본 실험실은 브라우저 DOM Range의 getClientRects() 기하 좌표를 측정하여 실제 렌더링된 행 수를 감지합니다. 다만 이러한 측정 역시 브라우저 렌더링 엔진, OS 텍스트 스케일링, 서브픽셀 래스터라이징 방식에 따른 환경적 한계가 존재할 수 있습니다.