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

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

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

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

CSSismostlycase-insensitive,butURLsandfontfamilynamesarecase-sensitive.1)Propertiesandvalueslikecolor:red;arenotcase-sensitive.2)URLsmustmatchtheserver'scase,e.g.,/images/Logo.png.3)Fontfamilynameslike'OpenSans'mustbeexact.

Autoprefixer is a tool that automatically adds vendor prefixes to CSS attributes based on the target browser scope. 1. It solves the problem of manually maintaining prefixes with errors; 2. Work through the PostCSS plug-in form, parse CSS, analyze attributes that need to be prefixed, and generate code according to configuration; 3. The usage steps include installing plug-ins, setting browserslist, and enabling them in the build process; 4. Notes include not manually adding prefixes, keeping configuration updates, prefixes not all attributes, and it is recommended to use them with the preprocessor.

CSScounterscanautomaticallynumbersectionsandlists.1)Usecounter-resettoinitialize,counter-incrementtoincrease,andcounter()orcounters()todisplayvalues.2)CombinewithJavaScriptfordynamiccontenttoensureaccurateupdates.

In CSS, selector and attribute names are case-sensitive, while values, named colors, URLs, and custom attributes are case-sensitive. 1. The selector and attribute names are case-insensitive, such as background-color and background-Color are the same. 2. The hexadecimal color in the value is case-sensitive, but the named color is case-sensitive, such as red and Red is invalid. 3. URLs are case sensitive and may cause file loading problems. 4. Custom properties (variables) are case sensitive, and you need to pay attention to the consistency of case when using them.
