Introduction
In many cases, using non-standard fonts in R graphs is not an easy task, especially for PDF devices. Also, R users may have installed various fonts in their systems, but for many graphics devices there is no direct and portable way to make use of those fonts.
The extrafont package developed by Winston Chang is one nice solution to this problem, which mainly focuses on using TrueType fonts (.ttf) in PDF graphics device.
An Example
Below is a quick example to show the functionality of the showtext package.
# Load Google fonts (https://fonts.google.com/):
library(tidyverse)
library(showtext)
# Show some fonts can be used for ploting:
font_families_google() %>% head()
## [1] "ABeeZee" "Abel" "Abhaya Libre" "Abril Fatface"
## [5] "Aclonica" "Acme"
# An example of using Google Font:
font_add_google(name = "Oswald", family = "osw")
font_add_google(name = "Schoolbell", family = "bell")
# Automatically use showtext to render text:
showtext_auto()
# Use fonts (https://cran.rstudio.com/web/packages/showtext/vignettes/introduction.html,
# https://journal.r-project.org/archive/2015-1/qiu.pdf):
iris %>%
ggplot(aes(Sepal.Length, Sepal.Width)) +
geom_point() +
labs(title = "The famous (Fisher's or Anderson's) iris data set") +
theme(plot.title = element_text(family = "bell", size = 20)) +
theme(axis.title = element_text(family = "osw", size = 12)) +
theme(axis.text = element_text(family = "osw"))

LS0tDQp0aXRsZTogJ1VzZSBHb29nbGUgRm9udHMnDQphdXRob3I6ICdBdXRob3I6IE5ndXllbiBDaGkgRHVuZycNCnN1YnRpdGxlOiAiRGFpbHkgR3JhcGggU2VyaWVzIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50OiANCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgaGlnaGxpZ2h0OiB6ZW5idXJuDQogICAgIyBudW1iZXJfc2VjdGlvbnM6IHllcw0KICAgIHRoZW1lOiAiZmxhdGx5Ig0KICAgIHRvYzogVFJVRQ0KICAgIHRvY19mbG9hdDogVFJVRQ0KLS0tDQoNCmBgYHtyIHNldHVwLGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFLCBjYWNoZSA9IFRSVUUpDQoNCmBgYA0KDQojIEludHJvZHVjdGlvbiANCg0KSW4gbWFueSBjYXNlcywgdXNpbmcgbm9uLXN0YW5kYXJkIGZvbnRzIGluIFIgZ3JhcGhzIGlzIG5vdCBhbiBlYXN5IHRhc2ssIGVzcGVjaWFsbHkgZm9yIFBERiBkZXZpY2VzLiBBbHNvLCBSIHVzZXJzIG1heSBoYXZlIGluc3RhbGxlZCB2YXJpb3VzIGZvbnRzIGluIHRoZWlyIHN5c3RlbXMsIGJ1dCBmb3IgbWFueSBncmFwaGljcyBkZXZpY2VzIHRoZXJlIGlzIG5vIGRpcmVjdCBhbmQgcG9ydGFibGUgd2F5IHRvIG1ha2UgdXNlIG9mIHRob3NlIGZvbnRzLg0KDQpUaGUgKmV4dHJhZm9udCogcGFja2FnZSBkZXZlbG9wZWQgYnkgW1dpbnN0b24gQ2hhbmddKGh0dHBzOi8vcnN0dWRpby5jb20vc3BlYWtlcnMvd2luc3Rvbi1jaGFuZy8pIGlzIG9uZSBuaWNlIHNvbHV0aW9uIHRvIHRoaXMgcHJvYmxlbSwgd2hpY2ggbWFpbmx5IGZvY3VzZXMgb24gdXNpbmcgVHJ1ZVR5cGUgZm9udHMgKCoqLnR0ZioqKSBpbiBQREYgZ3JhcGhpY3MgZGV2aWNlLg0KDQojIEFuIEV4YW1wbGUNCg0KQmVsb3cgaXMgYSBxdWljayBleGFtcGxlIHRvIHNob3cgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlICpzaG93dGV4dCogcGFja2FnZS4gDQpgYGB7ciwgZmlnLnNob3d0ZXh0PVRSVUV9DQojIExvYWQgR29vZ2xlIGZvbnRzIChodHRwczovL2ZvbnRzLmdvb2dsZS5jb20vKTogDQoNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShzaG93dGV4dCkNCg0KIyBTaG93IHNvbWUgZm9udHMgY2FuIGJlIHVzZWQgZm9yIHBsb3Rpbmc6IA0KZm9udF9mYW1pbGllc19nb29nbGUoKSAlPiUgaGVhZCgpDQoNCiMgQW4gZXhhbXBsZSBvZiB1c2luZyBHb29nbGUgRm9udDogDQpmb250X2FkZF9nb29nbGUobmFtZSA9ICJPc3dhbGQiLCBmYW1pbHkgPSAib3N3IikNCmZvbnRfYWRkX2dvb2dsZShuYW1lID0gIlNjaG9vbGJlbGwiLCBmYW1pbHkgPSAiYmVsbCIpDQoNCiMgQXV0b21hdGljYWxseSB1c2Ugc2hvd3RleHQgdG8gcmVuZGVyIHRleHQ6IA0Kc2hvd3RleHRfYXV0bygpDQoNCiMgVXNlIGZvbnRzIChodHRwczovL2NyYW4ucnN0dWRpby5jb20vd2ViL3BhY2thZ2VzL3Nob3d0ZXh0L3ZpZ25ldHRlcy9pbnRyb2R1Y3Rpb24uaHRtbCwgDQojIGh0dHBzOi8vam91cm5hbC5yLXByb2plY3Qub3JnL2FyY2hpdmUvMjAxNS0xL3FpdS5wZGYpOiANCg0KaXJpcyAlPiUgDQogIGdncGxvdChhZXMoU2VwYWwuTGVuZ3RoLCBTZXBhbC5XaWR0aCkpICsgDQogIGdlb21fcG9pbnQoKSArIA0KICBsYWJzKHRpdGxlID0gIlRoZSBmYW1vdXMgKEZpc2hlcidzIG9yIEFuZGVyc29uJ3MpIGlyaXMgZGF0YSBzZXQiKSArIA0KICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGZhbWlseSA9ICJiZWxsIiwgc2l6ZSA9IDIwKSkgKyANCiAgdGhlbWUoYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChmYW1pbHkgPSAib3N3Iiwgc2l6ZSA9IDEyKSkgKyANCiAgdGhlbWUoYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KGZhbWlseSA9ICJvc3ciKSkNCmBgYA0KDQo=