6  글꼴과 타이포그래피

이번 장에서는 과학기술 문서 작성에 필수적인 글꼴과 타이포그래피를 다룬다. AI 시대 재현가능한 연구를 위한 글꼴 관리, 쿼토 환경에서의 다국어 타이포그래피, 코드와 자연어가 혼재하는 문서에서 최적 글꼴 전략을 살펴본다.

15세기는 인류 문자사에 있어 기적의 시대였다. 1440년 구텐베르크가 금속 활자로 지식의 대량 생산을 가능하게 한 바로 그 시기, 조선에서는 세종대왕이 훈민정음을 창제하고 있었다. 1443년 완성된 28자 체계는 “백성을 가르치는 바른 소리”라는 이념을 담았고, 1448년 동국정운에서 최초 한글 목활자 인쇄가 시작되었다. 창제 원리와 제작 과정이 모두 기록된 세계 유일의 문자 체계다.

20세기를 거치며 한글 타이포그래피는 격동의 역사를 겪었다. 일제강점기 최지혁의 궁체가 아이러니하게도 일본에서 납활자로 제작되었고, 해방 후에는 신문용 서체들이 등장했다. 1990년대 디지털 전환기에는 한양시스템과 윤디자인이 전문화를 이끌었으며, 2008년 네이버 나눔글꼴의 무료 공개는 디지털 타이포그래피의 분수령이 되었다.

2008년 나눔글꼴부터 시작된 오픈소스 혁명은 한글 타이포그래피를 완전히 바꿨다. 11,172자 완전 지원과 무료 배포로 웹폰트 시대를 연 나눔글꼴, Google-Adobe 협업의 본고딕(Noto Sans KR), 크로스 플랫폼 통합을 실현한 Pretendard, 산업별 특화를 시작한 토스페이스까지. 16년간 ’무료 → 글로벌 → 통합 → 특화’의 진화를 보여주었다.

과학기술 문서에서 타이포그래피는 단순한 미적 요소가 아니다. 한글, 영문, 수식, 코드가 하나의 문서에서 조화를 이루며, 각각의 가독성을 최대화하면서도 전체적 통일감을 유지해야 한다. 이는 세종대왕이 추구했던 ‘쉽고 바른’ 소통의 정신을 디지털 시대에 구현하는 일이기도 하다.

그림 6.1: 한글 글꼴 진화 역사 (1443-2020s)

6.1 타이포그래피 5세기 여정

1440년 요하네스 구텐베르크가 금속 활자를 발명한 순간, 인류 문명의 새로운 장이 열렸다. 한 글자 한 글자를 손으로 베껴 쓰던 필사의 시대가 끝나고, 지식의 대량 생산과 민주화가 시작된 것이다. 그로부터 580여 년이 지난 지금, 우리는 AI가 실시간으로 글꼴을 생성하고 최적화하는 시대를 살고 있다.

타이포그래피의 진화는 단순한 기술 발전이 아니다. 각 시대의 혁신은 인간이 정보를 생산하고 소비하는 방식을 근본적으로 바꾸었다. 구텐베르크의 활자는 종교개혁과 계몽주의를 가능하게 했고, 1920년대 바우하우스의 기능주의 타이포그래피는 현대 디자인의 토대를 마련했다. 1950년대 스위스 디자인은 명료성과 객관성이라는 보편적 가치를 추구했으며, 1980년대 데스크톱 퍼블리싱은 출판의 민주화를 실현했다.

21세기 들어 타이포그래피는 또 다른 혁명을 맞이했다. 2010년대 웹폰트 기술은 디지털 공간에서 타이포그래피의 표현력을 극대화했고, 2020년대 가변 폰트(Variable Fonts)는 하나의 파일로 무한한 스타일 변주를 가능하게 했다. 그리고 지금, AI는 사용자의 의도를 이해하고 맥락에 맞는 타이포그래피를 실시간으로 생성하는 수준에 이르렀다.

그림 6.2: 타이포그래피 진화의 이정표

6.1.1 오픈소스 한글 폰트

디지털 시대 한글 타이포그래피 진정한 혁명은 2008년 네이버 나눔글꼴 무료 공개와 함께 시작되었다. 그림 6.3 에서 보듯이, 지난 16년간 한국의 오픈소스 폰트는 ’무료 → 글로벌 → 통합 → 특화’라는 명확한 진화 경로를 보여왔다.

그림 6.3: 한국 오픈소스 폰트 진화

2008년 나눔글꼴의 등장은 한국 디지털 환경의 분수령이었다. 11,172자 완전한 유니코드 지원과 무료 배포는 웹사이트와 모바일 앱에서 한글 타이포그래피의 표준화를 이끌었다. 이전까지 윤디자인, 산돌 등의 상용 폰트에 의존하던 개발자들에게 나눔글꼴은 혁신적인 해방이었으며, 이는 한국 웹 생태계의 급속한 발전을 촉진했다.

2014년 Google과 Adobe의 협업으로 탄생한 본고딕(Noto Sans KR)은 글로벌 전략의 결과물이었다. Source Han Sans 프로젝트 일환으로 개발된 본고딕은 CJK(중국어-일본어-한국어) 통합 설계를 통해 국제적 일관성을 확보했다. 7가지 굵기와 OpenType 최적화는 프로페셔널 출판 환경에서도 사용 가능한 품질을 제공했으며, Google Fonts를 통한 CDN 배포는 전 세계 웹사이트에서 한글을 표시할 수 있는 인프라를 구축했다.

2021년 길형진 디자이너가 공개한 Pretendard는 또 다른 패러다임 전환이였다. system-ui 철학을 바탕으로 Inter(영문)와 본고딕(한글)을 결합한 Pretendard는 크로스 플랫폼 일관성 문제를 해결했다. iOS의 San Francisco와 Android의 Roboto 사이에서 발생하던 타이포그래피 불일치를 하나의 폰트로 통일함으로써, 모바일 앱 개발에서 획기적인 효율성을 제공했다. 182개 언어 지원과 9가지 굵기, Variable Font 기능은 Pretendard를 현재 한국에서 가장 인기 있는 오픈소스 폰트로 만들었다.

2023년 이후 나타나고 있는 트렌드는 ‘산업별 특화’이다. 토스의 TossFace처럼 금융 UI에 최적화된 폰트, 숫자 가독성을 극대화한 폰트들이 등장하고 있다. 이제는 폰트가 단순히 ’범용적으로 좋은’ 수준을 넘어서 특정 도메인의 사용자 경험을 최적화하는 도구로 진화하고 있음을 보여준다.

이러한 한국 오픈소스 폰트의 진화는 그림 6.14 에서 살펴본 R 폰트 패키지 진화와 놀라운 유사성을 보인다. 두 영역 모두 ’독점적 유료 → 오픈소스 무료 → 기술적 통합 → 특화/최적화’라는 동일한 궤적을 따르고 있으며, 디지털 타이포그래피 전반에 대중화와 전문화가 동시에 진행되고 있음을 시사한다.

6.1.2 기업의 글꼴 생태계 전략

1996년 Microsoft가 Core Fonts for the Web 프로젝트로 Verdana와 Georgia를 무료 배포하며 시작된 거대 IT 기업의 글꼴 전략은 단순한 기술 공헌을 넘어 디지털 생태계 지배를 위한 핵심 도구가 되었다. 그림 6.4 에서 보듯이, 지난 수십년간 전략적 진화는 세 가지 명확한 동기를 바탕으로 한다. 웹 표준 주도권 확보, 개발자 생태계 포섭, 브랜드 강화를 통한 시장 영향력 확대다.

2008년 네이버 나눔글꼴 공개는 한국적 맥락에서 이러한 전략이 어떻게 구현되었는지 보여준다. 2014년 Google Noto 프로젝트는 ’더 이상 두부(□)는 없다’는 비전으로 800개 언어를 지원하며 글로벌 표준화를 추구했고, 2015년 애플사 San Francisco는 제한적 공개를 통해 자사 생태계 종속성을 강화하는 대조적 접근을 보여줬다. IBM은 2017년 연간 100만 달러 Helvetica 라이선스 비용 문제를 IBM Plex의 완전 오픈소스 전환으로 해결하며 경제적 동기와 브랜드 혁신을 동시에 실현했다.

이러한 글꼴 무료화는 단순한 선행이 아닌 치밀한 비즈니스 전략이다. 개발자 커뮤니티 포섭을 통해 기술 표준을 주도하고, 플랫폼 종속성을 강화하며, 궁극적으로 타이포그래피를 통해 사용자 경험을 통제하고 시장 영향력을 확대하는 21세기 디지털 패권 경쟁의 축소판인 것이다.

그림 6.4: 거대 IT 기업 글꼴 생태계 전략

6.1.3 개발자 글꼴 진화 IDE까지

1955년 IBM이 Courier를 개발했지만 상표권을 등록하지 않아 의도치 않게 퍼블릭 도메인이 된 것은 컴퓨터 타이포그래피 역사의 가장 흥미로운 아이러니다. 이 ’실수’는 역설적으로 Courier를 20세기 가장 영향력 있는 타자기 글꼴로 만들었고, 디지털 시대 모노스페이스 글꼴의 원형이 되었다. 그림 6.5 에서 보듯이, 이후 70년간 진화 과정은 네 개의 뚜렷한 시대로 구분된다. 타자기 시대, 터미널/GUI 시대, 데스크톱 시대, 현재 IDE/웹 시대다.

1973년은 특히 중요한 해였다. Xerox PARC의 Alto는 최초의 위지윅(WYSIWYG)와 스플라인 기반 폰트로 현대 디지털 타이포그래피의 진정한 기원이 되었고, 같은 해 AT&T Bell Labs는 UNIX troff로 전자 출판 시대를 열었다. 1978년 DEC의 VT100 터미널 폰트는 8x10 픽셀 그리드로 600만 대 이상 판매되며 터미널 표준을 확립했으며, 1984년 Susan Kare Chicago는 9x7 픽셀 제약 속에서도 개성을 표현한 디자인의 걸작이었다.

2004년 Microsoft 콜솔라스(Consolas)는 ClearType 기술로 모노스페이스 글꼴 가독성을 혁신했고, 2020년 JetBrains Mono는 리가처(ligature)와 최적화된 문자 높이로 코딩 피로도를 줄이는 IDE 시대 새로운 기준을 제시했다. 지난 70년의 여정은 단순한 글꼴 발전이 아닌, 타자기에서 시작해 터미널을 거쳐 GUI와 웹을 지나 현대 IDE에 이르기까지 개발자 도구 진화와 긴밀히 연결된 타이포그래피 혁신의 역사다.

그림 6.5: 개발자 글꼴 진화

6.2 디지털 시대 글꼴의 역할

현대 디지털 환경에서 글꼴(font)은 단순한 문자 표현을 넘어 브랜드 정체성과 사용자 경험을 좌우하는 핵심 요소가 되었다. 그림 6.6 에서 보듯이, 글꼴의 활용 영역은 디지털 마케팅부터 과학기술 문서 제작에 이르기까지 광범위하게 확산되고 있으며, 각 분야마다 고유한 기능적 요구사항을 충족해야 한다.

디지털 광고와 마케팅 분야에서 글꼴은 브랜드 아이덴티티(Brand Identity)와 메시지 전달을 강화하는 전략적 도구로 활용된다. 모바일 앱의 사용자 인터페이스에서도 글꼴은 직관성과 사용성을 결정하는 중요한 변수이며, 뉴스와 저널리즘 영역에서는 정보의 신뢰성과 중요도를 시각적으로 전달하는 수단이 된다. 교육 자료와 프레젠테이션에서 글꼴이 주는 첫 인상은 학습 효과에 직접적인 영향을 미치며, 영화나 유튜브 콘텐츠에서는 자막과 크레딧을 통해 작품의 톤앤매너를 결정한다.

과학기술 디지털 글쓰기에서 글꼴의 역할은 더욱 세분화되고 전문화된다. 데이터 시각화에서는 그래프 문법(Grammar of Graphics)을 구현한 ggplot 패키지의 라벨, 제목, 범례에 적용되는 글꼴이 정보 전달의 정확성을 좌우하며, 표 문법(Grammar of table) gt 패키지에서 칼럼명과 주석의 글꼴 선택이 표 전문성을 결정한다. 통합개발환경(IDE)에서 사용되는 코딩 전용 글꼴은 문자와 숫자, 특수문자의 명확한 구분을 통해 프로그래밍 오류를 방지하고, 리가처(ligature) 같은 시각적 요소로 코드의 일관성과 가독성을 향상시킨다.

그림 6.6: 과학기술 문서에서 글꼴 활용분야

최종 산출물 단계에서 글꼴은 전문성과 신뢰도를 구현하는 마지막 관문 역할을 한다. PDF 보고서, 대시보드, 웹사이트, 학술 논문 등에서 글꼴 선택은 내용의 품질을 시각적으로 보증하는 중요한 지표가 되며, 색상과 레이아웃과 결합되어 전체적인 사용자 경험을 완성한다. 이처럼 글꼴은 정보의 생산부터 최종 소비까지 전 과정에 걸쳐 의미와 가치를 전달하는 핵심 매개체로 자리잡고 있다.

6.3 타이포그래피 기초

타이포그래피를 이해하기 위해서는 먼저 기본 개념들 간의 관계를 파악해야 한다. 그림 6.7 에서 보는 바와 같이, 활자(Type), 서체(Typeface), 글꼴(Font), 타이포그래피(Typography)는 동심원 구조로 이루어진 포함 관계를 갖고 있다. 가장 바깥쪽의 활자는 인쇄에 사용되는 물리적인 금속 활자나 디지털 문자 하나하나를 의미하며, 이것이 모여 동일한 디자인 특성을 가진 문자들의 집합인 서체를 형성한다.

그림 6.7: 타이포그래피 핵심 개념과 용어

서체가 특정한 크기, 굵기, 기울임 등 구체적인 속성을 갖게 되면 글꼴이 된다. 예를 들어 ’바탕’이라는 서체가 12pt 크기에 굵게 속성을 가지면 ’바탕 12pt 굵게’라는 하나의 글꼴이 완성되는 것이다. 이러한 모든 요소들을 포괄하고 통합하는 가장 안쪽 핵심 개념이 타이포그래피로, 활자를 배열하고 디자인하는 기술과 예술 전반을 의미한다. 구텐베르크의 15세기 인쇄 혁명에서 시작된 이 개념 체계는 21세기 디지털 시대에도 변함없이 적용되며, 인공지능 시대 자동화된 타이포그래피 생성에서도 핵심적인 원리로 작동하고 있다.

6.3.1 타이포그래피 용어 구조적 이해

타이포그래피 전문 용어는 글자의 물리적 구조, 공간적 배치, 한글만의 독특한 특성으로 구분하여 이해할 수 있다. 글자 구조 관련 용어들은 모두 기준선(Baseline)을 중심으로 형성된다. 기준선은 글자가 놓이는 기본 선으로, 모든 글자의 정렬과 높이 측정의 출발점이 된다. 이 기준선을 바탕으로 엑스하이트(X-height, 소문자 x의 높이)는 가독성의 핵심 지표가 되며, 상승부(Ascender)는 h, b, d 같은 글자가 기준선 위로 올라가는 부분, 하강부(Descender)는 p, g, y처럼 기준선 아래로 내려가는 부분을 가리킨다. 카운터(Counter)는 o, a, e 같은 글자 내부의 둘러싸인 공간으로, 크기가 가독성에 미치는 영향이 상당하다.

공간적 배치와 관련된 용어들은 텍스트의 전체적인 리듬과 흐름을 결정한다. 커닝(Kerning)은 특정 글자 쌍 간의 간격을 조정하는 기법으로, ‘AV’나 ’To’ 같은 조합에서 시각적 균형을 맞추기 위해 사용된다. 행간(Leading)은 한 줄의 기준선에서 다음 줄 기준선까지의 거리로 줄 간격을 의미하며, 자간(Tracking)은 전체 텍스트에서 글자 간격을 균등하게 조정하는 방식이다. 이러한 미세 조정들이 모여 텍스트의 전체적인 읽기 경험을 좌우한다.

한글 타이포그래피만의 독특한 용어들은 조합문자 체계의 특성을 반영한다. 초성(자음), 중성(모음), 종성(받침)의 3요소 구조는 한 글자 안에서 복잡한 배치 규칙을 만들어내며, 이 모든 요소가 네모틀이라는 정사각형 공간 안에서 조화를 이뤄야 한다. 민부리와 돋음은 각각 산세리프와 세리프에 해당하는 한글만의 분류 체계이며, 최근에는 탈네모 디자인이 전통적인 네모틀 제약에서 벗어나 현대적이고 역동적인 한글 표현을 추구하고 있다.

6.3.2 글꼴 분류의 실용적 접근

그림 6.8 에서 제시한 바와 같이, 글꼴은 디자인 특성보다는 사용 목적과 시각적 효과를 중심으로 이해하는 것이 더 실용적이다. 이러한 분류 체계는 단순히 외형적 특징을 구분하는 것이 아니라, 각 글꼴이 어떤 읽기 환경과 커뮤니케이션 목표에 최적화되어 있는지를 보여준다.

그림 6.8: 글꼴 디자인 특성별 분류

세리프(Serif) 글꼴의 핵심 가치는 ’긴 글 읽기의 최적화’에 있다. Times New Roman이나 Noto Serif KR 같은 세리프 글꼴에서 글자 획 끝의 작은 삐침(serif)은 단순한 장식이 아니라 인지과학적으로 검증된 기능을 수행한다. 글꼴 삐침들이 수평선을 형성하여 눈의 흐름을 유도하고, 장시간 읽기에서 발생하는 시각적 피로를 감소시킨다. 따라서 학술 논문, 단행본, 장편 보고서 같은 텍스트 집약적 문서에서 여전히 선호되는 것이다. 반면 산세리프(Sans-serif)는 ’디지털 화면 최적화’라는 명확한 목적을 가진다. Arial, Helvetica, Noto Sans KR 등이 웹사이트와 모바일 UI에서 압도적으로 채택되는 이유는 픽셀 환경에서 삐침 없는 깔끔한 선이 더욱 선명하게 렌더링되기 때문이다.

모노스페이스(Monospace) 글꼴이 과학기술 문서에서 갖는 중요성은 ’정보의 정확성 보장’에 있다. Consolas, D2 Coding, JetBrains Mono 등이 모든 글자를 동일한 폭으로 제작하는 이유는 코드, 데이터, 수식에서 발생할 수 있는 치명적 오류를 방지하기 위함이다. 특히 혼동하기 쉬운 문자들을 구분하기 위해 숫자 0에는 대각선이나 점을 추가하고, 숫자 1에는 세리프를 붙이며, 소문자 l과 대문자 I에는 서로 다른 형태를 부여한다. 이러한 명확한 문자 구분은 프로그래밍 버그나 데이터 분석 오류를 사전에 차단하는 안전장치 역할을 한다. 이는 단순한 미적 선택이 아닌 과학적 정확성을 위한 필수적 도구인 것이다.

디스플레이(Display)와 스크립트(Script) 글꼴의 전략적 가치는 ’시각적 임팩트와 브랜드 차별화’에 집중된다. 본문 가독성보다는 주목성과 감정적 메시지 전달을 우선시하며, 제목, 로고, 마케팅 자료에서 브랜드 개성을 표현하는 핵심 도구로 활용된다. 특히 \(\LaTeX\) 환경 Computer Modern, STIX, AMS Euler 같은 수식 전용 글꼴들은 수학적 기호와 공식의 정확한 표현을 위해 특별히 설계된 고도로 전문화된 도구들이다. 이러한 분류 이해를 바탕으로, 문서의 목적과 독자, 매체 특성에 따라 최적의 글꼴을 전략적으로 선택할 수 있게 된다.

일반적으로 본문 작성에는 세리프나 산세리프 글꼴이 사용되며, 제목에는 더 독특하고 눈에 띄는 글꼴을 사용하는 경향이 있다. 증거 기반 문서, 행정 문서, 과학기술 문서 등에서도 이러한 경향이 나타나고 있다. 특히, 수식을 포함한 과학기술 문서에서 타이포그래피 중요성이 점점 더 커지고 있다. 이런 경향은 글꼴 선택이 갖는 문서의 전달력과 가독성에 미치는 영향을 무시 못하기 때문이다.

노트여우와 다람쥐

typeface는 서체로 번역되고 font는 글꼴로 번역된다. 하나의 typeface에는 여러 font가 포함될 수 있으며, 이를 검증하는 데에는 팬그램이 유용하게 사용된다. 팬그램은 모든 문자를 최소 한 번 이상 사용하여 만든 문장으로, 제작된 서체와 글꼴이 모든 글자에 대해 어떻게 표현되는지 확인하는 데 필요하다.

팬그램(Pangram)은 ’모든 글자’라는 뜻으로 주어진 모든 문자를 적어도 한 번 이상 사용하여 만든 문장을 뜻한다. 팬그램은 로렘 입숨처럼 글꼴 시제품을 보여주거나 장비를 테스트하는 데 사용된다. 영어 팬그램으로 가장 유명한 ‘The quick brown fox jumps over the lazy dog’는 19세기부터 사용되어 왔다. 유사하게 한글에서는 “다람쥐 헌 쳇바퀴에 타고파”가 사용되고 있다.

그림 6.9: 영어 팬그램 알파벳 완전성 검증

영어의 대표적인 팬그램 “The quick brown fox jumps over the lazy dog”는 모든 영어 알파벳 26개 글자를 빠짐없이 포함하고 있어, 글꼴 디자이너들이 새로운 서체를 개발할 때 모든 글자가 조화롭게 표현되는지 확인하는 표준 테스트 문장으로 활용되고 있다.

그림 6.10: 한글 팬그램 자음과 모음 사용 현황

한글에서는 “다람쥐 헌 쳇바퀴에 타고파”가 윈도우즈 비스타(Vista) 이후 한글 폰트 미리보기 표준 문장으로 사용되고 있다. 이 문장은 완전한 팬그램은 아니지만, 기본 자음의 대부분과 다양한 모음을 포함하여 한글의 여러 글자 조합을 효과적으로 보여준다. 한글의 조합 특성상 모든 자음과 모음을 포함하는 완전한 팬그램을 만드는 것은 매우 어려우며, 이 문장은 짧고 기억하기 쉬우면서도 한글 폰트의 특성을 잘 드러내는 실용적인 선택이다.

6.4 Quarto 문서 글꼴 전략

과학기술 문서 작성에서 글꼴 선택은 재현가능성(Reproducibility)과 다국어 호환성을 동시에 고려해야 하는 복합적 문제다. Quarto 환경에서는 HTML, PDF, 프레젠테이션 등 다양한 출력 형식을 지원하기 때문에, 각 형식에서 일관된 타이포그래피를 유지하면서도 플랫폼 간 호환성을 확보하는 전략이 필요하다. Document as Code 패러다임에서 폰트 설정도 버전 관리되고 재현 가능해야 한다.

그림 6.11: 과학기술 문서 글꼴 선택 전략

6.4.1 재현가능 연구를 위한 글꼴 전략

로컬 설치형 vs 웹 글꼴의 전략적 선택이 핵심이다. 로컬 설치 글꼴은 빠른 렌더링과 오프라인 작업이 가능하지만, 협업 환경에서 다른 연구자가 동일한 글꼴을 설치하지 않았을 경우 문서 재현에 실패할 수 있다. 반면 웹 글꼴은 Google Fonts나 Adobe Fonts를 통해 자동으로 로드되어 플랫폼 독립적이지만, 네트워크 의존성이 단점이다.

가변 글꼴(Variable Fonts)의 과학 활용도 주목할 만하다. Inter, IBM Plex Sans 같은 가변 글꼴은 하나의 파일로 다양한 굵기와 스타일을 제공하여 파일 크기를 줄이면서도 표현력을 극대화한다. 특히 데이터 시각화에서 수치의 중요도에 따라 동적으로 굵기를 조절하거나, 반응형 대시보드에서 화면 크기에 따라 글꼴 두께를 최적화하는 용도로 활용할 수 있다.

// 가변 글꼴 활용 예시
.data-emphasis {
  font-family: 'Inter Variable', sans-serif;
  font-weight: var(--importance-level, 400); // 데이터 중요도 반영
  font-optical-sizing: auto;
}

6.4.2 글꼴 일관성 확보 전략

연구팀에서 협업할 때 가장 흔히 겪는 문제는 각자 다른 운영체제를 사용하면서 발생하는 글꼴 불일치다. Windows 사용자가 만든 문서를 Mac에서 열면 다른 글꼴로 표시되거나, Linux 환경에서는 아예 깨져 보이는 현상이 발생한다. 이런 상황에서 영문 단어 기준 줄바꿈 때문에 “과학기술문서작성”이 “과학기술 문서작성”으로 부자연스럽게 끊어지는 한글 특유의 문제까지 겹치면 문서의 완성도가 크게 떨어진다.

Quarto는 이러한 다중 플랫폼 호환성 문제를 _quarto.yml 설정과 SCSS 최적화를 통해 해결할 수 있다. HTML 출력에서는 Google Fonts를 통해 웹에서 자동으로 로드되는 “Noto Serif KR”을 지정하고, PDF에서는 LaTeX 엔진에 최적화된 “Noto Serif CJK KR” 버전을 사용한다. 동시에 SCSS에서 word-break: keep-all 속성으로 한글 단어 단위 줄바꿈을 보장하고 1.7배 줄 간격으로 한글 가독성을 향상시킨다.

# _quarto.yml - 핵심 플랫폼 호환성 설정
format:
  html:
    mainfont: "Noto Serif KR"
    monofont: "JetBrains Mono"
  pdf:
    mainfont: "Noto Serif CJK KR"
    fontfamily: kotex-utf
// r2bit.scss - 한글 최적화
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR&family=JetBrains+Mono&display=swap');
body { word-break: keep-all; line-height: 1.7; }

이렇게 설정하면 연구팀 누구나 문서를 열었을 때 동일한 글꼴과 자연스러운 한글 줄바꿈으로 일관된 경험을 얻을 수 있으며, 특별한 글꼴 설치 작업도 불필요하다.

과학기술 문서에서는 한글-영문-수식-코드가 혼재하므로, 각 언어와 용도에 최적화된 글꼴 조합이 필요하다. 특히 수식 표현에서는 \(\LaTeX\) 환경의 Computer Modern이나 STIX 같은 수학 전용 글꼴이 중요하며, 코드 블록에서는 문자 구분이 명확한 모노스페이스 글꼴이 필수다. 이러한 다층적 글꼴 전략을 통해 과학기술 문서는 시각적 일관성을 유지하면서도 정보의 정확성과 재현가능성을 동시에 확보할 수 있다.

6.5 글꼴 설치와 관리

과학기술 문서의 글꼴은 운영체제 깊은 곳에서 시작해 최종 출력물까지 긴 여정을 거친다. 그림 6.12 가 보여주듯, 4개 계층을 거치며 각 단계마다 다른 도전과 해결책이 있다.

그림 6.12: 운영체제별 글꼴 설치 및 사용 계층구조

1계층: 운영체제 글꼴 저장소 - 모든 것이 시작되는 곳이다. Windows는 C:\Windows\Fonts에서 중앙집중식으로 관리하고, macOS는 /System/Library/Fonts(시스템)과 ~/Library/Fonts(사용자)로 계층을 분리한다. Linux는 /usr/share/fonts~/.fonts로 가장 유연한 구조를 제공한다. 각 운영체제마다 다른 철학과 구조를 가지고 있어 크로스 플랫폼 호환성에서 첫 번째 장벽이 된다.

2계층: 폰트 렌더링 엔진 - 저장된 글꼴을 실제로 화면에 그려내는 핵심 엔진이다. Windows의 DirectWrite는 ClearType 기술로 LCD 픽셀 최적화에 특화되어 있고, macOS의 Core Text는 레티나 디스플레이의 고해상도에 최적화되어 있다. Linux의 FreeType과 Fontconfig는 오픈소스의 유연성을 제공하지만 일관성 확보에 더 많은 설정이 필요하다.

3계층: 응용프로그램 - 과학기술 문서 작성에서 가장 중요한 계층이다. R의 ggplot2와 gt는 데이터 시각화와 표에서 정교한 글꼴 제어를 제공하며, Pandoc은 문서 변환 과정에서 글꼴 정보를 보존한다. Quarto는 이 모든 도구를 통합하여 일관된 타이포그래피 환경을 제공한다.

4계층: 최종 출력 - PDF, HTML, 이미지, 프레젠테이션 등 다양한 형태로 구현되어 최종 사용자에게 전달된다. 출력 계층에서 발생하는 문제는 대부분 상위 계층의 설정 불일치에서 기인한다.

글꼴 4계층 구조를 이해하면 협업 환경에서 “왜 내 컴퓨터에서만 다르게 보이는가?”라는 질문에 체계적으로 접근할 수 있다.

6.5.1 Quarto 문서 글꼴 설정

글꼴 4계층 구조를 이해했다면 이제 Quarto에서 텍스트 글꼴을 설정해보자. 과학기술 문서는 본문, 제목, 캡션 등 다양한 텍스트 요소를 포함하며, 각각에 적합한 글꼴 전략이 필요하다.

기본 설정: 한글 과학기술 문서 출발점

# _quarto.yml
format:
  html:
    mainfont: "Noto Serif KR"      # 본문: 세리프로 가독성 확보
    sansfont: "Noto Sans KR"       # 제목: 산세리프로 명확성 강조
    monofont: "D2Coding"            # 코드: 고정폭으로 정렬 보장
    fontsize: "11pt"                # 한글 최적 크기
    linestretch: 1.6                # 한글 행간 최적화

이러한 설정으로 기본적인 텍스트 요소는 모두 해결된다. Noto 계열 폰트는 Google Fonts에서 자동으로 로드되므로 별도 설치가 불필요하다. 하지만 PDF 출력에서는 추가 고려사항이 있다.

PDF 출력을 위한 특별 설정

  pdf:
    mainfont: "Noto Serif CJK KR"  # CJK 버전으로 완전한 한중일 지원
    fontfamily: kotex-utf           # 한글 LaTeX 엔진 지원
    fontsize: "10.5pt"              # 인쇄물 최적 크기
    pdf-engine: xelatex             # 유니코드 완전 지원

여기서 중요한 것은 HTML용과 PDF용 폰트가 다르다는 점이다. HTML에서는 “Noto Serif KR”이면 충분하지만, PDF에서는 “Noto Serif CJK KR”을 사용해야 한글-한자 혼용 텍스트에서도 문제가 없다.

출력형식 본문글꼴 코드글꼴 특징
HTML Noto Serif KR JetBrains Mono 웹폰트 자동로드
PDF Noto Serif CJK KR D2Coding LaTeX 엔진 의존
RevealJS Noto Sans KR Source Code Pro 프레젠테이션 최적화
Word 시스템 기본 Consolas 호환성 우선
표 6.1: Quarto 출력 형식별 권장 글꼴 설정

이제 텍스트 관련 내용을 해결했다. 다음 단계인 데이터 시각화로 넘어가자.

6.5.2 R 데이터 시각화 글꼴

데이터 시각화는 과학기술 문서의 핵심이다. ggplot2 그래프와 gt 테이블에서 한글-영문-숫자가 조화롭게 표현되어야 하며, 이를 위해 systemfonts와 ragg의 조합이 현재 최적 방법이다.

library(ggplot2)
library(dplyr)

# 다양한 한글 글꼴과 용도별 분류
font_data <- data.frame(
  글꼴 = c("맑은 고딕", "나눔고딕", "D2Coding", "나눔스퀘어", "바탕"),
  용도 = c("시스템 기본", "웹 표준", "코딩 전용", "디자인 강조", "인쇄 전용"),
  샘플 = "다람쥐 헌 쳇바퀴에 타고파 (1234)",
  y = 5:1
) 

# 한글 글꼴 비교 시각화
ggplot(font_data, aes(x = 0, y = y)) +
  geom_text(aes(label = paste0(글꼴, " (", 용도, ")"), family = 글꼴), 
            hjust = 0, size = 4, fontface = "bold") +
  geom_text(aes(label = 샘플, family = 글꼴), 
            hjust = 0, x = 5, size = 5) +
  scale_x_continuous(limits = c(0, 12)) +
  theme_void(base_family = "Noto Sans KR") +
  labs(title = "한글 과학기술 문서용 글꼴 비교")
그림 6.13: 한국 과학기술 문서 시각화 글꼴 예제

ragg를 사용한 고품질 출력

과학기술 문서에서 그래프와 차트의 품질은 연구 결과의 신뢰성과 직결된다. R의 전통적인 그래픽 디바이스는 안티앨리어싱과 폰트 렌더링에서 한계를 보이지만, ragg(R Anti-Grain Geometry) 패키지는 현대적인 그래픽 엔진을 통해 출판 수준의 고품질 이미지를 생성한다. 특히 한글 폰트의 부드러운 렌더링과 벡터 그래픽의 정밀한 표현에서 탁월한 성능을 보여주며, ggsave("plot.png", width = 8, height = 5, dpi = 300, device = ragg::agg_png)와 같이 간단한 설정만으로도 전문 출판사 수준의 이미지 품질을 확보할 수 있다.

6.5.3 R 폰트 패키지 진화

R에서 글꼴 사용은 지난 15년간 3세대에 걸쳐 극적으로 발전했다. 그림 6.14 에서 보듯이, 각 세대는 기술적 한계를 극복하며 더 나은 해결책을 제시해왔다. 특히 웹폰트 처리 방식의 진화는 현대 과학기술 문서 작성의 패러다임을 완전히 바꿨다.

그림 6.14: R 폰트 패키지 3세대 진화 과정

이러한 진화 과정은 단순한 기술적 개선을 넘어서 과학 연구의 재현가능성 문제와 직결된다. 1세대 extrafont 시절에는 연구자들이 서로 다른 운영체제에서 동일한 그래프를 재현하기 위해 복잡한 설정을 거쳐야 했다. 2세대 showtext는 Google Fonts 연동으로 이 문제를 부분적으로 해결했지만, 성능과 일관성에서 한계가 있었다. 3세대 systemfonts + ragg 조합은 마침내 “한 번 작성하면 어디서든 실행(Write Once, Run Anywhere)” 철학을 R 그래픽에 실현했다.

1세대: extrafont (2010년대 초~2020년)

extrafont 패키지는 TrueType 글꼴(.ttf)을 PDF와 PostScript 출력에 사용할 수 있게 만든 초기 솔루션이었다. 하지만 고스트스크립트(Ghostscript)에 대한 의존성과 알려진 버그들로 인해 한계가 명확하고 현재는 사용이 권장되지 않는다.

# extrafont 방식 (현재는 권장하지 않음)
library(extrafont)
font_import()  # 시스템 글꼴 가져오기 (시간 소요)
loadfonts()    # PDF 출력용 글꼴 등록

2세대: showtext (2015년~)

추의현(Qiu Yixuan)이 개발한 showtext는 다양한 글꼴 형식과 모든 R 그래픽 장치를 지원하며 Google Fonts 직접 연동 기능을 제공했다. 현재도 활발히 유지보수되며 특정 상황에서 유용하지만, 성능과 일관성 측면에서 한계가 있다.

# showtext 방식
library(showtext)
font_add_google("Noto Sans KR", "noto")
showtext_auto()

3세대: systemfonts + ragg + textshaping (2020년~)

토마스 린 페더슨(Thomas Lin Pedersen)이 개발한 현재의 표준 솔루션은 세 패키지가 통합되어 작동한다:

  • systemfonts: 시스템 글꼴에 직접 접근하는 저수준 유틸리티
  • ragg: AGG 2D 그래픽 라이브러리 기반 고품질 래스터 장치
  • textshaping: HarfBuzz/Fribidi 라이브러리 기반 고급 텍스트 처리

3세대의 가장 큰 혁신은 웹폰트와 시스템 글꼴의 완전한 통합이다. 이전 세대들이 설치형 폰트나 수동 다운로드에 의존했다면, systemfonts는 웹폰트를 런타임에 자동으로 처리할 수 있다.

# 시스템 글꼴 직접 사용 (기본)
library(ragg)
agg_png("plot.png", width = 1200, height = 800)
ggplot() + 
  geom_text(aes(x=1, y=1, label="한글 테스트"), 
            family = "Noto Sans KR")  # 설치된 폰트 직접 사용
dev.off()

# 웹폰트 자동 다운로드 및 사용
library(systemfonts)
# Google Fonts에서 자동 다운로드 후 사용 가능
systemfonts::register_font(
  name = "custom-font",
  plain = systemfonts::font_info("Noto Sans KR")$path
)

# 런타임 폰트 등록 (로컬 파일에서)
font_file <- "~/Documents/fonts/NanumGothic.ttf"  # 사용자 폰트 디렉토리
systemfonts::register_font("MyCustomFont", plain = font_file)

3세대 systemfonts의 가장 혁신적인 측면은 웹폰트 처리 방식의 완전한 패러다임 전환이다. 이전 세대들이 수동적인 폰트 설치와 복잡한 설정을 요구했다면, systemfonts는 require_font() 함수를 통해 필요시 Google Fonts에서 자동 다운로드하고, register_font()로 런타임에 폰트 파일을 동적 등록하며, system_fonts()로 시스템의 모든 사용 가능한 폰트를 즉시 검색할 수 있다. 더 나아가 TTF/OTF 파일의 즉시 로딩과 사용을 지원하여 폰트 관리의 복잡성을 근본적으로 해결했다.

기술적 혁신의 핵심은 중간 변환 단계 없이 시스템 글꼴에 직접 접근하는 것이다. 이를 통해 Windows, macOS, Linux 간의 크로스 플랫폼 완벽 일관성을 확보하고, 한글, 아랍어, 태국어 등 복잡한 스크립트를 자연스럽게 지원한다. 특히 OpenType 기능인 리가처(ligature)와 글리프 치환(glyph substitution), 그리고 Right-to-Left 텍스트 렌더링까지 지원하여 현대적인 타이포그래피 요구사항을 모두 충족한다.

힌트현재 권장사항
  • 래스터 그래픽: ragg + systemfonts (고품질 PNG/JPEG 출력)
  • 벡터 그래픽: svglite + systemfonts (확대 가능한 SVG 출력)
  • 특수 상황: showtext (특정 웹폰트나 레거시 장치 호환성)
  • 사용 금지: extrafont (버그와 의존성 문제로 인해 권장하지 않음)

이러한 진화를 통해 R에서의 글꼴 사용은 “가능은 하지만 복잡한” 작업에서 “그냥 작동하는” 표준 기능으로 변화했다.

6.5.4 한글 과학기술 문서 특수성

한글, 영문, 수식, 코드가 혼재하는 과학기술 문서는 단순한 글꼴 선택을 넘어 체계적인 타이포그래피 전략을 요구한다. 각 언어와 용도에 최적화된 글꼴을 조화롭게 조합하면서도 전체적 일관성을 유지하는 것이 핵심이다. 이를 위해 폰트 폴백 체인(font fallback chain) 개념을 활용하여 우선순위별 글꼴을 체계적으로 지정할 수 있다.

# 폰트 폴백 체인 설정: 우선순위별 글꼴 지정
font_families <- list(
  main = c("Noto Sans KR", "Arial", "Symbol"),      # 한글 → 영문 → 기호
  code = c("D2Coding", "JetBrains Mono", "Consolas"), # 한글코딩 → 글로벌 → 윈도우
  math = c("STIX Two Math", "Cambria Math", "Latin Modern Math")  # 수학 전용
)

특히 프로그래밍 코드에서는 문자 구별의 정확성이 버그 방지와 직결되어 글꼴 선택이 더욱 중요해진다. 숫자 0과 대문자 O의 구별을 위해서는 슬래시 제로(∅)나 점이 있는 제로를 사용하는 글꼴이 필요하고, 소문자 l과 대문자 I, 숫자 1의 혼동을 방지하기 위해서는 세리프나 구별 표시가 명확한 글꼴을 선택해야 한다. 중괄호 {}, 소괄호 (), 대괄호 []도 형태와 크기 차이로 명확히 구별되는 것이 중요하다. 이러한 요구사항을 충족하는 한글 지원 코딩 폰트로는 네이버에서 개발한 D2Coding이 한글을 완벽 지원하며 무료로 제공되고, 나눔고딕코딩은 가독성이 우수하여 한글 주석 작성에 최적화되어 있다. 글로벌 표준인 JetBrains Mono는 부분적 한글 지원과 함께 리가처(ligature) 기능을 제공하여 현대적인 코딩 환경에 적합하다.

수학 수식이 포함된 문서에서는 \(\LaTeX\) 엔진과 조화도 고려해야 한다. Quarto의 PDF 출력에서 unicode-math 패키지와 함께 STIX Two Math 같은 수학 전용 글꼴을 설정하고, 본문에는 Noto Serif CJK KR 같은 한글 최적화 글꼴을 별도로 지정하는 방식이 효과적이다.

# _quarto.yml - 수학 수식용 폰트 설정
format:
  pdf:
    include-in-header:
      text: |
        \usepackage{unicode-math}
        \setmathfont{STIX Two Math}  # 수학 기호 전용
        \setmainfont{Noto Serif CJK KR}  # 본문은 별도

이렇게 계층적으로 설정하면 한 문서 안에서 한글 본문, 영문 인용, 수학 수식, 프로그래밍 코드가 각각 최적의 글꼴로 표현되면서도 전체적인 조화를 이루게 된다.

6.5.5 네이버 글꼴 설치

네이버에서 제공하는 고품질 한글 글꼴들은 과학기술 문서 작성에 필수적인 도구가 되었다. 나눔스퀘어는 깔끔한 산세리프 형태로 제목과 UI 요소에 적합하며, D2 Coding 글꼴은 프로그래밍 코드 작성을 위해 특별히 설계되어 문자 구별이 명확하다. 두 글꼴 모두 Windows에서는 “모든 사용자용으로 설치” 옵션을 통해 C:\Windows\Fonts\ 디렉토리에 설치되며, 설치 완료 후 R에서 사용하기 위해서는 systemfonts 패키지를 통한 등록 과정이 필요하다.

그림 6.15: 윈도우 나눔스퀘어 글꼴 설치
그림 6.16: D2 코딩폰트 설치

그림 6.15그림 6.16 에서 보듯이 두 글꼴의 설치 과정은 동일하며, 시스템 설치 후에는 R 환경에서 systemfonts 패키지를 통해 글꼴을 등록해야 한다. 먼저 fs::file_exists() 함수로 글꼴 파일이 정상 설치되었는지 확인하고, font_add() 함수를 사용하여 R 세션에서 사용할 수 있도록 등록한다.

library(systemfonts)

# 설치 확인
fs::file_exists("C:/Windows/Fonts/NanumSquare.ttf")
fs::file_exists("C:/Windows/Fonts/D2Coding.ttf")

# 글꼴 등록
register_font("NanumSquare", plain = "C:/Windows/Fonts/NanumSquare.ttf")
register_font("D2Coding", plain = "C:/Windows/Fonts/D2Coding.ttf")

네이버에서 최근 공개한 마루부리 글꼴도 동일한 원리로 등록할 수 있으며, 다양한 굵기를 제공하여 타이포그래피의 위계를 표현하기에 적합하다.

# 마루부리 글꼴 등록 (다양한 굵기)
register_font("MaruBuri-Light", plain = "C:/Windows/Fonts/MaruBuri-Light.ttf")
register_font("MaruBuri-Regular", plain = "C:/Windows/Fonts/MaruBuri-Regular.ttf")
register_font("MaruBuri-Bold", plain = "C:/Windows/Fonts/MaruBuri-Bold.ttf")

코딩 전용 글꼴은 문서 작성용 글꼴과 다른 목적을 가지지만 설치 과정은 동일하다. D2 Coding 글꼴을 RStudio IDE에서 사용하려면 “Tools → Global Options → Appearance”에서 Editor font로 설정하면 된다. 이렇게 설정하면 코드 편집기에서는 문자 구별이 명확한 모노스페이스 글꼴을, 문서 렌더링에서는 가독성이 우수한 본문용 글꼴을 각각 적용할 수 있다.

과학기술 문서에서 글꼴 선택은 단순한 미적 취향을 넘어 기능적 효율성과 직결된다. 제목에는 시각적 임팩트를 위해 나눔스퀘어 같은 산세리프 글꼴을 사용하고, 본문에는 장시간 읽기에 적합한 마루부리 같은 세리프 글꼴을 적용하며, 프로그래밍 코드에는 D2Coding 같은 모노스페이스 글꼴을 채택하는 것이 현대적인 문서 설계의 표준이다.

6.6 폰트 라이선스 가이드

과학기술 문서 작성과 연구 출판에서 폰트 라이선스 준수는 법적 위험을 방지하고 윤리적 연구 수행을 위한 필수 요소다. 특히 상업적 배포, 웹 임베딩, PDF 출판을 고려할 때 폰트의 저작권 상태를 명확히 파악해야 한다. 오픈소스 폰트라 하더라도 라이선스별로 상업적 이용 가능 여부, 재배포 권한, 수정 허용 범위가 크게 다르며, 이를 무시할 경우 연구 논문 게재 거부나 저작권 분쟁으로 이어질 수 있다. Document as Code 패러다임에서는 문서와 함께 폰트 라이선스 정보도 버전 관리되어야 하며, 협업 시 모든 팀원이 동일한 라이선스 조건을 준수해야 한다.

라이선스 유형 상업적 이용 재배포 수정 주요 예시
SIL Open Font License (OFL) Noto 시리즈, Source 시리즈
Apache License 2.0 IBM Plex, Open Sans
MIT License JetBrains Mono
GNU GPL Liberation 시리즈
Creative Commons ⚠️ ⚠️ ⚠️ 다양한 한글 폰트
상용 라이선스 💰 윤디자인, 산돌클라우드
✅ 완전 허용 | ⚠️ 조건부 허용 | ❌ 금지 | 💰 유료 구매 필요
표 6.2: 과학기술 문서용 주요 폰트 라이선스 비교

6.6.1 한국 폰트 라이선스 생태계

한국의 폰트 시장은 글로벌 오픈소스 흐름과 상업적 현실 사이에서 독특한 발전 양상을 보이고 있다. 네이버의 나눔글꼴과 D2 Coding 시리즈는 SIL OFL을 채택하여 개인과 기업이 자유롭게 사용할 수 있으며, 수정과 재배포도 허용한다. 구글의 노토글꼴(Noto CJK) 역시 OFL 기반으로 완전한 오픈소스 정책을 따른다. 반면 배달의민족에서 제공하는 주아체, 도현체 등은 개인과 기업 사용은 무료이지만 폰트 파일 자체의 수정은 금지하고 있어 파생 작업에 제약이 있다. IBM Plex Sans KR은 Apache 2.0 라이선스로 상업적 이용에 가장 자유로우며, 스포카의 한 산스는 OFL 기반으로 웹폰트 서비스도 제공한다. 토스에서 공개한 토스페이스 폰트 역시 OFL을 채택하여 금융 서비스 브랜딩에서 과학기술 문서까지 폭넓게 활용되고 있다.

6.6.2 라이선스 준수 실무 전략

실제 과학기술 문서 프로젝트에서 폰트 라이선스를 준수하려면 체계적인 접근이 필요하다. Quarto 프로젝트 초기 설정 시 사용할 폰트의 라이선스를 명시적으로 문서화하고, _quarto.yml에 주석으로 라이선스 정보를 포함시키는 것이 좋다. 웹 배포 시에는 CDN을 통한 웹폰트 로딩이 라이선스 위반 위험을 줄여주며, PDF 출판 시에는 폰트 서브셋이 임베드되므로 배포 권한을 반드시 확인해야 한다. 특히 연구 논문을 상업 출판사에 제출할 때는 해당 출판사의 폰트 정책을 사전에 확인하고, 필요시 OFL이나 Apache 라이선스 폰트로 변경할 준비를 해둬야 한다.

# _quarto.yml - 라이선스 정보 포함 폰트 설정 예시
format:
  html:
    mainfont: "Noto Sans KR"       # SIL OFL 1.1 - 상업적 이용 자유
    sansfont: "IBM Plex Sans KR"   # Apache 2.0 - 가장 자유로운 라이선스  
    monofont: "JetBrains Mono"     # SIL OFL 1.1 - 리가처 지원
  pdf:
    mainfont: "Noto Serif CJK KR"  # SIL OFL 1.1 - PDF 임베딩 허용
    sansfont: "Noto Sans CJK KR"   # SIL OFL 1.1 - 서브셋 포함 가능

문서 코드화 패러다임에서는 폰트 라이선스 정보도 코드처럼 버전 관리되어야 한다. 프로젝트 루트에 FONTS.md 파일을 생성하여 사용된 모든 폰트의 라이선스, 출처, 사용 범위를 명시하고, 팀원 간 공유하는 것을 권장한다. 또한 CI/CD 파이프라인에서 라이선스 호환성을 자동 검사하도록 설정하면 배포 전에 잠재적 문제를 미리 발견할 수 있다.

6.7 효과적인 글꼴 조합

과학기술 문서에서 글꼴 조합은 단순한 미적 선택을 넘어 정보의 위계질서와 인지적 효율성을 결정하는 핵심 요소다. 한글 문서의 특수성을 고려하면 더욱 복합적인 접근이 필요하다. 한글은 영문과 달리 복잡한 자소 구조를 가지며, 동일한 폰트 크기에서도 시각적 무게감이 다르게 느껴진다. 또한 한글의 네모꼴 특성과 영문의 가로형 특성이 혼재할 때 발생하는 시각적 불균형을 해결하면서도, 수식과 코드라는 과학기술 문서 고유의 요소들을 조화롭게 통합해야 한다.

그림 6.17: 글꼴 조합 핵심 원리 - 대비와 조화의 균형

그림 6.17 에서 보듯이 효과적인 글꼴 조합의 핵심 원리는 대비(Contrast)와 조화(Harmony)의 균형에 있다. 제목에는 강한 시각적 임팩트를 위해 산세리프(Sans-serif) 계열의 IBM Plex Sans KR이나 Noto Sans KR을 사용하고, 본문에는 장시간 읽기에 적합한 세리프(Serif) 계열의 Noto Serif KR이나 본명조를 배치하는 것이 검증된 접근법이다. 이때 중요한 것은 단순히 세리프와 산세리프를 섞는 것이 아니라, 각 폰트가 담당하는 정보의 성격과 기능에 맞는 시각적 특성을 제공하는 것이다. 코드 블록에는 문자 구별이 명확한 모노스페이스 계열의 JetBrains Mono나 D2Coding을 사용하여 프로그래밍 코드의 정확성을 보장하고, 캡션과 부연 설명에는 본문보다 작은 크기의 산세리프를 사용하여 시각적 계층을 명확히 구분한다.

6.7.1 문서 유형별 최적 폰트 전략

그림 6.18 는 세 가지 주요 문서 유형별 최적 글꼴 전략을 보여준다. 과학기술 문서의 폰트 선택은 독자층과 매체 특성을 반영해야 한다. 학술 논문에서는 장시간 읽기에 최적화된 조합이 필요하며, Noto Serif KR을 본문에 사용하고 Noto Sans KR을 제목과 캡션에 배치하는 것이 검증된 접근법이다. 세리프 폰트의 작은 돌기들이 시선의 자연스러운 흐름을 유도하여 긴 문단 읽기 시 피로도를 줄여주며, 국제적으로 통용되는 Google의 Noto 시리즈는 다양한 학술 출판사의 요구사항을 만족한다. JetBrains Mono를 코드 폰트로 사용하면 리가처(ligature) 기능을 통해 ->, ==, != 같은 프로그래밍 연산자를 더 직관적으로 표현할 수 있어 코드 가독성이 향상된다.

# 학술 논문 최적화 설정
format:
  pdf:
    mainfont: "Noto Serif KR"
    sansfont: "Noto Sans KR" 
    monofont: "JetBrains Mono"

기업 환경의 보고서나 프레젠테이션에서는 브랜드 일관성과 모던한 느낌이 중요하며, IBM Plex 시리즈로 통일하는 전략이 효과적이다. IBM Plex Sans KR을 본문과 제목 모두에 사용하되 굵기(Weight) 차이로 시각적 계층을 구분하고, IBM Plex Mono를 코드에 사용하여 전체적인 타이포그래피 일관성을 확보한다. 이러한 조합은 특히 HTML 출력에서 뛰어난 화면 최적화를 보여주며, 웹 기반 대시보드나 인터랙티브 보고서에 적합하다. 또한 IBM의 Apache 2.0 라이선스는 상업적 활용에 가장 자유로운 조건을 제공한다.

정부나 공공기관 문서에서는 신뢰성과 권위적 느낌이 중요하며, 본명조와 나눔고딕의 조합이 한국적 정서에 가장 적합하다. 본명조의 단정하고 격식 있는 느낌은 공식 문서의 무게감을 더해주고, 나눔고딕의 명료한 산세리프 형태는 제목과 강조 텍스트에 적절한 시각적 대비를 제공한다. D2Coding을 함께 사용하면 정부 정책의 기술적 내용이나 법령 조문을 명확하게 표현할 수 있다. 이러한 조합은 특히 PDF 출력에서 인쇄 품질이 우수하며, 공문서의 장기 보관과 재현성 측면에서도 검증된 선택이다.

그림 6.18: 문서 유형별 최적 글꼴 전략 비교

6.7.2 다국어 혼용 환경 해결책

그림 6.19 는 한글 과학기술 문서에서 가장 복잡한 도전인 한글, 영문, 숫자, 수식의 조화로운 통합 방법을 보여준다. 각 언어와 기호 체계가 서로 다른 시각적 특성을 가지고 있어 단순히 하나의 폰트로 처리하면 가독성과 미적 조화 모두에서 문제가 발생한다. 특히 영문 숫자의 경우 한글 폰트에 포함된 전각(한글 한 글자와 동일한 폭) 숫자보다는 등높이 숫자(Lining numbers) 형태의 반각(문자 너비에 따라 조정된 가변 폭) 숫자가 과학기술 데이터 표현에 더 적합하므로, CSS의 font-feature-settings 속성을 활용하거나 영문 전용 폰트를 부분적으로 적용하는 전략이 필요하다.

수학 수식의 경우 더욱 특별한 접근이 요구된다. \(\LaTeX\) 수식 렌더링에서는 본문 폰트와 수식 폰트가 시각적으로 조화를 이뤄야 하는데, unicode-math 패키지를 통해 Latin Modern Math나 STIX Two Math 같은 전용 수식 폰트를 사용하면서도 본문의 Noto Serif KR과 자연스럽게 연결되도록 설정해야 한다. 이때 중요한 것은 수식 내 변수명이나 함수명의 이탤릭체 처리가 본문의 강조 표현과 일관성을 유지하는 것이다.

타이포그래픽 스케일 시스템은 문서 전체의 시각적 리듬을 결정하는 핵심 요소다. 황금비(1.618)나 장4도(1.414) 같은 수학적 비율보다는 실용적인 1.25배 비율이 한글 문서에서 더 적합한 경우가 많다. 16px을 기준으로 할 때 제목은 20px(1.25배), 대제목은 25px(1.25²배), 캡션은 13px(1.25⁻¹배)로 설정하면 각 요소 간의 크기 차이가 명확하면서도 과도하지 않은 계층 구조를 만들 수 있다. 특히 코드 블록은 본문보다 한 단계 작은 크기를 사용하여 정보의 성격 차이를 시각적으로 구분하는 것이 효과적이다.

그림 6.19: 다국어 혼용 환경 글꼴 조화 방법
# 다국어 최적화 기본 설정
format:
  pdf:
    mainfont: "Noto Serif KR"
    mathfont: "Latin Modern Math"
    fontsize: "16px"
  html:
    fontsize: "16px"
    code-block-fontsize: "13px"

6.7.3 글꼴 조합 검증과 최적화

효과적인 글꼴 조합은 초기 설정으로 끝나는 것이 아니라 지속적인 검증과 최적화 과정이 필요하다. 가독성 측면에서는 긴 문단을 실제로 읽어보면서 눈의 피로도를 확인하고, 데스크톱, 태블릿, 모바일 등 다양한 화면 크기에서 텍스트 렌더링 품질을 점검해야 한다. 특히 수식과 그래프 캡션의 가독성은 과학기술 문서의 핵심 정보 전달에 직결되므로 세심한 검토가 필요하다.

일관성 검증에서는 동일한 문서가 HTML과 PDF로 출력될 때 폰트 렌더링 차이를 최소화하고, 한글-영어-숫자가 혼재된 문장에서 시각적 조화를 이루는지 확인해야 한다. 코드 블록은 본문과 명확히 구분되면서도 전체 디자인과 어울리는지 평가하는 것이 중요하다.

접근성 관점에서는 시각 장애인용 스크린 리더가 폰트 정보를 올바르게 인식하는지, 고대비 모드에서도 충분한 가독성을 유지하는지, 웹 접근성 가이드라인(WCAG)이 권장하는 최소 폰트 크기 14px 이상을 확보하는지 점검해야 한다. 문서 코드화 환경에서는 이러한 검증 과정도 자동화할 수 있으며, 팀 전체가 동일한 타이포그래피 기준을 공유함으로써 문서 품질의 일관성을 보장할 수 있다.

💭 생각해볼 점

글꼴과 타이포그래피는 과학기술 문서에서 단순한 시각적 장식이 아니라 정보 전달의 핵심 인프라다. 적절한 글꼴 선택은 독자의 읽기 경험과 정보 이해도를 현저히 개선할 수 있으며, 특히 한국어 과학기술 문서에서는 한글-영문-숫자-수식의 조화로운 통합이 문서의 전문성과 신뢰도를 좌우한다. 전통적인 워드프로세싱 환경에서 이러한 설정들이 개인의 경험과 직감에 의존했지만, 문서 코드화 패러다임에서는 타이포그래피 설정 자체가 버전 관리되고 팀 전체가 공유하는 재현가능한 자산이 된다.

이번 장에서 살펴본 체계적 글꼴 관리 방법론은 단순히 ’예쁜 문서’를 만들기 위한 것이 아니다. 과학기술 문서의 복잡한 정보 구조를 시각적으로 명확하게 전달하고, 국제적 표준과 한국어 특성을 모두 고려한 최적화된 읽기 경험을 제공하는 것이 핵심이다. systemfonts와 Quarto 통합, 다국어 환경에서의 글꼴 조화, 출력 매체별 최적화 전략은 모두 이러한 목표를 달성하기 위한 실용적 도구들이다. 특히 R 생태계와의 긴밀한 연동을 통해 데이터 시각화와 문서 타이포그래피가 하나의 일관된 디자인 시스템으로 작동하는 것은 문서 코드화의 독특한 장점이다.

타이포그래피 설정이 완료되면 이제 이러한 시각적 기반 위에서 실제 내용을 구조화하고 표현하는 방법이 필요하다. 다음 장에서는 마크다운을 중심으로 한 문서 구조화 문법을 다루면서, 글꼴과 타이포그래피가 어떻게 의미 있는 정보 계층과 결합되는지 살펴볼 것이다. 제목과 본문, 목록과 인용문, 코드와 수식이 각각의 타이포그래피 특성을 살려 하나의 통합된 문서 경험을 만들어가는 과정을 경험하게 될 것이다.