Embedding Chinese Fonts in R

Aim of this blog

To record the process of embedding Chinese font(or other CJK fonts) in R-created pdf files.

Used packages

  • showtext(primary)
  • extrafont

Example

If you wanna simply show chinese text in plot, showtext package is enought, ‘cause it includes a open source font “wqy-microhei” Here is an example.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
library(showtext)
library(ggplot2)
showtext_auto()

#plot example
set.seed(123)
x <- rnorm(10)
y <- rnorm(10)
df <- data.frame(x=x,y=y)
p <- ggplot(data=df,aes(x,y))+geom_point()+geom_smooth()+
	theme_bw(base_family = "wqy-microhei")
p + xlab("中文")+ylab("字体")

Another Example

If you gonna use other fonts in R, such as Songti(“宋体”) which is used in many Chinese academic article, you need to firstly download (or copy them from your OS) and import them, and use them as the previous example.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# import fonts from Windows
library(extrafont)
library(showtext)
library(ggplot2)

#Strategy1 COPY FONTS FROM SYSTEM
#Note: You have to run font_import() again when you have one new font
font_import()
loadfonts(device="pdf")
fonts() #show all fonts

#Straetegy2 ADD ONE FONT
font_add("Songti","~/Downloads/SourceHanSanSerif.otf")

#Strategy3 DOWNLOAD FONTS
font_add_google("Lobster", "lobster")

set.seed(123)
x <- rnorm(10)
y <- rnorm(10)
df <- data.frame(x=x,y=y)
p <- ggplot(data=df,aes(x,y))+geom_point()+geom_smooth()+
	theme_bw(base_family = "Songti")
p + xlab("中文")+ylab("字体")
0%