Skip to content

字体

Firefly 支持自定义字体配置,可以使用 CDN 字体或本地字体文件。

配置文件

src/config/fontConfig.ts

基础配置

属性类型默认值说明
enablebooleanfalse是否启用自定义字体
preloadbooleantrue是否预加载字体文件
selectedstring | string[]["misans-regular"]当前选择的字体 ID,支持多个字体组合
fallbackstring[]["system-ui", ...]全局字体回退列表
ts
export const fontConfig = {
  enable: false,
  preload: true,
  selected: ["misans-regular"],
  fallback: [
    "system-ui",
    "-apple-system",
    "BlinkMacSystemFont",
    "Segoe UI",
    "Roboto",
    "sans-serif",
  ],
};

字体项配置

每个字体项支持以下属性:

属性类型必填说明
idstring字体唯一标识符
namestring字体显示名称
srcstring字体文件路径或 URL
familystringCSS font-family 名称
weightstring | number字体粗细
stylestring字体样式:"normal""italic""oblique"
displaystringfont-display 属性:"auto""block""swap""fallback""optional"

内置字体

Firefly 预置了以下字体配置:

ID名称来源
system系统字体系统内置
zen-maru-gothicZen Maru GothicGoogle Fonts
interInterGoogle Fonts
misans-normalMiSans Normalunpkg CDN
misans-regularMiSans Regularunpkg CDN
misans-semiboldMiSans Semiboldunpkg CDN

添加自定义字体

ts
fonts: {
  "my-font": {
    id: "my-font",
    name: "My Custom Font",
    src: "https://fonts.googleapis.com/css2?family=My+Font&display=swap",
    family: "My Font",
    display: "swap",
  },
},

然后将其添加到 selected 中:

ts
selected: ["my-font"],

WARNING

  • 推荐使用 CDN 字体,天然支持按需加载,性能较好
  • 本地字体文件需自行进行字体子集化处理,否则会导致页面加载缓慢
  • 字体子集化会导致动态内容(如评论、Bangumi 等)无法正确显示字体