Use @font-face to load custom fonts with attention to syntax, format compatibility and performance optimization. 1. Correct writing methods include specifying font name, multi-format path (such as woff2, woff), setting font-weight and font-style, and using relative paths or CDN; 2. Prioritize the woff2 format, followed by woff, and the font format can be converted through tools; 3. In terms of performance, the character set and variant number should be limited, and font-display: swap should be used to avoid blank text; 4. Self-hosting can improve control and privacy protection, but it requires self-processing of file configuration and server MIME type support.
Loading custom web fonts with @font-face
is a common practice for many websites to implement personalized font styles. The key is correct writing, compatible format, and reasonable loading performance.

1. Basic syntax and structure
The core function of @font-face
is to tell the browser where to load the font file and specify a name for subsequent CSS use. The basic writing method is as follows:

@font-face { font-family: 'MyCustomFont'; src: url('myfont.woff2') format('woff2'), url('myfont.woff') format('woff'); font-weight: normal; font-style: normal; }
When using it, you only need to call this name in the style:
body { font-family: 'MyCustomFont', sans-serif; }
A few points to note:

- Try to provide a variety of formats (such as woff2, woff) to ensure compatibility.
- Don't miss
font-weight
andfont-style
, otherwise some systems may not recognize variants. - The font path should be accurate, and it is recommended to use relative paths or CDN paths.
2. Font format selection and conversion
Currently, the mainstream recommendation is to use .woff2
first, which has high compression rate and fast loading, followed by .woff
. Older browsers may require .ttf
or .eot
, but these can be ignored now.
If you only have .ttf
or .otf
files, you can convert them to a web-friendly format through the tool:
After generation, you will usually get multiple format font files and corresponding CSS fragments, and copy them directly into your style sheet.
3. Performance and load optimization
Loading custom fonts will affect the page rendering speed, especially when large font files or slow networks.
Some optimization suggestions:
- Load only the required character set : For example, if you only need English numbers, don't include glyphs in all languages.
- Limit the number of font variants : Each
@font-face
is a request, trying to merge or reduce unnecessary bold and italic declarations. - Use
font-display
to control display behavior : You can add this property in@font-face
to control the display strategy during font loading, for example:
@font-face { font-family: 'MyCustomFont'; src: url('myfont.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; /* Recommended value*/ }
swap
means to display it with system fonts first, and then replace it after the custom font is loaded to avoid the problem of blank text.
4. Self-hosting vs. using services (such as Google Fonts)
Many people use Google Fonts services to introduce fonts at the beginning, which is simple and convenient. But if you want to have complete control over font resources, or for privacy reasons, self-hosting is a good choice.
Advantages of self-hosting:
- More controllable, no dependence on third parties
- Reduce external requests and improve load consistency
- Supports more personalized font customization
Disadvantages are also obvious:
- Need to handle font files and format conversion by yourself
- The server needs to configure the MIME type (some hosts do not support font types by default)
- The initial setup is a little more complicated
Basically that's it. As long as you pay attention to the format compatibility, loading method and performance impact, it is not difficult to implement custom fonts with @font-face
, but it is easy to ignore the details.
The above is the detailed content of Implementing custom web fonts using @font-face css rule. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

There are three ways to selectively include CSS on a specific page: 1. Inline CSS, suitable for pages that are not frequently accessed or require unique styles; 2. Load external CSS files using JavaScript conditions, suitable for situations where flexibility is required; 3. Containment on the server side, suitable for scenarios using server-side languages. This approach can optimize website performance and maintainability, but requires balance of modularity and performance.

Flexboxisidealforone-dimensionallayouts,whileGridsuitstwo-dimensional,complexlayouts.UseFlexboxforaligningitemsinasingleaxisandGridforprecisecontroloverrowsandcolumnsinintricatedesigns.

The HTML popover attribute transforms elements into top-layer elements that can be opened and closed with a button or JavaScript. Popovers can be dismissed a number of ways, but there is no option to auto-close them. Preethi has a technique you can u

CSS blocks page rendering because browsers view inline and external CSS as key resources by default, especially with imported stylesheets, header large amounts of inline CSS, and unoptimized media query styles. 1. Extract critical CSS and embed it into HTML; 2. Delay loading non-critical CSS through JavaScript; 3. Use media attributes to optimize loading such as print styles; 4. Compress and merge CSS to reduce requests. It is recommended to use tools to extract key CSS, combine rel="preload" asynchronous loading, and use media delayed loading reasonably to avoid excessive splitting and complex script control.

In the following tutorial, I will show you how to create Lottie animations in Figma. We'll use two colorful designs to exmplify how you can animate in Figma, and then I'll show you how to go from Figma to Lottie animations. All you need is a free Fig

We put it to the test and it turns out Sass can replace JavaScript, at least when it comes to low-level logic and puzzle behavior. With nothing but maps, mixins, functions, and a whole lot of math, we managed to bring our Tangram puzzle to life, no J

ThebestapproachforCSSdependsontheproject'sspecificneeds.Forlargerprojects,externalCSSisbetterduetomaintainabilityandreusability;forsmallerprojectsorsingle-pageapplications,internalCSSmightbemoresuitable.It'scrucialtobalanceprojectsize,performanceneed

No,CSSdoesnothavetobeinlowercase.However,usinglowercaseisrecommendedfor:1)Consistencyandreadability,2)Avoidingerrorsinrelatedtechnologies,3)Potentialperformancebenefits,and4)Improvedcollaborationwithinteams.
