{"id":344562,"date":"2026-07-31T10:43:48","date_gmt":"2026-07-31T10:43:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/fontik-self-hosted-fonts-google-fonts\/"},"modified":"2026-07-31T10:43:23","modified_gmt":"2026-07-31T10:43:23","slug":"nexvibe-self-hosted-font-manager","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/nexvibe-self-hosted-font-manager\/","author":23535795,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0.2","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"NexVibe Self-Hosted Font Manager","header_author":"NexVibe","header_description":"Upload custom fonts and self-host web fonts \u2014 with curated packs for Latin, Bangla, Arabic, Devanagari, Cyrillic and CJK scripts \u2014 while loading only the fonts each page actually uses. Includes an optional, one-click tool to import and self-host fonts from Google Fonts (a trademark of Google LLC; this plugin is not affiliated with or endorsed by Google). No API key, no external server for your own uploads. Includes language-based font switching and Gutenberg integration.","assets_banners_color":"9b7dd0","last_updated":"2026-07-31 10:43:23","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/nexvibepro.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":21,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"nexvibe","date":"2026-07-31 10:43:23"}},"upgrade_notice":{"1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3629848,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3629848,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3629848,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3629848,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"All Fonts screen \u2014 upload and manage local fonts with live preview.","2":"Google Fonts screen \u2014 curated packs by script\/language, one-click self-hosted import.","3":"Assign Fonts screen \u2014 map CSS selectors to fonts, with optional language scoping.","4":"Per-page \"Fonts used on this page\" meta box in the post editor."}},"plugin_section":[],"plugin_tags":[8630,99,274027,5126,17454],"plugin_category":[43,48],"plugin_contributors":[272659],"plugin_business_model":[],"class_list":["post-344562","plugin","type-plugin","status-publish","hentry","plugin_tags-custom-fonts","plugin_tags-multilingual","plugin_tags-self-hosted-fonts","plugin_tags-typography","plugin_tags-web-fonts","plugin_category-customization","plugin_category-language-tools","plugin_contributors-nexvibe","plugin_committers-nexvibe"],"banners":{"banner":"https:\/\/ps.w.org\/nexvibe-self-hosted-font-manager\/assets\/banner-772x250.png?rev=3629848","banner_2x":"https:\/\/ps.w.org\/nexvibe-self-hosted-font-manager\/assets\/banner-1544x500.png?rev=3629848","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/nexvibe-self-hosted-font-manager\/assets\/icon-128x128.png?rev=3629848","icon_2x":"https:\/\/ps.w.org\/nexvibe-self-hosted-font-manager\/assets\/icon-256x256.png?rev=3629848","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>This plugin is a self-hosted font manager for WordPress. No account and no per-font fees for your own font files \u2014 everything happens on your own site.<\/p>\n\n<p><strong>Key features<\/strong><\/p>\n\n<ul>\n<li>Upload custom font files (TTF, OTF, WOFF, WOFF2) directly, handled by WordPress's own uploader.<\/li>\n<li>Curated font packs for <strong>Latin, Bangla\/Bengali, Arabic, Devanagari (Hindi\/Marathi\/Nepali), Cyrillic (Russian\/Ukrainian\/etc.), and CJK (Chinese\/Japanese\/Korean)<\/strong> scripts \u2014 useful for multilingual and non-Latin-script sites, not just English ones.<\/li>\n<li><strong>Smart per-page loading<\/strong>: only the fonts a specific page actually needs are enqueued there, instead of loading your entire font library on every page.<\/li>\n<li>Automatic font detection via the <code>fontik-font-{slug}<\/code> CSS class or the <code>[fontik font=\"slug\"]<\/code> shortcode \u2014 no manual page-by-page setup required.<\/li>\n<li>Language-based font switching: tag a font with a language code (e.g. <code>bn<\/code>, <code>ar<\/code>, <code>hi<\/code>, <code>ru<\/code>, <code>ja<\/code>) and it is automatically applied to any element with a matching <code>lang<\/code> attribute \u2014 handy for multilingual sites that mix scripts.<\/li>\n<li>CSS selector assignment (e.g. <code>body<\/code>, <code>h1<\/code>, <code>.site-title<\/code>) for site-wide typography.<\/li>\n<li>Gutenberg \/ block editor integration \u2014 your fonts appear in the block Typography font-family picker via theme.json.<\/li>\n<li>CSS custom properties (<code>var(--fontik-your-font-slug)<\/code>) for use in custom CSS or page builders.<\/li>\n<li>Fully translation-ready (all strings run through WordPress i18n functions).<\/li>\n<li>Optional: a one-click tool to import and self-host fonts from Google Fonts, a font library operated by Google LLC. This plugin is not affiliated with, endorsed by, or sponsored by Google. See \"External services\" below for details.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin includes an <strong>optional<\/strong> tool, under the plugin's Google Fonts screen, that lets you import a font from Google Fonts and self-host it on your own server.<\/p>\n\n<p>This feature only runs when you explicitly click \"Import\" on a specific font in the Google Fonts admin screen. It is never triggered automatically, and nothing is requested from Google when this feature is not used.<\/p>\n\n<ul>\n<li><strong>What is sent, and when:<\/strong> when you click \"Import\", your server (not your site visitors' browsers) sends a request containing the chosen font family name to Google Fonts' public CSS endpoint (<code>fonts.googleapis.com<\/code>) to retrieve the font's stylesheet, then downloads the referenced font files from Google's font file server (<code>fonts.gstatic.com<\/code>) to your own site's uploads folder via WordPress's <code>download_url()<\/code>. No visitor data, site content, or personal information is sent \u2014 only the font family name and standard HTTP request metadata (e.g. your server's IP address, as with any HTTP request).<\/li>\n<li><strong>After import:<\/strong> the downloaded font files are served entirely from your own server from then on. No further requests are made to Google for that font, and your site visitors' browsers never contact Google as a result of using this feature.<\/li>\n<li><strong>Service provider:<\/strong> Google LLC. Google Fonts Terms of Service: https:\/\/developers.google.com\/fonts\/faq \u2014 Google Privacy Policy: https:\/\/policies.google.com\/privacy \u2014 Google Terms of Service: https:\/\/policies.google.com\/terms<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/nexvibe-self-hosted-font-manager<\/code>, or install via <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Go to <strong>All Fonts<\/strong> to upload a font, or <strong>Google Fonts<\/strong> to self-host one from a curated pack (or any Google Font by name).<\/li>\n<li>Optionally assign fonts site-wide on <strong>Assign Fonts<\/strong>, or per-page via the \"Fonts Used on This Page\" box in the post editor.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20account%20or%20api%20key%3F\"><h3>Do I need an account or API key?<\/h3><\/dt>\n<dd><p>No. Custom font uploads are handled entirely by WordPress's own uploader. The optional Google Fonts import feature uses Google Fonts' public CSS endpoint (the same one browsers use) and requires no account or key \u2014 see \"External services\" above for what it sends.<\/p><\/dd>\n<dt id=\"does%20this%20only%20work%20for%20english%2Flatin%20sites%3F\"><h3>Does this only work for English\/Latin sites?<\/h3><\/dt>\n<dd><p>No. This plugin ships curated font packs for Bangla, Arabic, Devanagari, Cyrillic and CJK scripts in addition to Latin, and lets you assign a language tag to any font so it switches automatically based on the <code>lang<\/code> attribute of the content.<\/p><\/dd>\n<dt id=\"does%20this%20slow%20down%20my%20site%3F\"><h3>Does this slow down my site?<\/h3><\/dt>\n<dd><p>This plugin's smart per-page loading is designed to do the opposite: instead of loading every font on every page, it only outputs @font-face rules for fonts actually assigned to, or detected on, the current page.<\/p><\/dd>\n<dt id=\"how%20do%20i%20use%20a%20font%20for%20a%20specific%20language%20only%3F\"><h3>How do I use a font for a specific language only?<\/h3><\/dt>\n<dd><p>Import or upload the font, set its \"Language tag\" (e.g. <code>bn<\/code> for Bangla, <code>ar<\/code> for Arabic), and any element with a matching <code>lang<\/code> attribute will use it automatically.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Upload and self-host custom fonts for any language, while loading only the fonts each page actually needs.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/344562","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=344562"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/nexvibe"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=344562"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=344562"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=344562"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=344562"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=344562"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=344562"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}