68 votes

Comment inclure la police Roboto dans la construction de webpack pour Material UI?

Pour un progressif application web basée sur le Matériel de l'INTERFACE utilisateur (Réagir) et construit avec Webpack, comment dois-je inclure police Roboto(s), de sorte que l'application ne dépend pas sur les serveurs de Google et les polices aussi travailler en mode hors connexion ?

Donc, ce qui est une bonne et simple solution de regroupement de la droite Roboto fichiers avec ma demande?

59voto

kimomat Points 919

Vous pouvez également le faire comme il est documenté dans ce numéro: https://github.com/callemall/material-ui/issues/6256

 npm install typeface-roboto --save
 

Ensuite, dans votre index.js:

 import 'typeface-roboto'
 

Fonctionne avec webpack / create-react-app.

57voto

Daniel Bank Points 1769

C'est la façon dont mon équipe a passé en dont la Roboto polices dans notre Webpack projet:

Télécharger le Roboto polices et de faire un fichier CSS dans une police de caractère spécifique de dossier

  • Créez un dossier (/fonts).
  • Télécharger tous les Roboto des polices de la Police de l'Écureuil et de les déplacer en /fonts.
  • Créer le fichier CSS (/fonts/index.css). Nous avons obtenu le contenu de ce fichier à partir de ce tutoriel.

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;
}

Utiliser le fichier-chargeur webpack module à charger dans les fichiers de police afin webpack peut les reconnaître

webpack.conf.js:

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

L'importation de la police de caractères du fichier css dans l'entrée principale de l'application

App.js:

import './fonts/index.css';

Et c'est tout. Votre application par défaut de la police doit maintenant être Roboto.

EDIT: Qui Roboto Polices ne Matériau-UI fait utiliser?

Une partie de cette question est de déterminer le droit Roboto polices de caractères à inclure dans le projet puisque la totalité de la Roboto polices est de près de 5 MO.

Dans le README, les instructions, y compris pour les Roboto point pour: fonts.google.com/?selection.family=Roboto:300,400,500. Ici, 300 = Roboto-Lumière, 400 = Roboto Réguliers, et 500 = Roboto-Moyen. Ceux-ci correspondent à la police des poids définis dans le typography.js fichier. Bien que ces trois polices poids compte pour une utilisation dans la quasi-totalité de la bibliothèque, il y a une référence à la Régulière-Gras dans DateDisplay.js. Si vous n'êtes pas en utilisant le DatePicker, vous devriez être sûr de les omettre. Italique styles de police n'est pas utilisé n'importe où dans le projet de côté de l'GitHub démarque du style.

Cette information est exacte au moment de la rédaction de ce document, mais il peut changer dans l'avenir.

0voto

sandorvasas Points 19

Dans le cas où l'application a été commencé par créer-réagir-app, il n'a pas un [visible] webpack configfile. Dans ce cas, vous pouvez effectuer les opérations suivantes:

  1. créer /répertoire des polices dans /public
  2. créer /public/fonts/fonts.css, qui définit l' @font-faces

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

  3. Copie des fichiers de police

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

  5. Hourra!

5/b. Si, pour une raison quelconque, cela ne fonctionne toujours pas, changez les polices' extensions .css (également à la src: url('./OperatorMono.css') )

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X