手順
- 使用したい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.tsx
でimport
する
実際のコード
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