You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 01:53:11