LoginSignup
4
3

More than 3 years have passed since last update.

Next.js + MaterialUIでfontを指定する

Last updated at Posted at 2020-11-14

手順

  • 使用したいfontファイル(woff/otfなど)をpublic/fonts配下に設置
  • @font-faceを記載したcssファイルも同様にpublic/fonts配下に設置
  • _document.tsxのheadタグにlinkタグ設置<link rel="stylesheet" href="fonts/fonts.css" />
  • _app.tsx内でProviderに渡すthemeを作成(styles/theme.tsに作成)
  • 作成したtheme.ts_app.tsximportする

実際のコード

public/fonts/fonts.css
@font-face {
  font-family: 'fontname';
  font-weight: normal;
  font-style: normal;
  src: url('./fontname.woff');
}
src/pages/_document.tsx
import React from 'react'
import NextDocument, { Head } from 'next/document'

return (
// 略
 <Head>
   <link rel="stylesheet" href="fonts/fonts.css" />
 </Head>
// 略
)
src/styles/theme.ts
import { createMuiTheme } from '@material-ui/core'

let theme = createMuiTheme({
  typography: {
    fontSize: 16,
    fontFamily: ['fontname'].join(',')
  }
})
export default theme
src/pages/_app.tsx
import React, { useEffect } from 'react'
import {
  ThemeProvider as MaterialUIThemeProvider,
  StylesProvider
} from '@material-ui/styles'

import theme from '../../styles/theme'

const MyApp = ({ Component, pageProps }: any): JSX.Element => {

  return (
      <StylesProvider>
        <MaterialUIThemeProvider theme={theme}>
          <CssBaseline />
          <div>{pageProps.appData}</div>
          <Component {...pageProps} />
        </MaterialUIThemeProvider>
      </StylesProvider>
  )
}

export default MyApp
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3