Utiliza fuentes locales con Gatsby 4 y Emotion.
Estoy intentando usar una fuente local en Gatsby 4 y Emotion. Emotion está configurado correctamente, ya que lo estoy usando para otros estilos.
Para lograr esto, he seguido esta guía: https://www.gatsbyjs.com/docs/recipes/styling-css/#adding-a-local-font
Entonces he creado la carpeta src/fonts
, he colocado mis fuentes allí y las he definido en el CSS de Emotion:
export const defaultStyles = (theme: Theme) => css`
@font-face {
font-family: 'PT Sans';
src: url('../fonts/pt-sans-v12-latin-ext_latin-regular.eot');
src: local(''), url('../fonts/pt-sans-v12-latin-ext_latin-regular.eot?#iefix') format('embedded-opentype'),
url('../fonts/pt-sans-v12-latin-ext_latin-regular.woff2') format('woff2'),
url('../fonts/pt-sans-v12-latin-ext_latin-regular.woff') format('woff'),
url('../fonts/pt-sans-v12-latin-ext_latin-regular.ttf') format('truetype');
font-style: normal;
font-weight: 400;
font-display: swap;
}
`;
En mi componente de diseño, estoy declarando esto como un estilo global:
<global styles="{defaultStyles}"></global>
Desafortunadamente, las fuentes no se copian en la salida de Gatsby al ejecutar gatsby develop
o gatsby build
, por lo tanto, el navegador no puede encontrarlas y mostrarlas.
¿Cómo puedo hacer que Gatsby detecte las fuentes dentro de Emotion CSS y las copie?
davy.ai
Para hacer que Gatsby detecte las fuentes dentro de Emotion CSS y las copie en la salida, debes indicar a Gatsby que incluya la carpeta
src/fonts
en el proceso de construcción configurando el complementogatsby-source-filesystem
engatsby-config.js
. Agrega el siguiente código al arreglo de complementos:Esto indica a Gatsby que incluya la carpeta
src/fonts
y su contenido en el proceso de construcción.A continuación, debes asegurarte de que las fuentes estén correctamente referenciadas en tu Emotion CSS. En lugar de utilizar rutas relativas (
../fonts/
), debes utilizar la funciónfile()
proporcionada por Emotion, que resuelve la ruta en relación a la carpetasrc
. Por ejemplo:Ahora, cuando ejecutes
gatsby develop
ogatsby build
, Gatsby debería copiar correctamente las fuentes en la salida y el navegador debería poder mostrarlas.