入门

提供者

字体提供者被设计为可插拔和可扩展的,因此无论您的设置如何,您都应该能够使用现有的提供者或编写您自己的提供者。

内置提供者

Nuxt 字体附带了许多内置提供者。

本地

本地提供者会深入扫描您的 public/ 目录(包括您的层)以查找字体文件(支持 ttf、woff、woff2、eot 或 otf 扩展名)。

然后,当您在 CSS 中使用 font-family 时,我们会检查它是否与这些文件中的一个匹配。我们还期望字体粗细、字体样式和子集在文件名中,除非它们是“默认”值(400 粗细、normal 样式和 latin 子集)。

谷歌

谷歌字体 是最知名的公共字体 API 之一。

googleicons

谷歌字体图标 添加了对 Material Symbols 和 Material Icons 的支持。

兔子

兔子字体bunny.net 提供,是一个与谷歌字体兼容的即插即用 API,专注于隐私。

fontshare

Fontshare 是一家免费的字体服务,提供来自印度字体铸造厂 (ITF) 的 100 多种专业级字体。

您应该在通过 fontshare 使用字体之前阅读 他们的完整条款

fontsource

Fontsource 是一个开源字体集合,专为在 Web 应用程序中进行自托管而设计。

Adobe

Adobe 字体 是一款字体服务,适用于个人和商业用途,包含在 Creative Cloud 订阅中。

要在您的 Nuxt 应用程序中配置 Adobe 提供者,您必须提供一个项目 ID 或项目 ID 数组,这些 ID 对应于您在 Adobe 字体中创建的 Web 项目。

export default defineNuxtConfig({
  modules: ['@nuxt/fonts'],
  fonts: {
    adobe: {
      id: ['<some-id>', '<another-kit-id>'],
    },
  }
})
我们目前无法为 Adobe 字体提供非拉丁语子集,因为它们没有公开的 API 来实现这一点。在这种情况下,请使用其他提供者。
您应该在通过 adobe 使用字体之前阅读 他们的完整条款

自定义提供者

Nuxt 字体中提供者 API 的核心已提取到一个通用库,可以被任何框架使用 - unifont.

提供者 API 可能在接下来的几个 unifont 版本中发生变化,但目前看起来像这样

import { defineFontProvider } from 'unifont'

export default defineFontProvider('some-custom-provider', async (options) => {
  // do some setup
  return {
    async resolveFont (fontFamily, options) {
      if (fontFamily === 'My Font Family') {
        return {
          fonts: [
            {
              src: [
                { url: 'https://cdn.org/my-font.woff2', format: 'woff2' },
              ],
              weight: 400,
              style: 'normal',
            }
          ]
        }
      }
    }
  }
})

模块作者还可以在 fonts:providers 钩子中添加他们自己的提供者(或删除现有的提供者),该钩子在所有模块运行后由 Nuxt 字体调用。

nuxt.hook('fonts:providers', providers => {
  delete providers.adobe

  providers['custom-provider'] = defineFontProvider('custom-provider', async () => {
    /** some setup */
    return {
      async resolveFont (fontFamily, options) {
        /** resolve font faces */
      }
    }
  })
})