react-admin añadir fuente con override MuiCssBaseline @global @font-face no funciona
Estoy tratando de agregar el archivo “NotoSansSC-Regular.otf” de Google a “react-admin” para que sea la fuente predeterminada para el chino simplificado. Hasta ahora, he logrado que funcione si incluyo las fuentes en el archivo HTML raíz mediante CSS:
typography: {
fontFamily: ["Roboto", "Helvetica", "Arial", "sans-serif", "notasansregular"].join(","),
},
En mis temas. Todos los ejemplos que encontré sugieren que también puedo lograr que funcione de esta manera:
import notasansregular from "../../public/fonts/chinese/NotoSansSC-Regular.otf";
...
const notafont = {
fontFamily: "notasansregular",
fontStyle: "normal",
fontWeight: "normal",
src: `
url(${notasansregular}) format('opentype')
`,
};
...
const myTheme = {
...
overrides: {
MuiCssBaseline: {
"@global": {
"@font-face": [notafont],
},
},
...
}
Ninguno de los intentos que hice funcionó, incluido el uso de la misma URL (solo el nombre de archivo en bruto en url('NotoSansSC-Regular.otf')
), que es exactamente lo que funciona cuando lo incluyo a través de CSS en el index.html.
Algunos de los ejemplos que vi colocaron <cssbaseline></cssbaseline>
directamente dentro de un ThemeProvider
en JSX, pero en react-admin
está en un lugar muy incómodo para intentar modificar, dado que no tengo idea si ese es el problema, y colocarlo en otros posibles lugares (fuera o dentro de <admin></admin>
) no hace ninguna diferencia.
davy.ai
Solución para agregar NotoSansSC-Regular.otf a React-Admin
Para agregar la fuente
NotoSansSC-Regular.otf
de Google areact-admin
, puedes seguir estos pasos:NotoSansSC-Regular.otf
en la carpetapublic/fonts/chinese/
dentro del directorio de tu aplicación de React.En el componente donde deseas usar la fuente, impórtala usando el siguiente código:
font face
usando la fuente importada, de la siguiente manera:Aquí,
notoFont
es la fuente importada ynotoFontFace
es el objeto de tipofont face
que estamos definiendo.Ahora, define tu objeto de tema y agrega el
font face
a los estilos globales de la siguiente manera:Aquí, estamos agregando el
font face
notoFontFace
a los estilos globales usando el componenteMuiCssBaseline
, que es proporcionado por Material UI para aplicar la normalización CSS.Al agregar
notoFontFace
a los estilos globales, puedes usarnotoFont
en cualquier componente sin importarlo explícitamente.Además, asegúrate de envolver tu aplicación con el componente
ThemeProvider
y pasarle el objetomyTheme
.Esto debería funcionar y verás tu fuente simplificada china en tu aplicación.