コンテンツへスキップ

フォントモジュール

このAPIリファレンスは、next/font/googlenext/font/localの使用方法を理解するのに役立ちます。機能と使用方法については、フォントの最適化ページを参照してください。

フォント関数引数

使用方法については、Google Fontsローカルフォントを確認してください。

キーfont/googlefont/localタイプ必須
src文字列またはオブジェクトの配列はい
weight文字列または配列必須/オプション
style文字列または配列-
subsets文字列の配列-
axes文字列の配列-
display文字列-
preloadブール値-
fallback文字列の配列-
adjustFontFallbackブール値または文字列-
variable文字列-
declarationsオブジェクトの配列-

src

フォントファイルのパスを文字列、またはフォントローダー関数が呼び出されたディレクトリを基準としたオブジェクトの配列(型 `Array<{path: string, weight?: string, style?: string}>`)で指定します。

next/font/localで使用

  • 必須

  • src:'./fonts/my-font.woff2' (`my-font.woff2` は `app` ディレクトリ内の `fonts` という名前のディレクトリに配置されます)
  • src:[{path: './inter/Inter-Thin.ttf', weight: '100',},{path: './inter/Inter-Regular.ttf',weight: '400',},{path: './inter/Inter-Bold-Italic.ttf', weight: '700',style: 'italic',},]
  • フォントローダー関数が `app/page.tsx` で `src:'../styles/fonts/my-font.ttf'` を使用して呼び出された場合、`my-font.ttf` はプロジェクトのルートにある `styles/fonts` に配置されます。

weight

フォントのweight。以下の可能性があります。

  • 特定のフォントで使用可能なウェイトの値を表す文字列、またはvariable フォントの場合は値の範囲。
  • フォントがvariable google fontでない場合のウェイト値の配列。next/font/googleのみに適用されます。

next/font/googlenext/font/localで使用されます。

  • 使用しているフォントがvariableではない場合に必須です。

  • weight: '400': 単一のウェイト値を表す文字列 - フォントInterでは、可能な値は'100''200''300''400''500''600''700''800''900'、または'variable'(デフォルトは'variable')。
  • weight: '100 900': variableフォントの100から900までの範囲を表す文字列。
  • weight: ['100','400','900']: variableでないフォントの3つの可能な値の配列。

style

以下の可能性を持つフォントstyle

  • デフォルト値が'normal'である文字列value
  • フォントがvariable google fontでない場合のスタイル値の配列。next/font/googleのみに適用されます。

next/font/googlenext/font/localで使用されます。

  • オプション

  • style: 'italic': 文字列 - next/font/googleではnormalまたはitalic
  • style: 'oblique': 文字列 - next/font/localでは任意の値を取ることができますが、標準的なフォントスタイルからのものであることが期待されます。
  • style: ['italic','normal']: next/font/googleの2つの値の配列 - 値はnormalitalic

subsets

文字列値の配列で定義されたフォントsubsets。各サブセットの名前は、プリロードされるように指定します。subsetsで指定されたフォントには、preloadオプションがtrueの場合(デフォルト)、headにlink preloadタグが挿入されます。

next/font/googleで使用されます。

  • オプション

  • subsets: ['latin']: サブセットlatinを含む配列。

すべてのサブセットのリストは、フォントのGoogle Fontsページにあります。

axes

一部のvariableフォントには、追加のaxesを含めることができます。デフォルトでは、ファイルサイズを小さくするためにフォントウェイトのみが含まれています。axesの可能な値は、特定のフォントによって異なります。

next/font/googleで使用されます。

  • オプション

  • axes: ['slnt']: こちらに示されているように、追加のaxesとしてslntを持つInter variableフォントの値slntを含む配列。 Google variableフォントページのフィルタを使用して、wght以外のaxes値を見つけることができます。

display

可能な文字列values'auto''block''swap''fallback'、または'optional'(デフォルト値は'swap')であるフォントdisplay

next/font/googlenext/font/localで使用されます。

  • オプション

  • display: 'optional': optional値に割り当てられた文字列。

preload

フォントをプリロードするかどうかを指定するブール値。デフォルトはtrue

next/font/googlenext/font/localで使用されます。

  • オプション

  • preload: false

fallback

フォントをロードできない場合に使用するフォールバックフォント。デフォルト値のないフォールバックフォントの文字列配列。

  • オプション

next/font/googlenext/font/localで使用されます。

  • fallback: ['system-ui', 'arial']: フォールバックフォントをsystem-uiまたはarialに設定する配列。

adjustFontFallback

  • next/font/googleの場合:累積レイアウトシフトを減らすために、自動フォールバックフォントを使用するかどうかを設定するブール値。デフォルトはtrue
  • next/font/localの場合: 文字列、または自動フォールバックフォントを使用するかどうかを設定するブール値false。これにより、累積レイアウトシフトを軽減します。使用可能な値は'Arial''Times New Roman'、またはfalseです。デフォルトは'Arial'です。

next/font/googlenext/font/localで使用されます。

  • オプション

  • adjustFontFallback: false: next/font/google
  • adjustFontFallback: 'Times New Roman': next/font/local

variable

スタイルがCSS変数メソッドで適用される場合に使用されるCSS変数名を定義する文字列値。

next/font/googlenext/font/localで使用されます。

  • オプション

  • variable: '--my-font': CSS変数--my-fontが宣言されます。

declarations

生成された@font-faceをさらに定義する、フォントフェイス記述子のキーバリューペアの配列。

next/font/localで使用

  • オプション

  • declarations: [{ prop: 'ascent-override', value: '90%' }]

スタイルの適用

フォントスタイルは3つの方法で適用できます。

className

読み取り専用のCSS classNameを返します。これは、ロードされたフォントをHTML要素に渡すために使用されます。

<p className={inter.className}>Hello, Next.js!</p>

style

ロードされたフォントの読み取り専用のCSS styleオブジェクトを返します。これは、HTML要素に渡すために使用され、フォントファミリー名とフォールバックフォントにアクセスするためのstyle.fontFamilyが含まれます。

<p style={inter.style}>Hello World</p>

CSS変数

外部スタイルシートでスタイルを設定し、そこに追加のオプションを指定する場合は、CSS変数メソッドを使用します。

フォントのインポートに加えて、CSS変数が定義されているCSSファイルもインポートし、フォントローダーオブジェクトのvariableオプションを次のように設定します。

app/page.tsx
import { Inter } from 'next/font/google'
import styles from '../styles/component.module.css'
 
const inter = Inter({
  variable: '--font-inter',
})

フォントを使用するには、スタイルを適用したいテキストの親コンテナのclassNameをフォントローダーのvariable値に、テキストのclassNameを外部CSSファイルのstylesプロパティに設定します。

app/page.tsx
<main className={inter.variable}>
  <p className={styles.text}>Hello World</p>
</main>

component.module.css CSSファイルでtextセレクタクラスを次のように定義します。

styles/component.module.css
.text {
  font-family: var(--font-inter);
  font-weight: 200;
  font-style: italic;
}

上記の例では、テキスト「Hello World」はInterフォントと生成されたフォントフォールバックを使用して、font-weight: 200およびfont-style: italicでスタイル設定されています。

フォント定義ファイルの使用

localFontまたはGoogleフォント関数を呼び出すたびに、そのフォントはアプリケーション内に1つのインスタンスとしてホストされます。したがって、同じフォントを複数の場所で使用する必要がある場合は、1つの場所でロードし、必要な場所で関連するフォントオブジェクトをインポートする必要があります。これは、フォント定義ファイルを使用して行います。

たとえば、アプリディレクトリのルートにあるstylesフォルダーにfonts.tsファイルを作成します。

次に、フォント定義を次のように指定します。

styles/fonts.ts
import { Inter, Lora, Source_Sans_3 } from 'next/font/google'
import localFont from 'next/font/local'
 
// define your variable fonts
const inter = Inter()
const lora = Lora()
// define 2 weights of a non-variable font
const sourceCodePro400 = Source_Sans_3({ weight: '400' })
const sourceCodePro700 = Source_Sans_3({ weight: '700' })
// define a custom local font where GreatVibes-Regular.ttf is stored in the styles folder
const greatVibes = localFont({ src: './GreatVibes-Regular.ttf' })
 
export { inter, lora, sourceCodePro400, sourceCodePro700, greatVibes }

これらの定義は、コードで次のように使用できます。

app/page.tsx
import { inter, lora, sourceCodePro700, greatVibes } from '../styles/fonts'
 
export default function Page() {
  return (
    <div>
      <p className={inter.className}>Hello world using Inter font</p>
      <p style={lora.style}>Hello world using Lora font</p>
      <p className={sourceCodePro700.className}>
        Hello world using Source_Sans_3 font with weight 700
      </p>
      <p className={greatVibes.className}>My title in Great Vibes font</p>
    </div>
  )
}

コード内でフォント定義に簡単にアクセスできるように、tsconfig.jsonまたはjsconfig.jsonファイルでパスエイリアスを次のように定義できます。

tsconfig.json
{
  "compilerOptions": {
    "paths": {
      "@/fonts": ["./styles/fonts"]
    }
  }
}

これで、フォント定義を次のようにインポートできます。

app/about/page.tsx
import { greatVibes, sourceCodePro400 } from '@/fonts'

バージョン変更

バージョン変更点
v13.2.0@next/fontnext/fontに名前変更されました。インストールは不要になりました。
v13.0.0@next/fontが追加されました。