使用ggtext在ggplot中渲染Inter字体时无法显示斜体的问题
解决showtext加载Inter字体后ggtext无法渲染斜体的问题
问题核心:Google Fonts上的Inter字体本身支持斜体,但通过showtext::font_add_google()默认加载后,用ggplot的ggtext渲染<i>标记的斜体文本时,Inter字体无法正常显示斜体,而Roboto可以正常工作。
解决方案
原因是font_add_google()默认只下载并注册字体的常规字重版本,没有包含斜体变体。需要显式指定斜体对应的字重,让showtext同时加载常规和斜体版本的Inter字体。
修改后的代码如下:
library(tidyverse) library(showtext) library(ggtext) # 显式指定Inter字体的常规和斜体字重,确保加载斜体变体 font_add_google("Inter", regular.wt = 400, italic.wt = 400) font_add_google("Roboto") t0 <- tibble( x = 1, y = 4:1, lab = c( "This is Roboto", "<i>This is Roboto</i>", "This is Inter", "<i>This is Inter</i>" ) ) showtext_auto() t0 %>% ggplot(aes(x, y, label = lab)) + geom_richtext( fill = "grey95", family = "Roboto", size = 10, label.color = NA, data = t0 %>% filter(str_detect(lab, "Roboto")) ) + geom_richtext( fill = "grey95", family = "Inter", size = 10, label.color = NA, data = t0 %>% filter(str_detect(lab, "Inter")) )
说明
italic.wt = 400指定了Inter字体斜体对应的字重(Inter的常规斜体字重就是400),这样showtext会自动下载并注册该斜体变体。- 执行这段代码后,ggtext的
<i>标签就能正确调用Inter的斜体字体,实现和Roboto一样的斜体渲染效果。
内容的提问来源于stack exchange,提问作者tomw
相关产品推荐
相关产品推荐

