Start with the text visitors actually see
The heading uses the correct font in the editor, but a visitor sees different lettering. The problem may affect the entire page, only bold text, a few accented letters, or the first seconds of loading. The aim is to display the intended family and variants, with readable text while they arrive.
A family is a set such as a text font and its versions: regular, italic, light, or bold. The browser can replace an unavailable family with another. Visual similarity therefore does not prove that the expected file was received. Conversely, smoothing differences between devices do not prove that another family is being used.
Choose a precise passage long enough to include accents, then record its page, weight, and the affected browser. Compare the same public address at the same width, with and without a WordPress login. Wait for loading to finish before drawing a conclusion. An editor screenshot of another page is not a control.
Then work on a copy when you need to change a shared setting or replace files. Keep the previous family and a screenshot of the initial values. You can then undo the correction without rebuilding the site’s entire presentation.
Choose the approach based on the diagnostic result
The first approach applies when the correct family is not selected, a variant has been disabled, or a file is missing from the library. It requires an account authorized to manage fonts and, for global styles, site appearance. An author who can edit a post does not necessarily have these permissions.
The second approach concerns a correctly selected family whose file does not reach the visitor. It starts in the browser, without a terminal. An address is corrected in the setting or CSS that produces it; a genuinely lost file can be recovered using the host’s file manager. Server-rule changes require the corresponding access.
The third approach is a targeted option for existing Google fonts loaded remotely through a compatible mechanism. It allows their continued use while serving the files from the site. It is unnecessary if the native library already hosts the files, and does not repair the wrong family selected in a block.
Before any installation, distinguish self-hosted WordPress from WordPress.com. On the latter, custom-font availability depends on the plan. In multisite, network administration may restrict plugins or features. A missing button does not justify copying a tutorial intended for another version: first record your version and menus.
Identify the requested family and the rendered family
In Chrome, open the public page, right-click the affected text, and choose Inspect. In Elements, the Computed tab lets you examine applied values. Rendered Fonts lists the fonts actually used for characters in the selected element. The font-family property describes only a list of desired families.
Also record font-weight and font-style. A correct normal paragraph with an incorrect bold heading points toward a variant or a different rule. Several rendered fonts in the same passage may correspond to characters missing from the first. Select the relevant text directly rather than a large container mixing menus and paragraphs.
In Styles, find the responsible rule and its source file. A crossed-out rule does not win precedence. A family selected in the block can explain why the global style has no effect. Temporary changes in browser tools disappear on reload: use them to check a hypothesis, then apply the correction at its source.
- Record the requested family, rendered family, weight, and page address.
- Compare this record on a working page and a failing page.
- If the requested family is already incorrect, correct its assignment before looking for a missing file.
- If it is correct but substituted, continue to the library and then network requests.
Reactivate or import only the necessary files
- From WordPress 7.0 onward, open Appearance → Fonts, including with a classic theme. On some earlier versions with the Site Editor, management goes through Styles → Typography → Manage fonts. These two routes reflect different versions; installing an experimental plugin to recover an old screen is not a repair step.
- In the library, open the expected family. Check the enabled variants; select the one actually used, then click Update. On WordPress.com, a disabled variant can thus be reactivated without deleting the entire family. Keep the initial state so you can undo the test by restoring the previous checkboxes.
- If the file is missing, the upload tab accepts formats including WOFF2, WOFF, TTF, and OTF. Import a file for which you hold web-use rights. For a Google family, the installation tab lets you select the family and variants; WordPress downloads and hosts those files on the site.
- A successful import confirms their presence in the library, not their use by every block. Check the installed variant, then continue with assignment. Do not delete an existing family to reinstall it blindly: other pages may still use it.
Assign the font at the correct style level
- With a block theme, open Appearance → Editor → Styles → Typography. Choose the affected element, such as Text or Headings, then the family in the Font setting. Keep the previous values, save, and examine the public site. If only headings should change, do not also replace the body text font.
- For an exception within a post, open it and select the exact block. In its Settings sidebar, look for Typography. This panel’s three-dot menu reveals available controls, including Font when offered by the block and theme. A local value can override a global choice. Restore the previous value if the test affects the wrong element.
- A classic theme may offer its own typography under Appearance → Customize. Its panel has no universal name. The presence of Appearance → Fonts does not automatically create a global selector in every classic theme. Use the theme’s documented controls or the existing CSS identified during diagnosis, without changing themes solely for this setting.
- The expected result is the correct requested family on the selected element and a matching rendered family. If the request still differs, look for a more specific block, block style, or custom rule. If the request is correct but rendering does not follow, examine the loaded file.
Record the failing request in the browser
Open developer tools before reloading the page. In Network, choose the Font filter to see requested font files. Click a row and record its complete address, status, and origin. A family may load several files depending on the weight or characters required.
A 404 response means the requested address does not find the expected resource. A 403 response indicates refusal without identifying its cause on its own. A 200 status does not prove that the received content is a font: a login redirect or error page may end up returning HTML. View headers and console errors.
If no font appears, temporarily remove the filter to check the stylesheet that should declare it. The browser may use a system family or local version, or not request a variant unnecessary for the text present. The absence of a row therefore does not automatically mean that the server refuses a file.
You can select Disable cache during diagnosis; this option concerns the browser cache while tools are open. It purges neither the WordPress cache nor a CDN. Uncheck it afterward and record useful information without sharing a complete network export that could contain session data.
Restore a missing local address or file
This approach applies after a migration or when a precise request returns an error. You must be able to edit the original setting, or access site files if the file is truly missing. Keep the initial CSS, address, and file before replacing anything. For a font imported through the library, start with its interface; do not arbitrarily rename its generated files.
If a custom CSS rule contains an old address, locate it under Appearance → Customize → Additional CSS for a classic theme, or in the Styles three-dot menu → Additional CSS for a block theme. Change only the relevant declaration’s address after checking the new file. A stylesheet generated by a tool is corrected in that tool rather than in its generated copy.
If the file was managed manually and has disappeared, use the hosting file manager on a copy. Open the exact folder corresponding to the recorded URL, then restore the authorized original file from a backup. Respect its filename and capitalization. Do not upload another font under the expected name merely to eliminate a 404.
The example below illustrates only an already identified manual @font-face declaration, for a regular file with weight 400. It is not a block to add to fonts managed by the library or a builder. Replace the fictional address with that of the verified HTTPS file and retain the family name already used in your CSS. For a simple old URL, change only src in the existing declaration; preserve its other parameters rather than copying those in the example.
font-family names the family later requested by site rules; src identifies the file. font-style and font-weight must match the actual file: this example describes neither an italic nor a variable font. font-display: swap permits replacement of the fallback during loading and can cause a visual change; keep your existing strategy if it is intentional. No general body rule is needed to repair an address.
- Record the failing URL and the source producing it.
- Correct the address or restore only the file confirmed missing.
- Reload the page and check the response, then the rendered family.
- If the result worsens, restore the preserved setting or file; avoid a global site restoration for this test.
@font-face {
font-family: "PoliceDuSite";
src: url("https://exemple.invalid/wp-content/uploads/polices/police-regular.woff2") format("woff2");
font-style: normal;
font-weight: 400;
font-display: swap;
}Handle the confirmed block without opening every protection
An HTTPS page requesting a font over HTTP may have that load blocked. Correct the address at its source only after verifying that the same file actually exists over HTTPS. Allowing insecure content in your browser would not repair the site for visitors.
Another domain, subdomain, or port is a different origin. A CORS error indicates that the browser does not receive appropriate permission for that remote resource. Opening its URL directly in a tab is not a sufficient test: loading from the page must succeed. Do not paste a universal server rule based solely on the word CORS.
If you possess the file and its rights, one feasible route without a terminal is to import it into the site library and assign it as described above. Then check that the request goes to this new source and that the old rule no longer wins. Return to the previous family if this replacement is unsuitable.
If a CDN intentionally serves fonts, send its URL, the page origin, and the exact message to the person managing its configuration. A CSP policy may also refuse a domain; the error then names the relevant directive. The correction must address that authorized source. Do not disable the entire policy, firewall, or file protection to bypass the symptom.
Targeted option: host Google fonts already in use
- Local Google Fonts, by EverPress, supports certain Google fonts already requested by the site through a stylesheet registered with wp_enqueue_style. It does not replace CSS imports using @import and does not choose your typography. The directory listing consulted for version 0.25.0 specifies minimum WordPress 4.6 and PHP 7.4, with testing declared up to WordPress 7.1.4. These details do not replace testing on your copy.
- Install it through Plugins → Add New Plugin, searching for the exact name and author. This choice remains optional: use the native library first if it meets the need. The server must be able to retrieve remote files. A blocked installation is not resolved by blindly disabling its network protections.
- Keep the initial settings. After activation, visit the pages using the families so they can be discovered, then open Settings → Google Fonts. For the desired set, the Host locally button starts local hosting; a translation may change its label. Check variants and character subsets. The list distinguishes local files from remote sources.
- Then check the files’ domain and actual use in Network. Partial loading is not complete success. If the test fails, deactivate only this newly added plugin, then refresh the affected caches and verify the return to initial behavior. It does not restore a lost proprietary font and does not by itself guarantee any legal compliance.
Check bold, italic, and the characters used by your languages
A family may load correctly without covering every use on the site. A regular file does not necessarily provide a true italic or heavy weight. A browser may synthesize a substitute appearance; that does not prove that the intended variant is installed. Revisit the weight and style recorded on the element, then compare them with active variants.
For a variable font, one file may cover several weights according to its declared range. Do not arbitrarily assign every possible value to it. The font declaration and file must describe the actual capabilities of the same product. If a theme or builder manages this data, use its import setting instead of a second competing declaration.
Prepare a short passage containing the characters actually published: accents, ligatures, currency symbols, and the relevant language’s alphabet. A French page and a page in another alphabet may require different subsets. Check the rendered family on the problematic characters, not just an ordinary Latin letter.
Install or enable only the necessary files, then repeat this check. Rollback consists of restoring the previous variants and font choice. Do not systematically download every weight and language: that increases the files to maintain without resolving an incorrect assignment.
Separate caching, consent, and replacement timing
After a correction, old CSS or an old cached page may continue requesting the wrong URL. First purge the affected page or files with the tool already used by the site, then retest while logged out. If a CDN is involved, its cache is a separate layer. A purge cannot be undone: keep the settings so you can restore them, then let the cache rebuild.
If the font appears after a decision in the consent banner, compare requests before and after that decision. This indicates a relationship with loading rules without demonstrating that every external resource must be allowed. Test both intended states, then correct the classification or favor an authorized local source. Text must remain usable in each state.
A brief font change during loading may be normal. The font-display property influences the period during which the browser waits and replaces a fallback font. An optional strategy may retain that fallback for a given load; swap may cause a visible replacement. Changing this behavior does not recreate a missing file.
If the expected family always eventually appears, handle visual stability and speed separately. If it never arrives, return to the request and the family actually rendered. Do not add random file preloads to mask a source error.
Validate the correction and keep useful evidence
The final check must go beyond the administrator preview. Choose the initial page, another page using the same template, and a page using a different weight. Compare a new visit and a repeat visit, then a real phone if the issue was observed there. Keep the width and text identical to assess differences.
A satisfactory result combines readable text, the correct family rendered on the targeted characters, and requests consistent with the chosen source. The absence of a red error is insufficient: the browser may correctly display a fallback font while your editorial choice is not applied. Also check heading line breaks and buttons after the change.
Record the family, variants, their source, and the setting assigning them. For technical escalation, provide the public page, file URL, status, exact message, and steps already attempted. Exclude cookies, private data, and complete session exports.
Prevention means keeping authorized files and their licenses, documenting typography choices, and checking these same pages after a migration or theme change. You will have a concrete control for spotting a regression without confusing a deliberate new presentation with a loading failure.
Prepare sample text that exposes a missing variant
To compare fonts, use a short passage on a copy such as “Éléphant, cœur, façade — 19 €”. Display it successively in regular, bold, and italic using the styles already intended by the site. Add characters from your other languages if published. Do not change the family and every variant simultaneously: you would no longer know what repaired the rendering.
In the inspector, select each passage and record the family actually rendered. If Latin letters use the intended font but “œ” or “€” comes from another family, the file or subset deserves checking. If only bold changes family, examine the variant and its weight declaration. A 200 resource is not enough: the browser may have received a correct file that does not match this usage.
Then compare the same passage with browser caching bypassed and with its usual behavior. Text must remain readable in both cases. On a phone, also check line breaks and button widths: a font that finally loads can expose an overly tight layout.
The native library is the first free alternative for importing an authorized variant. Reactivate only the necessary file, then check the passage. If the new variant is unsuitable, restore its previous activation state and remove the test content. Keep screenshots only if they come from this check actually being performed.
Sources and references
Use these references to check the features, requirements and limitations described. Reading documentation is not a practical test.
View 18 references
- WordPress Font Library ↗
- WordPress global styles ↗
- Block typography settings ↗
- Choose fonts on WordPress.com ↗
- Reactivate installed variants ↗
- Font actually rendered in Chrome ↗
- Inspect computed styles ↗
- Inspect network resources ↗
- Browser cache and network ↗
- Declaring font files ↗
- Font replacement timing ↗
- Cross-origin permissions ↗
- Mixed HTTP and HTTPS content ↗
- Resources blocked by a CSP policy ↗
- Local Google Fonts by EverPress ↗
- Official Local Google Fonts 0.25.0 code ↗
- Chrome DevTools: rendered fonts and local resources ↗
- Official documentation: developer.mozilla.org ↗


