Title: EasyFonts – Host Google Fonts Locally, Fast &amp; Auto-Optimize, GDPR Compliant
Author: FluxPress
Published: <strong>2023 年 1 月 25 日</strong>
Last modified: 2026 年 6 月 7 日

---

搜索插件

![](https://ps.w.org/easyfonts/assets/banner-772x250.png?rev=3563789)

![](https://ps.w.org/easyfonts/assets/icon-256x256.png?rev=3563789)

# EasyFonts – Host Google Fonts Locally, Fast & Auto-Optimize, GDPR Compliant

 作者：[FluxPress](https://profiles.wordpress.org/easywpstuff/)

[下载](https://downloads.wordpress.org/plugin/easyfonts.2.0.2.zip)

 * [详情](https://cn.wordpress.org/plugins/easyfonts/#description)
 * [评价](https://cn.wordpress.org/plugins/easyfonts/#reviews)
 *  [安装](https://cn.wordpress.org/plugins/easyfonts/#installation)
 * [开发进展](https://cn.wordpress.org/plugins/easyfonts/#developers)

 [支持](https://wordpress.org/support/plugin/easyfonts/)

## 描述

**EasyFonts** is the smart way to **host Google Fonts locally** in WordPress. Activate
it and your Google Fonts are detected, downloaded, and served from your own domain—
no requests to Google, faster loading, and full **GDPR compliance**.

Unlike basic font plugins, EasyFonts doesn’t just self-host blindly. It **measures
which fonts actually render in real visitors’ browsers**, so it can preload your
above-the-fold fonts, flag the ones you never use, and generate **zero-CLS metric-
matched fallbacks** — the things that actually move your Core Web Vitals (LCP, CLS)
scores.

#### Why host Google Fonts locally?

 1. **GDPR / DSGVO:** German courts have ruled that sending visitor IPs to Google Fonts
    without consent violates GDPR. Self-hosting removes the connection entirely — no
    data leaves your server.
 2. **Speed & Core Web Vitals:** Every call to `fonts.googleapis.com` and `fonts.gstatic.
    com` adds DNS lookups, connections, and render-blocking delay that hurt LCP and
    TTFB. Local hosting kills that latency.

#### What EasyFonts does

 * **Automatic local hosting** — Detects Google Fonts loaded via `<link>` stylesheets,`
   @import` rules, inline `@font-face`, **theme/plugin CSS files**, **external/CDN
   stylesheets**, and the **Web Font Loader (webfont.js)** — then downloads and 
   serves them locally.
 * **Combine into one stylesheet** — Merges all hosted font CSS into a single file,
   removes duplicate `@font-face` rules, and can **inline it as minified CSS** so
   it’s not render-blocking.
 * **Used vs Unused font discovery** — Automatically identifies fonts that never
   render on real pages so you can disable unnecessary downloads and preloads.
 * **Real usage measurement** — A lightweight beacon measures which font families
   and weights actually render, and which appear above the fold — directly on your
   live pages, no loopback crawler.
 * **Smart preloading** — Auto-preloads the above-the-fold fonts that matter (capped,
   so you never over-preload), boosting LCP.
 * **font-display control** — Force `font-display: swap` (or block, fallback, optional,
   auto) on every face to fix “Ensure text remains visible during webfont load.”
 * **Per-family & per-weight control** — Toggle Load and Preload for any family 
   or individual weight; disable fonts you don’t use.
 * **Subset trimming** — Keep only the character sets you need (Latin, Cyrillic,
   Greek, Vietnamese, Arabic, Devanagari, CJK and more) to cut font weight.
 * **Zero-CLS fallbacks** — Reads each font’s real metrics and generates size-matched
   fallback faces (`size-adjust`, `ascent-override`) to eliminate layout shift while
   fonts load.
 * **Async / JS-injected font blocking** — Optionally catches Google Fonts injected
   by JavaScript at runtime and self-hosts them too (handles fonts most plugins 
   miss).
 * **Clean resource hints** — Strips now-useless `preconnect`, `dns-prefetch`, and`
   preload` tags pointing at Google’s servers.
 * **Variable font support** — Detects and hosts modern variable fonts as a single
   optimized file instead of many static weights.
 * **CDN support** — Serve hosted fonts and the stylesheet from your CDN.
 * **Bunny Fonts support** — Also self-hosts fonts from `fonts.bunny.net`.
 * **Import / Export settings** — Move your configuration between sites in one click.
 * **Multisite ready** — Works per-site across a network, with tables created automatically
   for new sites.
 * **WP-CLI** — Scan and manage fonts from the command line.
 * **Page builder & theme compatible** — Elementor, Divi, Bricks, Beaver Builder,
   WPBakery, Oxygen, plus Astra, GeneratePress, Kadence, Blocksy, and WooCommerce.
   Editors are automatically excluded so your styling stays intact while you build.

#### Why choose EasyFonts over OMGF and other font plugins?

 * **It measures, not guesses.** EasyFonts sees what actually renders in real browsers,
   so preload and fallbacks are based on data — not a static guess.
 * **Detection most plugins charge for.** Inline CSS, theme/plugin CSS, external
   stylesheets, and Web Font Loader detection are **free** here — features that 
   are paid add-ons elsewhere.
 * **Zero-CLS fallbacks for any font** — generated from real font metrics, not limited
   to a fixed list.
 * **Async JS-injected fonts** — caught and self-hosted, a common gap in other plugins.
 * **Truly zero-config.** Activate it and it works; everything else is optional 
   fine-tuning.
 * **No data sent anywhere.** All processing is on your server.

#### How it works

 1. Install and activate EasyFonts.
 2. Open **Easy Fonts** in your admin menu.
 3. Click **Optimize now** (or just let visitors browse) — fonts are detected, self-
    hosted, and measured automatically.
 4. Review **Used vs Unused** fonts, fine-tune Load/Preload, and adjust settings if
    you like.
 5. Done — your Google Fonts now load locally, faster, and GDPR-compliant.

## 屏幕截图

[⌊Dashboard — hosted font stats, maintenance, and live detector status⌉⌊Dashboard—
hosted font stats, maintenance, and live detector status⌉[

Dashboard — hosted font stats, maintenance, and live detector status

[⌊Fonts — used vs unused families with per-weight Load and Preload control⌉⌊Fonts—
used vs unused families with per-weight Load and Preload control⌉[

Fonts — used vs unused families with per-weight Load and Preload control

[⌊Settings — subsets, font-display, CDN, inline CSS, and more⌉⌊Settings — subsets,
font-display, CDN, inline CSS, and more⌉[

Settings — subsets, font-display, CDN, inline CSS, and more

[⌊Usage — what actually renders, measured in real browsers⌉⌊Usage — what actually
renders, measured in real browsers⌉[

Usage — what actually renders, measured in real browsers

## 安装

 1. Upload the `easyfonts` folder to `/wp-content/plugins/`, or install via **Plugins
    Add New**.
 2. Activate the plugin through **Plugins  Installed Plugins**.
 3. Open **Easy Fonts** from the admin menu.
 4. Click **Optimize now** or visit your site’s front end — fonts are downloaded and
    cached automatically.
 5. (Optional) Adjust subsets, font-display, CDN, preloading, and other settings.

## 常见问题

### Does this make my site GDPR compliant for Google Fonts?

Yes. Once active, all Google Fonts are served from your own server — no requests
to fonts.googleapis.com or fonts.gstatic.com, so no visitor IPs are sent to Google.

### Will it improve my PageSpeed / Core Web Vitals score?

Yes. Removing external font connections, combining (or inlining) the stylesheet,
preloading above-the-fold fonts, and adding zero-CLS fallbacks typically improve
LCP and CLS in PageSpeed Insights, GTmetrix, and Lighthouse.

### How is EasyFonts different from just self-hosting?

EasyFonts measures which fonts actually render in real browsers, then preloads the
important ones, flags unused ones, and matches fallback metrics to prevent layout
shift — going well beyond a static download-and-serve.

### Does it work with my theme and page builder?

Yes. It processes the final HTML output, so it catches fonts from any theme, plugin,
or builder — Elementor, Divi, Bricks, Beaver Builder, WPBakery, Oxygen, Astra, GeneratePress,
Kadence, and more. Builder editors are automatically excluded so fonts display correctly
while editing.

### Does it support variable fonts?

Yes. EasyFonts detects variable fonts and hosts them as a single optimized file 
instead of many separate weight files.

### Does it support Bunny Fonts?

Yes. Fonts from fonts.bunny.net are detected and self-hosted alongside Google Fonts.

### Can I use a CDN?

Yes. Point the CDN setting at your pull-zone and the hosted fonts and stylesheet
are served through your CDN.

### Will it work with caching plugins?

Yes — WP Rocket, LiteSpeed Cache, W3 Total Cache, WP Super Cache, and others. After
optimizing, clear your page cache so visitors get the updated HTML.

### How do I clear the font cache?

Open **Easy Fonts  Dashboard** and click **Empty cache**. Fonts are re-detected 
automatically on the next visit or via **Optimize now**.

### Does it handle Google Fonts from multiple plugins at once?

Yes. It finds font stylesheets across your whole page — themes, plugins, and builders—
merges them into one file, and removes duplicates.

## 评价

![](https://secure.gravatar.com/avatar/1a26b92567fb94fceb4528dd67ed10554c9fa8102050fc123dd09683a73e3b36?
s=60&d=retro&r=g)

### 󠀁[It does exactly what it’s supposed to do.](https://wordpress.org/support/topic/it-does-exactly-what-its-supposed-to-do-2/)󠁿

 [NiMora](https://profiles.wordpress.org/niconoack/) 2026 年 2 月 27 日

It does exactly what it’s supposed to do. And it doesn’t burden the system, it has
no unnecessary frills. Thank you very much.

![](https://secure.gravatar.com/avatar/38a80883afff349ad04e1b0136755febb55049d2d7b9c1cdd09a8910a8d0e1d4?
s=60&d=retro&r=g)

### 󠀁[good replacement for the OMGF plugin](https://wordpress.org/support/topic/good-replacement-for-the-omgf-plugin/)󠁿

 [vikdzi](https://profiles.wordpress.org/vikdzi/) 2026 年 1 月 7 日

So far, everything is very good. PageSpeed Insights swore at Google fonts loaded
from the server – so far so good 👍

![](https://secure.gravatar.com/avatar/34755a2ec68e73fb1733cc756b8a505d55c885346cc1eb513eb506c7f1a847bd?
s=60&d=retro&r=g)

### 󠀁[Perfect working! For Google Fonts and Bunny Fonts](https://wordpress.org/support/topic/perfect-working-for-google-fonts-and-bunny-fonts/)󠁿

 [maltolomaeus](https://profiles.wordpress.org/maltolomaeus/) 2025 年 4 月 15 日

I’ve kept on using a outdated plugin to load google fonts for local delivery for
the European Union GDPR compliance. Easy Fonts is my absolute choice replacing this
plugin with a simple one working perfect catching ALL fonts from the theme and further
plugins without the need of uploading it manually. For my current pain using brizy
pagebuilder, which implemented bunny fonts to be more compliant, no plugin are made
for bunny fonts to be cached. My request to the support ended in 2 days of waiting
which is phenomenal to have a solution for that. Thank you guys for this superior
plugin solving my regular google fonts topic on many websites AND supporting bunny
fonts without the need of uploading fonts manually to the website. This it pure 
flexibility any ease!

![](https://secure.gravatar.com/avatar/1f57cc3f5a095e8b0a748eac0410c1b7af5dd6db0b1079d04bb38373e8f4a98e?
s=60&d=retro&r=g)

### 󠀁[Great for self-hosting Google fonts](https://wordpress.org/support/topic/great-for-self-hosting-google-fonts/)󠁿

 [TomCobbley](https://profiles.wordpress.org/tomcobbley/) 2024 年 9 月 24 日

I must have installed 8 or 9 different plugins for hosting google fonts, but none
of them worked with icon sets. This was the only plugin I found that would self-
host the Google icon sets. It’s dead simple to use and setup too. Well done and 
keep up the good work!

![](https://secure.gravatar.com/avatar/f522e91ed2b3d26e456036392946c1433543b48c881d88ccccedab7d1dec3050?
s=60&d=retro&r=g)

### 󠀁[Works great](https://wordpress.org/support/topic/works-great-9225/)󠁿

 [neelgoowob](https://profiles.wordpress.org/neelgoowob/) 2024 年 4 月 24 日

I was struggling to find a lightweight local font plugin that works with Oxygen 
builder to replace a similar plugin on some sites that broke on update, this one
works out of the box for me when ‘remove resource hints’ is enabled. Many thanks
to the author!

![](https://secure.gravatar.com/avatar/7041811dd1cc7b49f163052e22fa769c4fa4520391a1cafacf9b9d9ac7d45f6a?
s=60&d=retro&r=g)

### 󠀁[simple alternative of OMGF plugin](https://wordpress.org/support/topic/simple-alternative-of-omgf-plugin/)󠁿

 [David](https://profiles.wordpress.org/lipstickinvestigations/) 2023 年 1 月 31
日

this plugin is super lightweight and works smoothly. the plugin seamlessly downloads
and replaces Google fonts with locally hosted ones.

 [ 阅读所有6条评价 ](https://wordpress.org/support/plugin/easyfonts/reviews/)

## 贡献者及开发者

「EasyFonts – Host Google Fonts Locally, Fast & Auto-Optimize, GDPR Compliant」是
开源软件。 以下人员对此插件做出了贡献。

贡献者

 *   [ FluxPress ](https://profiles.wordpress.org/easywpstuff/)

[帮助将「EasyFonts – Host Google Fonts Locally, Fast & Auto-Optimize, GDPR Compliant」翻译成简体中文。](https://translate.wordpress.org/projects/wp-plugins/easyfonts)

### 对开发感兴趣吗?

您可以[浏览代码](https://plugins.trac.wordpress.org/browser/easyfonts/)，查看[SVN仓库](https://plugins.svn.wordpress.org/easyfonts/)，
或通过[RSS](https://plugins.trac.wordpress.org/log/easyfonts/?limit=100&mode=stop_on_copy&format=rss)
订阅[开发日志](https://plugins.trac.wordpress.org/log/easyfonts/)。

## 更新日志

#### 2.0.2

 * New: per-page font scoping. Each page now loads only the fonts it actually uses.
   Many themes (e.g. Blocksy) enqueue their whole Google-fonts set on every page;
   Easy Fonts now measures what each page really renders (in a real browser) and
   leaves the unused families off that page’s stylesheet — while still hosting them
   on the pages that do use them. Matching is done at the family level and is self-
   correcting: a font is scoped out only after the page has been measured, it returns
   automatically if the page starts using it, and a font is never dropped from a
   page that hasn’t been measured yet.
 * Fixed: a font declared on a page is no longer wrongly dropped from the combined
   CSS because of a weight/style mismatch (e.g. a single-weight family used at a
   bold weight). Usage is now matched per family.
 * Improved: the combined stylesheet is unique per page font-set and shared when
   identical. Pages that use the same fonts reuse the same cached file; a page with
   a different set gets its own. Identical sets are never regenerated, saving CPU
   and disk.
 * Improved: used/unused classification stays current. Beacon measurements now refresh
   hourly instead of being locked for a week, so a font that starts (or stops) being
   used is reflected quickly, and “Optimize” forces an immediate fresh measurement
   of the homepage.
 * Fixed: preloads are accurate and page-specific. A font is preloaded on a page
   only when it actually renders above the fold there (matched per family, so a 
   face the browser shows at a different weight than the hosted file — e.g. a single-
   weight family shown bold — still preloads correctly). A font above the fold on
   just one page is preloaded only on that page; a font above the fold on every 
   page is preloaded everywhere from a cached set, with no per-page lookup. Your
   manual “always preload” choices are respected wherever the family is used.
 * Fixed: page counts and usage are keyed by the page path, so cache-buster and 
   probe parameters (and tracking/builder query strings) can no longer inflate the
   dashboard with duplicate rows.
 * Improved: URL exclusions now match precisely — “/cart” no longer also excludes“/
   cart-guide”. Patterns match the exact path or a path-segment prefix, and support
   wildcards (e.g. “/shop/*”).
 * Improved: when the master toggle is off, Easy Fonts adds nothing at all to the
   front end (no measurement or helper scripts).
 * Improved: front-end scripts are now served minified.
 * Performance: fewer database writes per page render (font registration is batched),
   usage logging is batched into a single write and rate-limited per page, and a
   dead database index was retired.
 * Security/hardening: strict sanitisation of all values written into the generated
   @font-face CSS; stylesheet fetching is restricted to public hosts (internal/private
   addresses are blocked) with parsed-host provider matching; and local stylesheet
   reads are limited to genuine .css files with path-traversal blocked.
 * Developer: filters `easyfonts_page_scope_fonts` (set false to disable per-page
   scoping), `easyfonts_force_families` (always-load safelist), `easyfonts_preload_cap`,
   and `easyfonts_beacon_throttle_hours`.

#### 2.0.1

 * Fixed: rare white screen / blank front-end on some hosts (esp. FastCGI/cgi-fcgi).
   Font binaries are no longer downloaded during a visitor’s page render — they 
   are fetched by a non-blocking background warm request, so a slow or blocked outbound
   connection can never stall the page.
 * Fixed: the output buffer now fails open — if anything goes wrong while optimising
   a page, the original HTML is always returned instead of a blank page.
 * Improved: provider tags are only removed once their fonts are confirmed hosted
   locally, so the page never loses its fonts while the cache warms.
 * Improved: provider stylesheet CSS is cached, so font detection no longer hits
   the network on every page load.
 * Hardened: guard for WordPress’s HTML API, safer regex handling, and PHP 7.4 compatibility
   shims.
 * Note: no settings, styling, or features changed. After activation (or after changing
   fonts) the first visit serves the original fonts for a moment while the cache
   warms in the background, then switches to self-hosted automatically. You can 
   also warm immediately from Settings  Optimize.
 * Fixed: the real cause of the blank front-end — two regular expressions that scanned
   the whole page (the inline processor and the Web Font Loader remover) could exhaust
   the PCRE2 engine on large pages (e.g. page-builder inline CSS or big inline scripts)
   and either return nothing or crash the PHP worker, blanking the page with no 
   catchable error. Both are now linear text scans that cannot backtrack or overflow.
 * Hardened: every remaining regular expression that rewrites page/CSS content now
   falls back to the original content if the engine fails, so a pattern can never
   blank the page. Added a final safety net that discards the processed page if 
   it ever comes out empty.
 * Added: a size cap for individual inline blocks (filterable) to skip pathologically
   large blocks safely.

#### 2.0.0

 * New: real-browser usage measurement — see which fonts render and which are above
   the fold.
 * New: smart auto-preload of above-the-fold fonts (capped) for better LCP; your
   manual choices are always respected.
 * New: zero-CLS metric-matched fallback fonts generated from real font metrics.
 * New: detect and self-host fonts from inline CSS, theme/plugin CSS, external/CDN
   stylesheets, and the Web Font Loader (webfont.js).
 * New: optional async / JS-injected Google Fonts blocker.
 * New: full subset selection (Latin, Cyrillic, Greek, Vietnamese, Arabic, Devanagari,
   CJK, and more).
 * New: CDN support for hosted fonts and the stylesheet.
 * New: inline the combined stylesheet as minified CSS (not render-blocking).
 * New: per-family and per-weight Load / Preload control, with used vs unused grouping.
 * New: settings Import / Export.
 * New: Multisite support and WP-CLI commands.
 * New: redesigned, faster admin interface.
 * Improved: variable font detection and single-file hosting.
 * Improved: font-display control across all @font-face declarations.
 * Improved: resource-hint cleanup and duplicate @font-face removal.

## 额外信息

 *  版本 **2.0.2**
 *  最后更新：**5 天前**
 *  活跃安装数量 **1,000+**
 *  WordPress 版本 ** 6.4 或更高版本 **
 *  已测试的最高版本为 **7.0**
 *  PHP 版本 ** 7.4 或更高版本 **
 *  语言
 * [English (US)](https://wordpress.org/plugins/easyfonts/)
 * 标签
 * [core web vitals](https://cn.wordpress.org/plugins/tags/core-web-vitals/)[font optimization](https://cn.wordpress.org/plugins/tags/font-optimization/)
   [GDPR](https://cn.wordpress.org/plugins/tags/gdpr/)[google fonts](https://cn.wordpress.org/plugins/tags/google-fonts/)
 *  [高级视图](https://cn.wordpress.org/plugins/easyfonts/advanced/)

## 评级

 5 星（最高 5 星）。

 *  [  6 条 5 星评价     ](https://wordpress.org/support/plugin/easyfonts/reviews/?filter=5)
 *  [  0 条 4 星评价     ](https://wordpress.org/support/plugin/easyfonts/reviews/?filter=4)
 *  [  0 条 3 星评价     ](https://wordpress.org/support/plugin/easyfonts/reviews/?filter=3)
 *  [  0 条 2 星评价     ](https://wordpress.org/support/plugin/easyfonts/reviews/?filter=2)
 *  [  0 条 1 星评价     ](https://wordpress.org/support/plugin/easyfonts/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/easyfonts/reviews/#new-post)

[查看全部评论](https://wordpress.org/support/plugin/easyfonts/reviews/)

## 贡献者

 *   [ FluxPress ](https://profiles.wordpress.org/easywpstuff/)

## 支持

有话要说吗？是否需要帮助？

 [查看支持论坛](https://wordpress.org/support/plugin/easyfonts/)