I do it like this
In this approach, we install fonts as packages using this website.
import '@fontsource/vazir'
import '@fontsource/fira-code'
import { Global } from '@emotion/react'
const GlobalStyles = () => (
<Global
styles={() => ({
'*': {
boxSizing: 'border-box',
},
body: {
fontFamily: 'Vazir, sans-serif',
},
})}
/>
)
export default GlobalStyles
// _app.tsx
import type { AppProps } from 'next/app'
import { ThemeProvider } from 'theme-ui'
import { theme } from '../components/ui/theme'
import GlobalStyles from '$components/ui/GlobalStyles'
function MyApp({ Component, pageProps }: AppProps) {
return (
<ThemeProvider theme={theme}>
<Component {...pageProps} />
<GlobalStyles />
</ThemeProvider>
)
}
export default MyApp