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

如何通过bslib为Shiny应用提供本地字体?

解决Shiny中bs_theme自定义字体加载失败的问题

你用tags$style嵌入CSS的方式能正常加载自定义字体,但通过bs_theme()的heading_font参数配置时却失效,问题出在font_face()的用法上,以下是修正方案:

错误原因

font_face()的src参数不能直接写CSS的url字符串,需要用bslib提供的font_src()函数来构建字体源定义,同时要注意静态资源的路径规则。

修正后的代码

library(shiny)
library(bslib)

bslib::page_fluid(
  theme = bs_theme(
    version = 5,
    preset = "shiny",
    heading_font = font_face(
      family = 'Hunger Games',
      src = font_src("local('Hunger Games'), url('Hunger Games.ttf')", format = "truetype")
    )
  )
)

关键说明

  • 使用font_src()函数生成符合规范的字体源声明,它会自动处理CSS语法细节
  • Shiny的静态资源默认从项目根目录下的www文件夹读取,所以字体文件放在www里时,路径直接写url('Hunger Games.ttf')即可,无需添加www/前缀
  • 加上local('Hunger Games')可以优先使用本地已安装的同名字体,优化加载体验

内容的提问来源于stack exchange,提问作者umair durrani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 17:14:50