Comment inclure la police Roboto dans la construction de webpack pour L'interface utilisateur?
progressif application web basée sur Matériel de l'INTERFACE utilisateur (Réagir) et construit avec Webpack, Comment puis-je inclure correctement la police(s) Roboto de sorte que l'application ne dépend pas des serveurs Google et les polices fonctionnent aussi hors ?
page d'installation références Google polices de la page, mais cela oblige évidemment les polices à être téléchargées à partir de Google serveur.
Un semblable Matériel de Problème d'INTERFACE utilisateur existe en ce qui concerne la police Roboto, mais dépend toujours de Google pour fournir les fichiers de police.
j'ai trouvé un paquet NPM fournissant les fichiers de police Roboto, mais je ne suis pas sûr de la façon d'inclure ces fichiers comme beaucoup de styles et de formats de police sont fournis et je ne sais pas ce que les styles de Matériel de l'INTERFACE utilisateur vraiment besoin d'. Aussi, importer ces familles de polices simplement via @import semble avoir performances.
alors, qu'est-ce qu'une bonne et simple solution pour regrouper les droit Roboto dépose des fichiers avec mon application?
3 réponses
Voici comment mon équipe a fait pour inclure les polices Roboto dans notre projet Webpack:
Téléchargez les polices Roboto et créez un fichier CSS dans un dossier spécifique à la police
- Créer un dossier (
/fonts
). - Téléchargez toutes les polices Roboto de Police Écureuil et dans
/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;
}
utilisez le module webpack du chargeur de fichiers pour charger les fichiers de police afin que webpack puisse les reconnaître
npm install --save file-loader
(https://www.npmjs.com/package/file-loader)- dans votre configuration webpack, utilisez le chargeur comme suit:
webpack.conf.js:
loaders: [
..., {
test: /\.(woff|woff2|eot|ttf|svg)$/,
loader: 'file?name=fonts/[name].[ext]'
}
]
Importer la police fichier css dans l'entrée principale de la app
App.js:
import './fonts/index.css';
Et c'est tout. La police par défaut de votre application devrait maintenant être Roboto.
EDIT: quelles polices Roboto utilise Material-UI?
une partie de cette question Est de déterminer le droit polices Roboto à inclure dans le projet puisque la totalité des polices Roboto est presque 5MB.
Dans le README, les instructions pour inclure Roboto point à: 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 aux poids de police définis dans le la typographie.fichier js. Alors que ces trois poids de police représentent l'utilisation dans presque toute la bibliothèque, il y a une référence à régulier-gras dans DateDisplay.js. Si vous n'utilisez pas le curseur de données, vous devriez probablement être sûr d'omettre cela. Italique de la police le style n'est utilisé nulle part dans le projet à part le style GitHub markdown.
cette information est exacte au moment de la rédaction du présent document, mais elle pourrait changer à l'avenir.
Vous pouvez aussi le faire comme il est documenté dans ce numéro: https://github.com/callemall/material-ui/issues/6256
npm install typeface-roboto --save
alors, dans votre index.js:
import 'typeface-roboto'
Fonctionne avec webpack/créer-réagir-app.
dans le cas où l'application a été commencée avec créer-réagir-app, il n'a pas de fichier [visible] webpack configfile. Dans ce cas, vous pouvez effectuer les opérations suivantes:
- créer /répertoire des polices dans /public
créer /public/fonts/fonts.css, qui définit le
@font-faces
@font-face { font-family: 'inglobal'; font-weight: normal; font-style: normal; src: url('./OperatorMono.ttf'); }
Copier les fichiers de police
ajouter
<link rel="stylesheet" href="%PUBLIC_URL%/fonts/fonts.css">
/public/index.HTMLHourra!
5/b. Si, pour une raison quelconque, cela ne fonctionne toujours pas, changez les polices " extensions .CSS (également à src: url ('./ OperatorMono.css'))