google fuente webpack webfonts material-ui roboto

webpack - roboto fuente google



¿Cómo incluir la fuente Roboto en la construcción del paquete web para la interfaz de usuario material? (3)

Así es como mi equipo comenzó a incluir las fuentes Roboto en nuestro proyecto Webpack:

Descargue las fuentes Roboto y cree un archivo CSS en una carpeta específica de la fuente

  • Crea una carpeta ( /fonts ).
  • Descarga todas las fuentes de Roboto de Font Squirrel y muévelas a /fonts .
  • Crea el archivo CSS ( /fonts/index.css ). Obtuvimos los contenidos para este archivo de este tutorial .

index.css:

* { font-family: Roboto, sans-serif; } @font-face { font-family: ''Roboto''; src: url(''Roboto-Regular-webfont.eot''); src: url(''Roboto-Regular-webfont.eot?#iefix'') format(''embedded-opentype''), url(''Roboto-Regular-webfont.woff'') format(''woff''), url(''Roboto-Regular-webfont.ttf'') format(''truetype''), url(''Roboto-Regular-webfont.svg#RobotoRegular'') format(''svg''); font-weight: normal; font-style: normal; } @font-face { font-family: ''Roboto''; src: url(''Roboto-Italic-webfont.eot''); src: url(''Roboto-Italic-webfont.eot?#iefix'') format(''embedded-opentype''), url(''Roboto-Italic-webfont.woff'') format(''woff''), url(''Roboto-Italic-webfont.ttf'') format(''truetype''), url(''Roboto-Italic-webfont.svg#RobotoItalic'') format(''svg''); font-weight: normal; font-style: italic; } @font-face { font-family: ''Roboto''; src: url(''Roboto-Bold-webfont.eot''); src: url(''Roboto-Bold-webfont.eot?#iefix'') format(''embedded-opentype''), url(''Roboto-Bold-webfont.woff'') format(''woff''), url(''Roboto-Bold-webfont.ttf'') format(''truetype''), url(''Roboto-Bold-webfont.svg#RobotoBold'') format(''svg''); font-weight: bold; font-style: normal; } @font-face { font-family: ''Roboto''; src: url(''Roboto-BoldItalic-webfont.eot''); src: url(''Roboto-BoldItalic-webfont.eot?#iefix'') format(''embedded-opentype''), url(''Roboto-BoldItalic-webfont.woff'') format(''woff''), url(''Roboto-BoldItalic-webfont.ttf'') format(''truetype''), url(''Roboto-BoldItalic-webfont.svg#RobotoBoldItalic'') format(''svg''); font-weight: bold; font-style: italic; } @font-face { font-family: ''Roboto''; src: url(''Roboto-Thin-webfont.eot''); src: url(''Roboto-Thin-webfont.eot?#iefix'') format(''embedded-opentype''), url(''Roboto-Thin-webfont.woff'') format(''woff''), url(''Roboto-Thin-webfont.ttf'') format(''truetype''), url(''Roboto-Thin-webfont.svg#RobotoThin'') format(''svg''); font-weight: 200; font-style: normal; } @font-face { font-family: ''Roboto''; src: url(''Roboto-ThinItalic-webfont.eot''); src: url(''Roboto-ThinItalic-webfont.eot?#iefix'') format(''embedded-opentype''), url(''Roboto-ThinItalic-webfont.woff'') format(''woff''), url(''Roboto-ThinItalic-webfont.ttf'') format(''truetype''), url(''Roboto-ThinItalic-webfont.svg#RobotoThinItalic'') format(''svg''); (under the Apache Software License). font-weight: 200; font-style: italic; } @font-face { font-family: ''Roboto''; src: url(''Roboto-Light-webfont.eot''); src: url(''Roboto-Light-webfont.eot?#iefix'') format(''embedded-opentype''), url(''Roboto-Light-webfont.woff'') format(''woff''), url(''Roboto-Light-webfont.ttf'') format(''truetype''), url(''Roboto-Light-webfont.svg#RobotoLight'') format(''svg''); font-weight: 100; font-style: normal; } @font-face { font-family: ''Roboto''; src: url(''Roboto-LightItalic-webfont.eot''); src: url(''Roboto-LightItalic-webfont.eot?#iefix'') format(''embedded-opentype''), url(''Roboto-LightItalic-webfont.woff'') format(''woff''), url(''Roboto-LightItalic-webfont.ttf'') format(''truetype''), url(''Roboto-LightItalic-webfont.svg#RobotoLightItalic'') format(''svg''); font-weight: 100; font-style: italic; } @font-face { font-family: ''Roboto''; src: url(''Roboto-Medium-webfont.eot''); src: url(''Roboto-Medium-webfont.eot?#iefix'') format(''embedded-opentype''), url(''Roboto-Medium-webfont.woff'') format(''woff''), url(''Roboto-Medium-webfont.ttf'') format(''truetype''), url(''Roboto-Medium-webfont.svg#RobotoMedium'') format(''svg''); font-weight: 300; font-style: normal; } @font-face { font-family: ''Roboto''; src: url(''Roboto-MediumItalic-webfont.eot''); src: url(''Roboto-MediumItalic-webfont.eot?#iefix'') format(''embedded-opentype''), url(''Roboto-MediumItalic-webfont.woff'') format(''woff''), url(''Roboto-MediumItalic-webfont.ttf'') format(''truetype''), url(''Roboto-MediumItalic-webfont.svg#RobotoMediumItalic'') format(''svg''); font-weight: 300; font-style: italic; }

Utilice el módulo de paquete de archivos web-loader para cargar los archivos de fuentes para que el paquete web pueda reconocerlos

webpack.conf.js:

loaders: [ ..., { test: //.(woff|woff2|eot|ttf|svg)$/, loader: ''file?name=fonts/[name].[ext]'' } ]

Importe el archivo css de la fuente en la entrada principal de la aplicación

App.js:

import ''./fonts/index.css'';

Y eso es. La fuente predeterminada de su aplicación ahora debería ser Roboto.

EDITAR: ¿Qué fuentes de Roboto usa realmente UI material?

Parte de esta pregunta es determinar las fuentes adecuadas de Roboto para incluir en el proyecto, ya que la totalidad de las fuentes Roboto es de casi 5 MB.

En el README , las instrucciones para incluir Roboto apuntan a: fonts.google.com/?selection.family=Roboto:300,400,500 . Aquí, 300 = Roboto-Light, 400 = Roboto-Regular y 500 = Roboto-Medium. Estos corresponden a los pesos de fuente definidos en el archivo typography.js . Si bien estos tres pesos de fuente representan el uso en casi la totalidad de la biblioteca, hay una referencia a Regular-Bold en DateDisplay.js . Si no está usando DatePicker, probablemente debería estar seguro omitir eso. El estilo de letra cursiva no se usa en ningún lugar del proyecto, aparte del estilo de reducción de GitHub.

Esta información es precisa al momento de escribir este documento, pero puede cambiar en el futuro.

Para una aplicación web progresiva basada en Material UI (React) y construida con Webpack , ¿cómo incluyo correctamente las fuentes Roboto para que la aplicación no dependa de los servidores de Google y las fuentes también funcionen fuera de línea ?

Entonces, ¿cuál es una solución buena y simple para agrupar los archivos Roboto correctos con mi aplicación?


En caso de que la aplicación se haya iniciado con create-react-app , no tiene un archivo de configuración de webpack [visible]. En este caso, puede hacer lo siguiente:

  1. crear / fuentes de directorio en / public
  2. crea /public/fonts/fonts.css, que define las @font-faces

    @font-face { font-family: ''inglobal''; font-weight: normal; font-style: normal; src: url(''./OperatorMono.ttf''); }

  3. Copiar archivos de fuentes

  4. agregue <link rel="stylesheet" href="%PUBLIC_URL%/fonts/fonts.css"> a /public/index.html''s

  5. ¡Viva!

5 / b. Si, por algún motivo, todavía no funciona, cambie las extensiones de las fuentes a .css (también en src: url (''./ OperatorMono.css''))