Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to embed font to all page with nuxt js

I just embed google font to the global setting in nuxt.config.js

 link: [
      { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css?family=Roboto' }
    ]

But how to apply this font to every page .

like image 585
Joey Avatar asked Jul 20 '18 06:07

Joey


3 Answers

New answer

Use @nuxt/google-fonts package: https://google-fonts.nuxtjs.org

It's trivial to use and supports a bunch of options including downloading the fonts.


Old answer

If you want to include the font within your app so you're serving it

Download the font from: https://fonts.google.com/specimen/Roboto?selection.family=Roboto (Open the drawer and download the .zip file).

  1. Unpack the contents of the .zip into ./assets/fonts/* (create it if it does not exist).
  2. Create ./assets/fonts/roboto.css and place the following in it:
/* cyrillic-ext */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 400;
  src: local('Roboto'), local('Roboto-Regular'), url(KFOmCnqEu92Fr1Mu72xKOzY.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 400;
  src: local('Roboto'), local('Roboto-Regular'), url(KFOmCnqEu92Fr1Mu5mxKOzY.woff2) format('woff2');
  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 400;
  src: local('Roboto'), local('Roboto-Regular'), url(KFOmCnqEu92Fr1Mu7mxKOzY.woff2) format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 400;
  src: local('Roboto'), local('Roboto-Regular'), url(KFOmCnqEu92Fr1Mu4WxKOzY.woff2) format('woff2');
  unicode-range: U+0370-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 400;
  src: local('Roboto'), local('Roboto-Regular'), url(KFOmCnqEu92Fr1Mu7WxKOzY.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 400;
  src: local('Roboto'), local('Roboto-Regular'), url(KFOmCnqEu92Fr1Mu7GxKOzY.woff2) format('woff2');
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 400;
  src: local('Roboto'), local('Roboto-Regular'), url(KFOmCnqEu92Fr1Mu4mxK.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

(You can find this CSS by going to https://fonts.googleapis.com/css?family=Roboto).

Then change nuxt.config.js to include the CSS file in the css property:

module.exports = {
  /*
  ** Global CSS
  */
  css: [
    '~/assets/fonts/roboto.css'
  ]
}

Then you apply font-family: 'Roboto', sans-serif; to your text elements.


Using the font on every page

Create a ./assets/css/styles.css file with the following in it:

body
{
  font-family: 'Roboto', sans-serif;
}

Then as above include the CSS file in the nuxt.config.js:

module.exports = {
  css: [
    '~/assets/fonts/roboto.css',
    '~/assets/css/styles.css'
  ]
}

Same applies for any asset like other fonts, icons, framework css etc.

like image 114
Lawrence Cherone Avatar answered Oct 21 '22 13:10

Lawrence Cherone


QUICK

In your nuxt.config.js fi

head: {
  ...
  ...
  link: [
    {
      rel: 'icon',
      type: 'image/x-icon',
      href: '/favicon.ico'
    },
    {
      rel: 'stylesheet',
      href: 'https://fonts.googleapis.com/css?family=Lato:400,700'
    }
  ]
}

And in your layouts/default.vue or any other layout file that you are using add the style tag

<style scoped>
#app {
  font-family: 'Lato', sans-serif;
}
</style>
like image 22
Anees Hameed Avatar answered Oct 21 '22 13:10

Anees Hameed


It is simple like this

  1. Go to Google fonts and select your font style e.g Montserrat

  2. Got to nuxt.config.js and add your font url as shown here

export default {  
 head: {
        meta: [],
          link: [
       { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css?family=Montserrat&display=swap"'}
     ]
   }
  1. Go to your nuxt project -> layouts directory -> default.vue file and add class named app ( or whatever name you want) in v-app tag as shown here
 <v-app dark class="app"> 

      --your app goes here -- 

  </v-app>
  1. In the same file style option add the following lines in the class body you defined above

     <style>
     .app{
       font-family: 'Montserrat', sans-serif;
     }
     </style>
    

    Make sure class is defined in v-app tag and use <style> and not <style scoped> to take effect of whole project

like image 5
eli Avatar answered Oct 21 '22 14:10

eli