ChatGPT解决这个技术问题 Extra ChatGPT

How to import Google Web Font in CSS file?

I'm working with a CMS which I only have access to the CSS file. So, I can't include anything in the <head> of the document. I was wondering if there was a way to import the web font from within the CSS file?


M
MultiplyByZer0

Use the @import method:

@import url('https://fonts.googleapis.com/css?family=Open+Sans&display=swap');

Obviously, "Open Sans" (Open+Sans) is the font that is imported. So replace it with yours. If the font's name has multiple words, URL-encode it by adding a + sign between each word, as I did.

Make sure to place the @import at the very top of your CSS, before any rules.

Google Fonts can automatically generate the @import directive for you. Once you have chosen a font, click the (+) icon next to it. In bottom-left corner, a container titled "1 Family Selected" will appear. Click it, and it will expand. Use the "Customize" tab to select options, and then switch back to "Embed" and click "@import" under "Embed Font". Copy the CSS between the <style> tags into your stylesheet.

https://i.stack.imgur.com/2rmPS.png


You shoud avoid the use of @import because it will defer the loading of the included resource until the file is fetched. See the detailed answer here: stackoverflow.com/a/12380004/925560
Moving the @import line to the top resolved my life! Thank you!
Why does google say this? Google Insides claims to not do @import. developers.google.com/speed/pagespeed/insights?
This is an outdated answer. @import loads sequentially and is best avoided: varvy.com/pagespeed/avoid-css-import.html The preferred (and default) way to load Google fonts these days is using <link>.
You will regret this when you come to SEO and start to optimize your page speed with Google PageSpeed insights. Use <link> and optimize it's delivery instead.
d
djvg
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Open+Sans:300,400,600,700&amp;lang=en" />

Better to not use @import. Just use the link element, as shown above, in your layout's head.


Can you expand on why "Better to don't use"? I searched for this question because I would like to know which method is considered best.
I had internet explorer problem with @import. Sometimes it just don't read it.
He specifically said he can't use the tag in his header.
+1 for using 'link', as it will not block parallel loading of other external files. 'import' will block parallel loading of other external files.
By using @import you are able to make the font part of the CSS styling instead of the HTML markup, which semantically feels more correct, and you can swap out the fonts on your site through CSS. But as Chuck commented, it seems you take a slight speed hit for it. Maybe clock the load times, then decide, case by case. Note that for SVGs @import is the only way that works AFAIK.
F
Fidel

Download the font ttf/other format files, then simply add this CSS code example:

@font-face { font-family: roboto-regular; src: url('../font/Roboto-Regular.ttf'); } h2{ font-family: roboto-regular; }


I like this answer because unlike all import & link answers, this does not let Google track your users ip address. Which in Europe would be a violation of GDPR
B
Bhargav Rao

Add the Below code in your CSS File to import Google Web Fonts.

@import url(https://fonts.googleapis.com/css?family=Open+Sans);

Replace the Open+Sans parameter value with your Font name.

Your CSS file should look like:

@import url(https://fonts.googleapis.com/css?family=Open+Sans);

body{
   font-family: 'Open Sans',serif;
}

M
MarcoZen

Along with the above answers, do also consider this site; https://google-webfonts-helper.herokuapp.com/fonts

Main Advantage:

allows you to self-host those google fonts for better response times

Other Advantages :

choose your font(s)

choose your character set

choose your font styles/weight

choose your target browsers ( modern preferred )

and u get the CSS snippets ( to add to your css stylesheet ) plus a zip of the font files to include in your project folder ( say css_fonts )

In file 'your_css_theme.css' add

/* open-sans-regular - latin - modern browsers  */
@font-face {
   font-family: 'Open Sans';
   font-style: normal;
   font-weight: 400;
   src: local(''),
        url('css_fonts/open-sans-v18-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
        url('css_fonts/open-sans-v18-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
 }

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

This also allows you to load font-weight: 400 first and then load the rest of the font by using the same code with no arguments. This allows for quicker display and, if you don't end up needing the whole font, smaller CSS files.
i would not recommend using the local parts, because ppl rarely have the desired font installed, and even then most often have a different version of it came from somewhere else. It is also harder to develop and debug, especially if you installed the font and may miss that for some reason the font do not load for the users, because of some server failure or other bug.
k
karunesh

Just go to https://fonts.google.com/ Add font by clicking + Go to selected font > Embed > @IMPORT > copy url and paste in your .css file above body tag. It's done.


S
StarsSky

Use the tag @import

@import url('http://fonts.googleapis.com/css?family=Kavoon');

E
Eric Keyte

You can also use @font-face to link to the URLs. http://www.css3.info/preview/web-fonts-with-font-face/

Does the CMS support iframes? You might be able to throw an iframe into the top of your content, too. This would probably be slower - better to include it in your CSS.


iframes result in a totally different space for everything. I don't think this would work.
r
rohanvtk
<link href="https://fonts.googleapis.com/css?family=(any font of your 
choice)" rel="stylesheet" type="text/css">

To choose the font you can visit the link : https://fonts.google.com

Write the font name of your choice from the website excluding the brackets.

For example you chose Lobster as a font of your choice then,

<link href="https://fonts.googleapis.com/css?family=Lobster" rel="stylesheet" 
type="text/css">

Then you can use this normally as a font-family in your whole HTML/CSS file.

For example

<h2 style="Lobster">Please Like This Answer</h2>

s
subindas pm

Jus go through the link

https://developers.google.com/fonts/docs/getting_started

To import it to stylesheet use

@import url('https://fonts.googleapis.com/css?family=Open+Sans');

L
Leon

Googles side changed a bit since 2015.. I had some difficulties finding it so figured to include the new method:

Scroll down on the desired font page click the small plus icon on the side of the font name the embed link and other options will appear on the "selected family" dialogue on the right of the web page.


s
sohnryang

We can easily do that in css3. We have to simply use @import statement. The following video easily describes the way how to do that. so go ahead and watch it out.

https://www.youtube.com/watch?v=wlPr6EF6GAo


M
Mahozad

Go to https://fonts.google.com/ and select your desired font family (you can search by name): Select the desired variations (weight, italics, etc.): Click on View selected families button on the top right corner: Select @import on the right panel to get the code: