-
Notifications
You must be signed in to change notification settings - Fork 0
/
theme_fonts.qmd
267 lines (189 loc) · 18.9 KB
/
theme_fonts.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
---
editor_options:
chunk_output_type: console
editor:
markdown:
wrap: sentence
---
```{r}
#| include: false
source("_common.R")
```
# 글꼴
**글꼴(font)**은 디지털 광고와 마케팅 분야에서 브랜드 아이덴티티(Brand Identity)와 메시지 전달을 강화하기 위해 중요한 역할을 한다. 모바일 앱에서도 글꼴은 사용자 인터페이스와 경험에 큰 축을 담당한다. 뉴스와 저널리즘에서 글꼴은 정보 신뢰성과 중요성을 강조하는 수단으로 작용할 뿐만 아니라, 뉴스 타이틀과 부제, 본문 등에서 다양한 글꼴을 조합함으로써 정보 구조를 더욱 명확히 하는데 기여한다.
\index{글꼴} \index{font} \index{폰트}
교육 자료와 프레젠테이션(PPT)에서도 글꼴의 중요성은 간과할 수 없다. 텍스트가 주는 첫 인상은 강의전반에 큰 영향을 미치며, 적절한 글꼴 선택은 복잡한 정보를 이해하기 쉽게 만든다. 영화나 유튜브 동영상 제작에서 글꼴은 자막, 크레딧, 제목 등에서 활용될 뿐만 아니라 소셜 미디어(SNS), 인쇄물, 패키지 디자인 등 다양한 매체에 글꼴은 기능적이고 미적인 요소로 가미된다.
한걸음 더 들어가 과학기술 디지털 글쓰기에서 글꼴은 데이터 시각화, 표 제작, 코드 작성, 문서 작성 등 다양한 영역에서 필수불가결하다.
데이터 과학에서 시각화는 매우 중요한데 그래프 문법(Grammar of Graphics)을 구현한 `ggplot` 패키지에서 그래프 라벨, 제목, 범례에 사용되는 글꼴을 달리 설정함으로써 시각적인 표현 정확도와 전달력을 높일 수 있다.
표 문법(Grammar of table)을 구현한 `gt` 패키지에서 표 제목, 칼럼명, 주석 등에 글꼴을 달리 적용함으로써 표를 전문적으로 보일 수 있다.
코드 작성 시 개발자가 사용하는 통합개발환경(RStudio IDE)에 사용되는 코딩 전용 글꼴은 가독성을 높여 코드의 신속한 분석과 수정을 가능하게 하고, 문자와 숫자, 특수문자를 명확히 구분하여 프로그래밍 중 발생할 수 있는 실수를 줄여주고, 고정폭 글꼴과 합자(ligature) 같은 특별한 시각적 요소를 통해 코드 일관성 유지와 눈의 피로도 줄일 수 있다.
글꼴은 데이터 과학의 산출물을 효과적으로 전달하는 데 중요한 역할을 한다. PDF 보고서, 워드 문서, 대시보드, 웹사이트, 이력서, 팜플렛 제작 등 다양한 매체에서 글꼴의 선택은 전문성을 표현하고, 정보의 명확성과 가독성을 높인다.
특히, 보고서 PDF 문서에 차용된 글꼴은 전문적인 이미지를 강화하고, 내용의 신뢰성을 높이는 데 기여한다. 대시보드와 웹사이트 제작에서 글꼴은 색상, 레이아웃과 결합되어 사용자 경험을 향상시키는 중요한 요소로 자리잡고 있다.
![글꼴 적용 분야](images/fonts_application.jpg){#fig-fonts-application}
## 용어 설명
활자와 서체, 글꼴, 타이포그래프은 비슷한 개념처럼 느껴질 수 있으나 각각 다른 의미를 가지고 있다.
**활자(Type)**는 글자나 기호의 물리적 형태로 본래는 글자를 만드는 데 사용된 나무 또는 금속 조각을 일컫는 용어다.
**서체(또는 글꼴 모음, Typeface)**는 글자 및 기호가 서로 비슷한 특징을 가지도록 디자인된 문자 스타일을 의미하며, '나눔고딕', 'Times New Roman', 'Helvetica' 같은 이름을 가진 것이 서체다.
**글꼴(Font)**은 서체의 여러 변형을 총칭하는 용어로, 특정 서체에서 굵고 진한 글꼴(Bold), 기울임(italic) 등 변형이 모두 포함된다.
**타이포그래피(Typography)**는 활자 서체의 배열을 의미하며, 서체의 선택, 글자 크기, 줄 간격, 단어 간격, 문장 사이 간격과 맞춤 등을 조절하여 읽기 쉽고 미적으로 효과적인 텍스트 제작을 의미한다.
전세계적으로 글꼴의 수는 무수히 많지만, 크게 다음과 같이 몇가지로 분류된다.
먼저 글꼴은 기본적으로 **세리프(serif)**와 **산세리프(sans serif)**의 2가지 스타일로 구분되는데 세리프는 글자 획 끝에 작은 삐침이 있는 글꼴이며 산스(sans)는 프랑스어로 "없다", 또는 "없이"라는 뜻이기 때문에 삐침이 없는 글꼴을 지칭한다. 모노스페이스(`monospaced`) 글꼴은 코드 작성 등에서 유용하게 사용되며, 모든 글자가 같은 폭을 차지한다.
`Consolas`나 `D2 Coding`은 모노스페이스 글꼴의 대표적인 예다.
**디스플레이(Display)**와 **스크립트(Script)** 글꼴은 본문보다는 제목이나 강조할 부분에서 사용되며, 디자인적인 특성이 가미되어 있다.
디스플레이 글꼴은 대체로 크고 눈에 띄는 특성을, 스크립트 글꼴은 필기체나 서명 등을 모방한 스타일을 가진다. 수식을 표현하는데 많이 사용되는 {{< latex >}}에서 기본글꼴로 `Computer Modern`, `AMS Euler`, `STIX` 같은 수식전용 글꼴이 사용되어, 수학적 표기나 공식을 명확하고 정확하게 표현할 수 있도록 설계되었다.
\index{서체}\index{타이포그래피}\index{활자}\index{세리프}\index{산세리프}\index{모노스페이스}\index{디스플레이}\index{스크립트}\index{수식전용 글꼴} \index{코딩글꼴}
일반적으로 본문 작성에는 세리프나 산세리프 글꼴이 사용되며, 제목에는 더 독특하고 눈에 띄는 글꼴을 사용하는 경향이 있다. 증거 기반 문서, 행정 문서, 과학기술 문서 등에서도 이러한 경향이 나타나고 있다. 특히, 수식을 포함한 과학기술 문서에서 타이포그래피 중요성이 점점 더 커지고 있다. 이런 경향은 글꼴 선택이 갖는 문서의 전달력과 가독성에 미치는 영향을 무시 못하기 때문이다.
![문서에 담긴 디지털 글쓰기 글꼴](images/document_fonts.jpg){#fig-document-fonts}
::: callout-note
## 여우와 다람쥐 {#typeface-vs-font}
`typeface`는 서체로 번역되고 `font`는 글꼴로 번역된다.
하나의 `typeface`에는 여러 `font`가 포함될 수 있으며, 이를 검증하는 데에는 팬그램이 유용하게 사용된다. 팬그램은 모든 문자를 최소 한 번 이상 사용하여 만든 문장으로,
제작된 서체와 글꼴이 모든 글자에 대해 어떻게 표현되는지 확인하는 데 필요하다.
[**팬그램(Pangram)**](https://ko.wikipedia.org/wiki/팬그램)은 '모든 글자'라는 뜻으로 주어진 모든 문자를 적어도 한 번 이상 사용하여 만든 문장을 뜻한다. 팬그램은 로렘 입숨처럼 글꼴 샘플을 보여주거나 장비를 테스트하는 데 사용된다.
영어 팬그램으로 가장 유명한 **'The quick brown fox jumps over the lazy dog'**는 19세기부터 사용되어 왔다. 유사하게 한글에서는 **"다람쥐 헌 쳇바퀴에 타고파"**가 사용되고 있다.
:::
## 설치형 글꼴과 웹 글꼴
디지털 시대에서 글꼴은 문자와 기호를 디지털 방식으로 표현하는 데 필수적인 요소로 다양한 형태 글꼴이 개발되었는데, 주로 사용되는 두 가지 형태는 설치형 글꼴과 웹 글꼴입니다. 설치형 글꼴은 사용자가 자신의 컴퓨터나 다른 디지털 디바이스에 직접 설치하여 사용하며, 다양한 애플리케이션에서 해당 글꼴을 활용할 수 있다. 반면에, 웹 글꼴은 웹사이트를 통해 온라인 상에서 사용되며 웹 페이지에서 해당 글꼴이 사용된다.
\index{구글 글꼴} \index{눈누}
로컬 설치형 글꼴은 사용자의 컴퓨터나 기기(디바이스)에 직접 설치되어 있는 글꼴로, 윈도우(Windows)나 맥(macOS), 리눅스(Unix/Linux)에서 기본적으로 제공되는 글꼴이나 사용자가 따로 설치하여 사용하는 글꼴을 의미한다.
인터넷 연결 없이도 사용할 수 있으며, 로컬에서 동작하므로 빠른 속도를 제공한다는 점이 큰 장점이지만, 사용자 컴퓨터나 기기에 설치되어 있지 않은 글꼴은 보이지 않을 수 있으며, 글꼴 업데이트나 관리는 수동으로 직접해야 한다는 점은 단점이다.
반면 웹글꼴은 웹페이지를 로드할 때 서버에서 함께 다운로드 되어 사용자의 브라우저에 표시된다. [구글 글꼴(Google Fonts)](https://fonts.google.com/), [눈누](https://noonnu.cc/)와 같은 웹글꼴 서비스를 통해 제공되며, 웹페이지를 방문하는 모든 사용자에게 동일한 글꼴로 보여준다는 점은 장점이다.
다양한 스타일과 굵기(weights) 글꼴을 쉽게 사용할 수 있으며, 글꼴 업데이트나 관리가 자동화되는 장점은 있으나, 초기 페이지 로딩 시간이 길어질 수 있으며, 서버 다운 혹은 인터넷 연결 문제로 웹글꼴이 정상적으로 로드되지 않을 위험도 있고, 인터넷 통신 데이터 사용량이 증가되어 속도가 늦어지고 관련 네트워크 비용이 늘어날 수도 있다.
![설치형 글꼴과 웹 글꼴](images/ttf-web-fonts.png){fig-align="center"}
## 글꼴 설치
[구글 폰트(Google Fonts)](https://fonts.google.com/), [눈누](https://noonnu.cc/)와 같은 웹사이트에서 `.ttf`, `.otf` 형식 글꼴파일을 다운로드 한 후에 `C:\Windows\Fonts\` 디렉토리에 복사하거나, 다운로드 받은 글꼴파일을 더블 클릭하여 설치 버튼을 눌러 자동으로 해당 디렉토리에 설치한다.
글꼴을 시스템에 설치하면 모든 사용자가 사용할 수 있도 있지만, 프로젝트 별로 `fonts` 디렉토리를 생성하여 이를 프로젝트에서 불러와서 특정 글꼴을 사용하는 것도 많이 사용된다. 두가지 접근 방법 모두 장단점이 있다.
@fig-r-font 에서 네이버에서 무료로 제공하는 나눔글꼴과 D2Coding 글꼴을 다운로드 받아 운영제제에 설치한 후 R에서 `ggplot` 그래프를 제작하는데
`extrafont` 패키지 `font_import()` 함수를 통해 등록한 후 사용하는 사례를 보여주고 있다. RStudio에서 코딩전용 D2Coding 글꼴 설정하는 방법도 함께 우측에 나와있다.
![R 폰트/글꼴 설치](images/font_overview.png){#fig-r-font width="100%"}
### 글꼴 패키지
시스템에 글꼴이 설치되었다고 바로 문서 텍스트, 그래프, 표, 수식 등에 사용할 수 있는 것은 아니다. 이를 등록하는 절치가 필요하다.
언어마다 차이는 있지만 대체로 유사한 작업방식이기 때문에 R 언어를 사례로 살펴보자.
`extrafont`, `sysfonts`, `showtext`는 R에서 글꼴 처리를 위한 다양한 기능을 제공하는 패키지들이다. 여기서 `extrafont`와 `sysfonts`는 로컬에 설치된 글꼴을 다루는 데 특화되어 있는 반면, `showtext`는 웹 글꼴에 특화된 패키지다. `sysfonts`는 글꼴 관리에서 더 낮은 수준에서의 제어 기능을 제공하고, `extrafont`는 높은 수준의 작업에 집중하며 사용자 친화적인 방법으로 글꼴을 적용하는 데 특화되어 있다. 먼저, 로컬 컴퓨터에 설치된 R 글꼴 패키지를 확인한다.
\index{글꼴 패키지} \index{extrafont} \index{sysfonts} \index{showtext}
```{r}
#| label: tbl-font-pkg
#| tbl-cap: 로컬 컴퓨터에 설치된 R 글꼴 패키지
library(tidyverse)
font_packages <- c("extrafont", "showtext", "sysfonts")
fonts_list <- map(font_packages, packageDescription)
fonts_list |>
enframe() |>
mutate(패키지명 = map_chr(value, "Package"),
버전 = map_chr(value, "Version"),
날짜 = map(value, "Date") |> as.character(),
URL = map(value, "URL") |> as.character()) |>
select(-name, -value) |>
gt::gt()
```
### 네이버 글꼴 설치
[네이버 나눔스퀘어](https://campaign.naver.com/nanumsquare_neo) 글꼴을 로컬 컴퓨터에 다운로드 받아 설치할 수 있다.
@fig-nanumsquare 에서 "모든 사용자용으로 설치(A)"하게 되면 글꼴이 `C:\Windows\Fonts\` 디렉토리에 설치된다.
운영체제에 설치작업이 완료되면 R에서 사용할 수 있으나, 몇 가지 추가 작업이 필요하다.
우선, `fs` 패키지 `file_exists()` 함수를 사용하여 'NanumSquare.ttf' 파일이 정상적으로 설치되었는지 확인한다.
만약 `extrafont` 패키지를 사용한다면 `font_import()` 명령어를 사용하여 글꼴을 등록하고,
`path=`로 글꼴 파일의 경로를 직접 지정할 수 있으며, `pattern=`을 사용해서 특정 패턴에 맞는 글꼴을 일괄적으로 등록할 수도 있다.
최근에 많이 사용되고 있는 `sysfonts` 패키지를 사용한다면 `font_add()` 명령어를 사용하여 글꼴을 등록한다.
선택한 방식에 따라 글꼴을 설치하면 이후 R 프로젝트에서 네이버 나눔스퀘어 글꼴을 자유롭게 사용할 수 있다.
\index{나눔 글꼴}
![윈도우 나눔스퀘어 글꼴 설치](images/fonts_nanumsquare.jpg){#fig-nanumsquare}
```{r}
#| eval: false
# library(extrafont)
library(sysfonts)
fs::file_exists("C:/Windows/Fonts/NanumSquare.ttf")
# font_import(pattern = "NanumSquare.ttf", prompt = FALSE)
font_add("NanumSquare", "C:/Windows/Fonts/NanumSquare.ttf")
```
네이버에서 최근에 공개한 [마루부리 글꼴](https://hangeul.naver.com/maruproject_11)도 동일한 방식으로 설치한다. \index{마루부리 글꼴}
```{r}
#| eval: false
# MaruBuri 글꼴 설치
font_add("MaruBuri-ExtraLight", "C:/Windows/Fonts/MaruBuri-ExtraLight.ttf")
font_add("MaruBuri-Regular", "C:/Windows/Fonts/MaruBuri-Regular.ttf")
font_add("MaruBuri-Bold", "C:/Windows/Fonts/MaruBuri-Bold.ttf")
font_add("MaruBuri-Light", "C:/Windows/Fonts/MaruBuri-Light.ttf")
```
코딩전용 글꼴은 앞서 소개한 글꼴과 차이가 있지만 설치방식은 동일하다.
동일한 방식으로 [D2 Coding 글꼴](https://github.com/naver/d2codingfont)도 설치하고 RStudio IDE에서 "Tools" → "Global Options..."를 클릭하면 "Options"창이 열리고, `Appearance`에서 **Editor font:**에서 설치한 코딩전용 글꼴을 선택하고 **Editor theme:**도 지정한다.
\index{D2 코딩폰트}
![D2 코딩폰트 설치](images/font_d2coding.png){fig-align="center"}
문서나 프로젝트의 특성과 목적에 따라 글꼴 선택은 큰 영향을 미친다. 예를 들어, 제목에는 깔끔한 느낌을 주기 위해 삐침이 없는 나눔스퀘어 글꼴을 적용하고, 본문에는 가독성을 높이기 위해 삐침이 있는 마루부리 글꼴을 사용하고,
프로그래밍 작업에 코딩전용 D2Coding 글꼴을 채택함으로써 전체 글쓰기 저작 환경을 설정하는 것도 방법이다.
## 글꼴 적용 사례
예제로 `ggplot2`와 `sysfonts` 패키지를 사용해 다른 글꼴을 그래프 주요 요소에 반영한 데이터 시각화 R 코드를 살펴보자.
먼저 `ggplot2` 데이터 시각화를 위한 패키지와 `sysfonts` 글꼴 관리를 위한 라이브러리를 가져온다. `font_add` 함수를 사용해 NanumSquare, MaruBuri-Regular, MaruBuri-Bold 글꼴을 시스템에 등록한다. 이후 `data.frame`을 사용해 x값이 1부터 10까지, y값이 정규 분포를 따르는 데이터를 생성한다.
`ggplot` 함수로 기본 그래프를 설정하고 `geom_point`를 사용해 산점도를 그린다.
`labs` 함수로 그래프 제목과 x, y축 레이블을 설정하고,
`theme` 함수로 큰 제목에는 NanumSquare, x축과 y축 레이블에는 MaruBuri-Regular 글꼴을 적용한다. `annotate` 함수로 "다른 글꼴"이라는 텍스트를 MaruBuri-Bold 글꼴로 그래프에 추가하여 다른 글꼴을 적용한 그래프를 생성한다.
```{r}
#| eval: false
library(ggplot2)
library(sysfonts)
# 글꼴 시스템 등록
font_add("NanumSquare", "C:/Windows/Fonts/NanumSquare.ttf")
font_add("MaruBuri-Regular", "C:/Windows/Fonts/MaruBuri-Regular.ttf")
font_add("MaruBuri-Bold", "C:/Windows/Fonts/MaruBuri-Bold.ttf")
# 글꼴 캐시를 새로고침
font_families()
# 데이터 생성
data <- data.frame(
x = 1:10,
y = rnorm(10)
)
# ggplot 그래프 생성
fonts_gg <- ggplot(data, aes(x, y)) +
geom_point() +
labs(title = "큰 제목",
x = "x 축",
y = "y 축") +
theme(
plot.title = element_text(family = "NanumSquare", size = 37),
axis.title.x = element_text(family = "MaruBuri-Regular", size = 30),
axis.title.y = element_text(family = "MaruBuri-Regular", size = 30)
) +
annotate("text", x = 5, y = max(data$y)-0.1, label = "다른 글꼴",
size = 10, family = "MaruBuri-Bold")
ragg::agg_jpeg("images/fonts_example.jpeg", width = 3, height = 2, units = "in", res = 600)
fonts_gg
dev.off()
```
![다양한 글꼴을 적용한 `ggplot` 사례](images/fonts_example.jpeg){#fig-fonts-ggplot}
## 연습문제 {.unnumbered}
### 객관식 {.unnumbered}
1. 글꼴을 디지털 글쓰기에 사용하는 주된 목적은 무엇인가요?
a) 페이지 레이아웃 조정
b) 문서의 전문성과 가독성 향상
c) 파일 크기 줄이기
d) 인쇄 비용 절감
::: {.content-visible when-format="revealjs"}
정답: b) 문서의 전문성과 가독성 향상
설명: 글꼴은 디지털 글쓰기에서 문서의 전문성을 표현하고 정보의 명확성과 가독성을 높이는 중요한 역할을 합니다.
:::
2. 쿼토에서 사용할 수 있는 글꼴 유형에는 어떤 것들이 포함되나요?
a) 세리프, 산세리프, 모노스페이스
b) 산세리프와 스크립트만
c) 세리프와 디스플레이만
d) 모노스페이스와 디스플레이만
::: {.content-visible when-format="revealjs"}
정답: a) 세리프, 산세리프, 모노스페이스
설명: 쿼토에서는 세리프, 산세리프, 모노스페이스 등 다양한 유형의 글꼴을 사용할 수 있습니다.
:::
3. 글꼴을 선택할 때 고려해야 할 중요한 요소는 무엇인가요?
a) 색상만
b) 디자인과 가독성
c) 파일 크기만
d) 글꼴 이름만
::: {.content-visible when-format="revealjs"}
정답: b) 디자인과 가독성
설명: 글꼴을 선택할 때는 디자인과 가독성을 중요한 요소로 고려해야 합니다.
:::
### 서술형 {.unnumbered}
1. 쿼토에서 글꼴을 설치하고 적용하는 방법에 대해 설명해보세요.
::: {.content-visible when-format="revealjs"}
정답 및 설명: 쿼토에서 글꼴을 설치하고 적용하기 위해 먼저 글꼴 파일을 다운로드하고 시스템에 설치해야 합니다. 설치 후 쿼토 문서나 R 코드 내에서 특정 글꼴을 지정하여 사용할 수 있습니다.
:::
2. 글꼴 선택이 데이터 시각화에 미치는 영향에 대해 설명해보세요.
::: {.content-visible when-format="revealjs"}
정답 및 설명: 글꼴 선택은 데이터 시각화의 전달력과 가독성에 큰 영향을 미칩니다. 적절한 글꼴은 시각화의 명확성을 강화하고, 데이터의 중요한 부분을 강조하는 데 도움이 됩니다.
:::