88 votes

Comment importer une nouvelle police dans un projet - Angular 5

Je veux importer une nouvelle police dans mon projet Angular 5.

J'ai essayé :

1) Copier le fichier dans assets/fonts/

2) l'ajouter à .angular-cli.json styles

mais j'ai vérifié que le fichier n'est pas une .css il s'agit d'un .otf qui fonctionne comme un .exe (c'est un installateur) donc je ne sais pas vraiment comment l'importer. Une idée ?

3 votes

Jetez un coup d'œil ici stackoverflow.com/questions/3245141/ . Créez le css fle et mettez-le dans votre .angular-cli.json fichier

0 votes

J'ai trouvé la réponse ici, maven corrompait les polices. stackoverflow.com/questions/31001842/

159voto

Saptarshi Basu Points 1231

Vous devez placer les fichiers de police dans le dossier assets (il peut y avoir un sous-dossier fonts dans assets) et y faire référence dans les styles :

@font-face {
  font-family: lato;
  src: url(assets/font/Lato.otf) format("opentype");
}

Une fois fait, vous pouvez appliquer cette police où vous voulez :

* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
  font-family: 'lato', 'arial', sans-serif;
}

Vous pouvez mettre le @font-face dans votre définition globale styles.css ou styles.scss et vous seriez en mesure de faire référence à la police n'importe où - même dans votre composant CSS/SCSS spécifique. styles.css ou styles.scss est déjà défini dans angular-cli.json . Ou, si vous le souhaitez, vous pouvez créer un fichier CSS/SCSS distinct et le déclarer dans angular-cli.json avec le fichier styles.css ou styles.scss comme :

"styles": [
  "styles.css",
  "fonts.css"
],

0 votes

Voulez-vous dire que je dois mettre à jour les styles de mon .angular-cli-json en "styles" : [ @font-face { font-family : lato ; src : url(assets/font/Lato.ttf) ; } ] ?

2 votes

Vous pouvez mettre le @font-face dans votre fichier styles.css ou stles.scss global et vous pourrez faire référence à la police n'importe où, même dans vos CSS/SCSS spécifiques aux composants. styles.css est déjà défini dans angular-cli.jso. Ou, si vous voulez, vous pouvez créer un fichier CSS séparé et le mentionner dans angular-cli.json.

0 votes

Est-il nécessaire d'ajouter format("truetype") ; ? J'utilise fonts.googleapis.com/css?family=Source+Sans+Pro et cela fonctionne directement.

35voto

David Points 11437

Vous pouvez essayer de créer un css pour votre police avec font-face (comme expliqué ici )

Étape 1

Créez un fichier css avec la face de la police et placez-le quelque part, comme dans assets/fonts

customFont.css

@font-face {
    font-family: YourFontFamily;
    src: url("/assets/font/yourFont.otf") format("truetype");
}

Étape 2

Ajoutez le css à votre .angular-cli.json (ou .angular.json pour l'angle 6+) dans la styles config

"styles":[
 //...your other styles
 "assets/fonts/customFont.css"
 ]

N'oubliez pas de redémarrer ng serve après avoir fait cela

Étape 3

Utilisez la police dans votre code

composant.css

span {font-family: YourFontFamily; }

1 votes

Est-il nécessaire d'ajouter format("truetype") ; ? J'utilise fonts.googleapis.com/css?family=Source+Sans+Pro et cela fonctionne directement

0 votes

Veuillez vous assurer que vous mettez la barre oblique avant les actifs, comme "/assets/font/". Si vous omettez la barre oblique, cela entraînera une erreur d'URL invalide.

0 votes

Assurez-vous que le nom du fichier css est le même, à l'étape 1 c'est customfont.css mais à l'étape 2 c'est customFonts.css, faites attention.

6voto

Smaillns Points 593

La réponse est déjà existante ci-dessus, mais je voudrais ajouter quelque chose vous pouvez spécifier ce qui suit dans votre @font-face

@font-face {
  font-family: 'Name You Font';
  src: url('assets/font/xxyourfontxxx.eot');
  src: local('Cera Pro Medium'), local('CeraPro-Medium'),
  url('assets/font/xxyourfontxxx.eot?#iefix') format('embedded-opentype'),
  url('assets/font/xxyourfontxxx.woff') format('woff'),
  url('assets/font/xxyourfontxxx.ttf') format('truetype');
  font-weight: 500;
  font-style: normal;
}

Vous pouvez donc simplement indiquer le nom de la famille de caractères que vous avez déjà choisi.

NOTE : le font-weight et le font-style dépendent de vos fichiers .woff .ttf ...

1voto

TheJeff Points 685

Si vous utilisez Angular,

Veillez à placer les polices dans votre dossier de ressources.

Beaucoup de personnes qui découvrent Angular pensent qu'il faut les placer ailleurs, mais Angular optimise beaucoup sa prod autour des fichiers du dossier assets.

-1voto

eliod Points 19

Vous devrez également mettre à jour votre fichier web.config comme ceci : (choisissez votre type de police)

<system.webServer>
  <staticContent>
    <mimeMap fileExtension=".woff2" mimeType="application/x-font-woff" />
    <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" />
    <mimeMap fileExtension=".json" mimeType="application/json" />
    <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
    <mimeMap fileExtension=".ttf" mimeType="application/x-font-truetype" />
    <mimeMap fileExtension=".otf" mimeType="application/x-font-opentype" />
  </staticContent>

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