{"id":105731,"date":"2019-06-27T20:12:20","date_gmt":"2019-06-27T20:12:20","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/wp-foft-loader\/"},"modified":"2026-02-03T17:15:23","modified_gmt":"2026-02-03T17:15:23","slug":"wp-foft-loader","status":"publish","type":"plugin","link":"https:\/\/lt.wordpress.org\/plugins\/wp-foft-loader\/","author":8939044,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"2.1.40","stable_tag":"2.1.40","tested":"6.9.4","requires":"4.6.0","requires_php":"7.0","requires_plugins":null,"header_name":"WP FOFT Loader","header_author":"Chris J. Z\u00e4hller \/ Messenger Web Design","header_description":"Implements and automates Zach Leatherman's Critical FOFT with Data URI (see https:\/\/www.zachleat.com\/web\/comprehensive-webfonts\/)","assets_banners_color":"f8f9f9","last_updated":"2026-02-03 17:15:23","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/messengerwebdesign.com\/donate","header_plugin_uri":"https:\/\/messengerwebdesign.com\/plugins\/","header_author_uri":"https:\/\/github.com\/seezee","rating":0,"author_block_rating":0,"active_installs":10,"downloads":7280,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.1.40":{"tag":"2.1.40","author":"seezee","date":"2026-02-03 17:15:23"}},"upgrade_notice":{"2.1.40":"<ul>\n<li>2026-02-03<\/li>\n<li>SECURITY: Proper check for file &amp; MIME type<\/li>\n<\/ul>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":2163238,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":2163238,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":2163238,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":2163238,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.1.40"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":2183452,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":2183452,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":2183452,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":2183452,"resolution":"4","location":"assets","locale":""},"screenshot-5.png":{"filename":"screenshot-5.png","revision":2183452,"resolution":"5","location":"assets","locale":""},"screenshot-6.png":{"filename":"screenshot-6.png","revision":2183452,"resolution":"6","location":"assets","locale":""}},"screenshots":{"1":"Uploads screen: upload your custom web fonts here","2":"Optimize screen: tells fontobserver.js which fonts to load for stage 1","3":"Base64 screen: inlines Base64 data URI for subsetted stage 1 fonts","4":"CSS screen: all font-related CSS goes here so it can be inlined.","5":"Font Stacks screen: sets the default font stacks","6":"Documentation (1): Information about the CSS that the plugin loads by default","7":"Documentation (2): Video tutorials"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[1079,247,794,15378],"plugin_category":[54],"plugin_contributors":[78154,173265],"plugin_business_model":[],"class_list":["post-105731","plugin","type-plugin","status-publish","hentry","plugin_tags-font","plugin_tags-performance","plugin_tags-speed","plugin_tags-web-font","plugin_category-security-and-spam-protection","plugin_contributors-freemius","plugin_contributors-seezee","plugin_committers-seezee"],"banners":{"banner":"https:\/\/ps.w.org\/wp-foft-loader\/assets\/banner-772x250.png?rev=2163238","banner_2x":"https:\/\/ps.w.org\/wp-foft-loader\/assets\/banner-1544x500.png?rev=2163238","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/wp-foft-loader\/assets\/icon-128x128.png?rev=2163238","icon_2x":"https:\/\/ps.w.org\/wp-foft-loader\/assets\/icon-256x256.png?rev=2163238","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/wp-foft-loader\/assets\/screenshot-1.png?rev=2183452","caption":"Uploads screen: upload your custom web fonts here"},{"src":"https:\/\/ps.w.org\/wp-foft-loader\/assets\/screenshot-2.png?rev=2183452","caption":"Optimize screen: tells fontobserver.js which fonts to load for stage 1"},{"src":"https:\/\/ps.w.org\/wp-foft-loader\/assets\/screenshot-3.png?rev=2183452","caption":"Base64 screen: inlines Base64 data URI for subsetted stage 1 fonts"},{"src":"https:\/\/ps.w.org\/wp-foft-loader\/assets\/screenshot-4.png?rev=2183452","caption":"CSS screen: all font-related CSS goes here so it can be inlined."},{"src":"https:\/\/ps.w.org\/wp-foft-loader\/assets\/screenshot-5.png?rev=2183452","caption":"Font Stacks screen: sets the default font stacks"},{"src":"https:\/\/ps.w.org\/wp-foft-loader\/assets\/screenshot-6.png?rev=2183452","caption":"Documentation (1): Information about the CSS that the plugin loads by default"}],"raw_content":"<!--section=description-->\n<p>This plugin implements and automates Zach Leatherman\u2019s <a href=\"https:\/\/github.com\/zachleat\/web-font-loading-recipes#the-compromise-critical-foft-with-preload-with-a-polyfill-fallback-emulating-font-display-optional\">\u201cCritical FOFT with preload, with a polyfill fallback emulating font-display: optional\u201d<\/a> to optimize and speed up web font loading and improve UX by minimizing Flash of Invisible Text, Flash of Unstyled Text, and DOM Reflow.<\/p>\n\n<h3>Acknowledgement<\/h3>\n\n<p>This plugin is based on <a href=\"https:\/\/github.com\/hlashbrooke\/WordPress-Plugin-Template\">Hugh Lashbrooke\u2019s Starter Plugin<\/a>, a robust and GPL-licensed code template for creating a standards-compliant WordPress plugin.<\/p>\n\n<h3>PRO only features<\/h3>\n\n<ul>\n<li>Support for 7 additional font-weights<\/li>\n<li>Small-caps support<\/li>\n<li>Finer-grained control of default CSS<\/li>\n<li>Default options reset<\/li>\n<li>Warn user of unsaved changes when navigating plugin tabs<\/li>\n<\/ul>\n\n<h3>Configuration<\/h3>\n\n<h4>Video Tutorials<\/h4>\n\n<p><a href=\"https:\/\/youtu.be\/0C0lDJ3T12o\">Episode 1. Intro and Background<\/a><\/p>\n\n<p><a href=\"https:\/\/youtu.be\/-StFYcOSDCU\">Episode 2. Font Squirrel Generator (WOFF &amp; WOFF2)<\/a><\/p>\n\n<h4>Generating and Uploading the Font Files<\/h4>\n\n<p>Upload two files for each web font: a WOFF file and a WOFF2 file. We recommend you use <a href=\"https:\/\/www.fontsquirrel.com\/tools\/webfont-generator\">Font Squirrel\u2019s Webfont Generator<\/a> to generate the files. Mandatory Font Squirrel settings are:<\/p>\n\n<pre><code>Select \u201cExpert\u201d\nFont Formats:       \u201cWOFF\u201d\n                    \u201cWOFF2\u201d\nAdvanced Options:   \u201cFont Name Suffix\u201d = -webfont\n<\/code><\/pre>\n\n<p>For detailed recommended settings, see the plugin Upload options screen.<\/p>\n\n<p><strong>Filenames must follow the proper naming convention:<\/strong> <code>$family<\/code>-<code>$variant<\/code>-webfont.<code>$filetype<\/code>.<\/p>\n\n<dl>\n<dt><strong>$family<\/strong><\/dt>\n<dd>The font family base name without style. Case-insensitive. May contain letters, numerals, and underscores but no hyphens or spaces.<\/dd>\n\n<dt><strong>$variant<\/strong><\/dt>\n<dd>The font style. Can be weight, style, or a combination of both. <em>Case-sensitive<\/em>.<\/dd>\n\n<dt><strong>-webfont<\/strong><\/dt>\n<dd>Mandatory suffix. Append to $variant.<\/dd>\n\n<dt><strong>$filetype<\/strong><\/dt>\n<dd>The file type, i.e., \u201cwoff\u201d or \u201cwoff2\u201d.<\/dd>\n<\/dl>\n\n<p><strong>Example<\/strong>: for the bold weight italic style of Times New Roman, rename the files to timesnewroman-boldItalic-webfont.woff and timesnewroman-boldItalic-webfont.woff2.<\/p>\n\n<p>Allowed weights and styles and their CSS mappings are:<\/p>\n\n<ul>\n<li>regular | normal (maps to 400)<\/li>\n<li>italic (maps to 400)<\/li>\n<li>boldItalic (maps to 700)<\/li>\n<\/ul>\n\n<p><strong>For small-caps support and extended font-weight support, please upgrade to<\/strong> <a href=\"https:\/\/checkout.freemius.com\/mode\/dialog\/plugin\/4955\/plan\/7984\/licenses\/1\/\"><strong>WP FOFT Loader PRO<\/strong><\/a>.<\/p>\n\n<p>This plugin supports 1\u2009\u2013\u20094 font families. For example, you might have a display font for headings, a serif-font for body text, a sans-serif font for UI elements, such as navigation labels, and a monospaced font for tabular data and code examples.<\/p>\n\n<h4>Subset<\/h4>\n\n<p>Upload up to 4 small, subsetted fonts. For each font, upload a WOFF &amp; WOFF2 file (for a total of up to 8 files). Each font will act as a placeholder until the full fonts load.<\/p>\n\n<p><strong>Filenames must follow the proper naming convention:<\/strong> <code>$family<\/code>-optimized.<code>$filetype<\/code>.<\/p>\n\n<dl>\n<dt><strong>$family<\/strong><\/dt>\n<dd>The font family base name without style. Case-insensitive. May contain letters, numerals, and underscores but no hyphens or spaces. Each $family base name should match the name used for the matching font uploaded on the previous upload screen.<\/dd>\n\n<dt><strong>-optimized<\/strong><\/dt>\n<dd>Mandatory suffix. Append to $family.<\/dd>\n\n<dt><strong>$filetype<\/strong><\/dt>\n<dd>The file type, i.e., \u201cwoff\u201d or \u201cwoff2\u201d.<\/dd>\n<\/dl>\n\n<p><strong>Example<\/strong>: If you uploaded timesnewroman-regular-webfont.woff and timesnewroman-regular-webfont.woff2 as your body font on the previous screen, name the subsetted versions timesnewroman-optimized.woff and timesnewroman-optimized.woff2 respectively.<\/p>\n\n<p>To subset and encode your fonts, we recommend you use Font Squirrel\u2019s Webfont Generator. Mandatory Font Squirrel settings are:<\/p>\n\n<pre><code>Select \u201cExpert\u201d\nFont Formats:           \u201cWOFF\u201d\n                        \u201cWOFF2\u201d\nFix Missing Glyphs:     None\nSubsetting:             \u201cCustom Subsetting\u201d with the Unicode Ranges 0065-0041-005A,0061-007A\n                        Leave everything else unchecked\nOpenType Features:      None\nOpenType Flattening:    None\nCSS:                    Leave unchecked\nAdvanced Options:       \u201cFont Name Suffix\u201d = -optimized\n<\/code><\/pre>\n\n<p>For detailed recommended settings, see the plugin Subset options screen.<\/p>\n\n<h4>CSS<\/h4>\n\n<p>@import rules are automatically handled by this plugin. You may manually inline your font-related CSS in the document <code>&lt;head&gt;<\/code> here. Place rules pertaining only to the font-family, font-weight, font-style, and font-variation properties here.<\/p>\n\n<h4>Plugin CSS<\/h4>\n\n<p>The plugin loads some CSS by default. You may disable it from this screen.<\/p>\n\n<h4>Font Display<\/h4>\n\n<p>The plugin uses <code>font-display: swap<\/code> by default. You can override the <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/@font-face\/font-display\"><code>font-display<\/code><\/a> property here.<\/p>\n\n<h4>CSS Stage 1<\/h4>\n\n<p>Declarations placed in this field will load subsetted fonts as placeholders while the full fonts load.<\/p>\n\n<ul>\n<li>Use only the family name followed by Subset (case-sensitive)<\/li>\n<li>Family names must match the names you input on the \u201cSubset\u201d screen.<\/li>\n<li>All declarations must start with the fonts-stage-1 class<\/li>\n<\/ul>\n\n<p>See the Documentation screen to view the Stage 1 CSS that this plugin loads by default.<\/p>\n\n<p>Incorrect:<\/p>\n\n<pre><code>.nav-primary { \/\/ Missing class: .fonts-stage-1\n  font-family: latoSubset, sans-serif;\n}\n\n.fonts-stage-1 #footer-secondary {\n  font-family: lato, san-serif; \/\/ Missing \u201cSubset\u201d suffix\n}\n\n.fonts-stage-1 div.callout {\n  font-family: latoSubset, san-serif;\n  font-size: 1rem; \/\/ \u201cfont-family,\u201d \u201cfont-weight,\u201d \u201cfont-style,\u201d\n                   \/\/ and \u201cfont-variant\u201d rules only\n}\n\n.fonts-stage-1 div.callout {\n  font-family: latosubset, san-serif; \/\/ \u201cSubset\u201d suffix is case-sensitive\n}\n<\/code><\/pre>\n\n<p>Correct:<\/p>\n\n<pre><code>.fonts-stage-1 .nav-primary {\n  font-family: latoSubset, sans-serif;\n}\n<\/code><\/pre>\n\n<h4>CSS Stage 2<\/h4>\n\n<ul>\n<li>Use only the family name<\/li>\n<li>Family names must match the file names for the fonts you uploaded on the \u201cUpload\u201d screen.<\/li>\n<li>Omit weights and styles from the font name<\/li>\n<li>All declarations must start with the fonts-stage-2 class<\/li>\n<li>For best performance, please minify your CSS before pasting it into the form.<\/li>\n<\/ul>\n\n<p>See the Documentation screen to view the Stage 2 CSS that this plugin loads by default.<\/p>\n\n<p>Incorrect:<\/p>\n\n<pre><code>tbody { \/\/ Missing class: .fonts-stage-2\n  font-family: lato, Corbel, \"Lucida Grande\", sans-serif;\n  font-weight: 400;\n  font-style: normal;\n}\n\n.fonts-stage-2 span.bolder {\n  font-family: lato-bold, Corbel, \"Lucida Grande\", sans-serif; \/\/ Don\u2019t include style in font name.\n  \/\/ Better yet, omit declaration altogether.\n  font-weight: 700;\n}\n\n.fonts-stage-2 div.callout {\n  font-family: lato-regular, Corbel, \"Lucida Grande\", san-serif;\n  font-size: 1rem; \/\/ \u201cfont-family,\u201d \u201cfont-weight,\u201d \u201cfont-style,\u201d\n                   \/\/ and \u201cfont-variant\u201d rules only\n}\n<\/code><\/pre>\n\n<p>Correct:<\/p>\n\n<pre><code>.fonts-stage-2 div.callout {\n  font-family: lato, Corbel, \"Lucida Grande\", sans-serif;\n  font-weight: 400;\n  font-style: normal;\n}\n\n.fonts-stage-2 div.callout {\n  \/\/ No need to redeclare the font-family \u2014 all weights map to a single family name\n  font-weight: 700; \/\/ This will use the lato-bold font\n}\n<\/code><\/pre>\n\n<p>For best performance, please <a href=\"https:\/\/cssminifier.com\/\">minify your CSS<\/a> before pasting it into the form.<\/p>\n\n<h4>Font Stacks<\/h4>\n\n<p>Change the default font fallbacks in case your custom fonts don\u2019t load. Don\u2019t include the names of your default custom fonts here.<\/p>\n\n<h4>Further Documentation<\/h4>\n\n<p>See the Documentation screen to view the CSS this plugin loads by default and to view video tutorials.<\/p>\n\n<h3>Translations<\/h3>\n\n<ul>\n<li>English: Default language, always included<\/li>\n<\/ul>\n\n<p>Would you like to help translate WP FOFT Loader into your own language? <a href=\"https:\/\/translate.wordpress.org\/projects\/wp-plugins\/wp-foft-loader\">You can do that here!<\/a><\/p>\n\n<h3>Dependencies<\/h3>\n\n<p>This plugin includes these third-party libraries in its package.<\/p>\n\n<ul>\n<li><a href=\"https:\/\/github.com\/ezyang\/htmlpurifier\">HTMLPurifier<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Cerdic\/CSSTidy\">CSSTidy<\/a><\/li>\n<li><a href=\"https:\/\/fontawesome.com\">Fontawesome<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<h3>USING THE WordPress DASHBOARD<\/h3>\n\n<ol>\n<li>Navigate to \u201cAdd New\u201d in the plugins dashboard<\/li>\n<li>Search for \u201cWP FOFT Loader\u201d<\/li>\n<li>Click \u201cInstall Now\u201d<\/li>\n<li>Activate the plugin on the Plugin dashboard<\/li>\n<li>Go to Settings -&gt; WP FOFT Loader, upload your fonts, and configure the settings.<\/li>\n<\/ol>\n\n<h3>UPLOADING IN WordPress DASHBOARD<\/h3>\n\n<ol>\n<li>Click the download button on this and save \u201cwp-foft-loader.zip\u201d to your computer<\/li>\n<li>Navigate to \u201cAdd New\u201d in the plugins dashboard<\/li>\n<li>Navigate to the \u201cUpload\u201d area<\/li>\n<li>Select \u201cwp-foft-loader.zip\u201d from your computer<\/li>\n<li>Click \u201cInstall Now\u201d<\/li>\n<li>Activate the plugin in the Plugin dashboard<\/li>\n<li>Go to Settings -&gt; WP FOFT Loader, upload your fonts, and configure the settings.<\/li>\n<\/ol>\n\n<h3>USING FTP<\/h3>\n\n<ol>\n<li>Download the WP FOFT Loader ZIP file<\/li>\n<li>Extract the WP FOFT Loader ZIP file to your computer<\/li>\n<li>Upload the \u201cwp-foft-loader\u201d directory to the <code>\/wp-content\/plugins\/<\/code> directory<\/li>\n<li>Activate the plugin in the Plugin dashboard<\/li>\n<li>Go to Settings -&gt; WP FOFT Loader, upload your fonts, and configure the settings.<\/li>\n<\/ol>\n\n<h3>UPGRADING TO WP FOFT LOADER PRO<\/h3>\n\n<ol>\n<li>Go to Settings -&gt; WP FOFT Loader -&gt; Upgrade<\/li>\n<li>Fill out the payment form and submit<\/li>\n<li>Your license key will automatically be entered<\/li>\n<\/ol>\n\n<h3>DOWNLOAD FROM GITHUB<\/h3>\n\n<ol>\n<li>Download the plugin via <a href=\"https:\/\/github.com\/seezee\/WP-FOFT-Loader\">https:\/\/github.com\/seezee\/WP-FOFT-Loader<\/a><\/li>\n<li>Follow the directions for using FTP<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20is%20the%20plugin%20for%3F\"><h3>What is the plugin for?<\/h3><\/dt>\n<dd><p>This plugin implements and automates <a href=\"https:\/\/github.com\/zachleat\/web-font-loading-recipes#the-compromise-critical-foft-with-preload-with-a-polyfill-fallback-emulating-font-display-optional\">Zach Leatherman\u2019s Critical FOFT with preload, with a polyfill fallback emulating font-display: optional<\/a>. According to <a href=\"https:\/\/twitter.com\/zachleat\/status\/1187810081175474176\">a tweet from Mr. Leatherman<\/a>, this technique is the best compromise between font speed loading and a positive user experience.<\/p><\/dd>\n<dt id=\"how%20may%20i%20help%20improve%20this%20plugin%3F\"><h3>How may I help improve this plugin?<\/h3><\/dt>\n<dd><p>I\u2019d love to hear your feedback. In particular, tell me about your experience configuring the plugin. Are the instructions clear? Do I need to reword them? Did I leave out something crucial? You get the drift.<\/p><\/dd>\n<dt id=\"i%E2%80%99d%20like%20to%20do%20more\"><h3>I\u2019d like to do more<\/h3><\/dt>\n<dd><p>I\u2019m looking for collaborators to improve the code. If you are an experienced WordPress programmer, hit me up!<\/p><\/dd>\n<dt id=\"i%E2%80%99d%20like%20to%20do%20even%20more\"><h3>I\u2019d like to do even more<\/h3><\/dt>\n<dd><p>Feel free to send a donation to my <a href=\"https:\/\/paypal.me\/messengerwebdesign?locale.x=en_US\">Paypal account<\/a>. Or buy me a beer if you\u2019re in town.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.1.40<\/h4>\n\n<ul>\n<li>2026-02-03<\/li>\n<li>SECURITY: Proper check for file &amp; MIME type<\/li>\n<\/ul>\n\n<h4>2.1.39<\/h4>\n\n<ul>\n<li>2026-02-02<\/li>\n<li>Update plugin URI<\/li>\n<\/ul>\n\n<h4>2.1.38<\/h4>\n\n<ul>\n<li>2025-12-16<\/li>\n<li>Tested up to WordPress 6.9<\/li>\n<li>Update Freemius SDK<\/li>\n<\/ul>\n\n<h4>2.1.37<\/h4>\n\n<ul>\n<li>2025-01-27<\/li>\n<li>Tested up to WordPress 6.7.1<\/li>\n<li>Update Freemius SDK<\/li>\n<\/ul>\n\n<h4>2.1.36<\/h4>\n\n<ul>\n<li>2024-10-23<\/li>\n<li>Tested up to WordPress 6.6.2<\/li>\n<li>Update Freemius SDK<\/li>\n<\/ul>\n\n<h4>2.1.35<\/h4>\n\n<ul>\n<li>2024-08-29<\/li>\n<li>Tested up to WordPress 6.6.1<\/li>\n<\/ul>\n\n<h4>2.1.34<\/h4>\n\n<ul>\n<li>2024-05-07<\/li>\n<li>Tested up to WordPress 6.5.3<\/li>\n<\/ul>\n\n<h4>2.1.33<\/h4>\n\n<ul>\n<li>2024-05-02<\/li>\n<li>Tested up to WordPress 6.5.2<\/li>\n<li>BUGFIX: Cast variables to integers to avoid precision error in PHP 8.3<\/li>\n<li>Update Freemius SDK<\/li>\n<\/ul>\n\n<h4>2.1.32<\/h4>\n\n<ul>\n<li>2023-12-21<\/li>\n<li>Tested up to WordPress 6.4.2<\/li>\n<\/ul>\n\n<h4>2.1.31<\/h4>\n\n<ul>\n<li>2023-11-20<\/li>\n<li>Tested up to WordPress 6.4.11<\/li>\n<\/ul>\n\n<h4>2.1.30<\/h4>\n\n<ul>\n<li>2023-08-28<\/li>\n<li>Tested up to WordPress 6.3<\/li>\n<li>Freemius SDK update to 2.5.11<\/li>\n<\/ul>\n\n<h4>2.1.29<\/h4>\n\n<ul>\n<li>2023-07-05<\/li>\n<li>Freemius SDK update to 2.5.10<\/li>\n<\/ul>\n\n<h4>2.1.28<\/h4>\n\n<ul>\n<li>2023-04-21<\/li>\n<li>Tested up to WordPress 6.2<\/li>\n<\/ul>\n\n<h4>2.1.27<\/h4>\n\n<ul>\n<li>2022-11-23<\/li>\n<li>Tested up to WordPress 6.1.1<\/li>\n<\/ul>\n\n<h4>2.1.26<\/h4>\n\n<ul>\n<li>2022-07-24<\/li>\n<li>Tested up to WordPress 6.0.1<\/li>\n<\/ul>\n\n<h4>2.1.25<\/h4>\n\n<ul>\n<li>2022-05-27<\/li>\n<li>Tested up to WordPress 6.0.0<\/li>\n<\/ul>\n\n<h4>2.1.24<\/h4>\n\n<ul>\n<li>2022-05-17<\/li>\n<li>Added type attribute to style tag<\/li>\n<\/ul>\n\n<h4>2.1.23<\/h4>\n\n<ul>\n<li>2022-04-05<\/li>\n<li>Tested up to WordPres 5.9.3<\/li>\n<\/ul>\n\n<h4>2.1.22<\/h4>\n\n<ul>\n<li>2022-03-11<\/li>\n<li>Tested up to WordPres 5.9.2<\/li>\n<\/ul>\n\n<h4>2.1.21<\/h4>\n\n<ul>\n<li>2022-02-24<\/li>\n<li>Security Fix<\/li>\n<\/ul>\n\n<h4>2.1.20<\/h4>\n\n<ul>\n<li>2022-02-22<\/li>\n<li>Tested up to WordPress 5.9.1<\/li>\n<\/ul>\n\n<h4>2.1.19<\/h4>\n\n<ul>\n<li>2022-02-10<\/li>\n<li>Updated to Fontawesome 6.0.0<\/li>\n<li>Don\u2019t add SRI hash to fallback scripts if external scripts don\u2019t load<\/li>\n<\/ul>\n\n<h4>2.1.18<\/h4>\n\n<ul>\n<li>2022-01-26<\/li>\n<li>Tested up to WordPress 5.9<\/li>\n<\/ul>\n\n<h4>2.1.17<\/h4>\n\n<ul>\n<li>2022-01-20<\/li>\n<li>Update contact &amp; support URL on plugins page for PRO users<\/li>\n<\/ul>\n\n<h4>2.1.16<\/h4>\n\n<ul>\n<li>2022-01-10<\/li>\n<li>Tested up to WordPress 5.8.3<\/li>\n<li>Check for FREE vs. PRO and serve appropriate support URL<\/li>\n<\/ul>\n\n<h4>2.1.16<\/h4>\n\n<ul>\n<li>2021-11-11<\/li>\n<li>Tested up to WordPress 5.8.2<\/li>\n<\/ul>\n\n<h4>2.1.16<\/h4>\n\n<ul>\n<li>2021-09-09<\/li>\n<li>Tested up to WordPress 5.8.1<\/li>\n<\/ul>\n\n<h4>2.1.13<\/h4>\n\n<ul>\n<li>2021-07-23<\/li>\n<li>Tested up to WordPress 5.8<\/li>\n<li>Minor changes to README<\/li>\n<li>Update documentation in the settings screen<\/li>\n<\/ul>\n\n<h4>2.1.12<\/h4>\n\n<ul>\n<li>2021-05-20<\/li>\n<li>Added short description to README<\/li>\n<li>Updated plugin tags<\/li>\n<li>Other README changes<\/li>\n<li>Updated header in main plugin file<\/li>\n<\/ul>\n\n<h4>2.1.11<\/h4>\n\n<ul>\n<li>2021-05-13<\/li>\n<li>Tested up to WordPress 5.7.2<\/li>\n<\/ul>\n\n<h4>2.1.10<\/h4>\n\n<ul>\n<li>2021-04-22<\/li>\n<li>Tested up to WordPress 5.7.1<\/li>\n<li>BUGFIX: Fixed incorrect classname in admin API &amp; unminified settings.js<\/li>\n<li>Fixed premium code not being removed from free plugin<\/li>\n<li>Generated new .pot file<\/li>\n<\/ul>\n\n<h4>2.1.9<\/h4>\n\n<ul>\n<li>2021-03-12<\/li>\n<li>Tested up to WordPress 5.7<\/li>\n<\/ul>\n\n<h4>2.1.8<\/h4>\n\n<ul>\n<li>2021-01-19<\/li>\n<li>BUGFIX: Fix undefined variable $uploadmessage<\/li>\n<li>Update to Fontawesome 5.15.2<\/li>\n<\/ul>\n\n<h4>2.1.7<\/h4>\n\n<ul>\n<li>2021-01-18<\/li>\n<li>BUGFIX: Fix checklink() naming collision<\/li>\n<\/ul>\n\n<h4>2.1.6<\/h4>\n\n<ul>\n<li>2021-01-18<\/li>\n<li>Provide fallback for external Fontawesome script per WordPress standards<\/li>\n<\/ul>\n\n<h4>2.1.5<\/h4>\n\n<ul>\n<li>2021-01-08<\/li>\n<li>Tested up to 5.6<\/li>\n<li>BUGFIX: Restored missing upload button on plugin main page<\/li>\n<li>Reformatted and updated code to meet WordPress coding standards<\/li>\n<\/ul>\n\n<h4>2.1.4<\/h4>\n\n<ul>\n<li>2020-10-08<\/li>\n<li>Tested up to 5.5.3<\/li>\n<li>Update FREEMIUS SDK to v.2.4.1<\/li>\n<li>Use Dashicons coffee glyph instead of FontAwesome coffee glyph in plugin meta<\/li>\n<li>Corrected and improved usage examples<\/li>\n<\/ul>\n\n<h4>2.1.3<\/h4>\n\n<ul>\n<li>2020-09-30<\/li>\n<li>BUGFIX: prior release contained an undefined variable and a typo'd function name, causing a fatal error in the FREE plugin<\/li>\n<\/ul>\n\n<h4>2.1.2<\/h4>\n\n<ul>\n<li>2020-09-30<\/li>\n<li>SECURITY FIX: escape or sanitize all translatable strings<\/li>\n<li>(PRO only) Remove deprecated custom message from AreYouSure.js<\/li>\n<li>Minor copy improvements<\/li>\n<li>Other minor fixes<\/li>\n<\/ul>\n\n<h4>2.1.1<\/h4>\n\n<ul>\n<li>2020-09-27<\/li>\n<li>BUGFIX: (FREE version only) Fix missing variables in class-wp-foft-loader-settings.php<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>2020-09-27<\/li>\n<li>BUGFIX: Restore ajax for form submissions<\/li>\n<li>BUGFIX: Restore missing form reset button<\/li>\n<li>Refactor i18n<\/li>\n<\/ul>\n\n<h4>2.0.37<\/h4>\n\n<ul>\n<li>2020-09-02<\/li>\n<li>BUGFIX: Fix missing offset in class-wp-foft-loader-settings.php<\/li>\n<li>Remove unused JS files from FREE version<\/li>\n<li>Tested up to v5.5.1<\/li>\n<\/ul>\n\n<h4>2.0.36<\/h4>\n\n<ul>\n<li>2020-06-17<\/li>\n<li>BUGFIX: Fix missing Fontawesome glyphs on admin settings page<\/li>\n<\/ul>\n\n<h4>2.0.35<\/h4>\n\n<ul>\n<li>2020-06-16<\/li>\n<li>Tested up to 5.4.2<\/li>\n<\/ul>\n\n<h4>2.0.34<\/h4>\n\n<ul>\n<li>2020-04-30<\/li>\n<li>Tested up to 5.4.1<\/li>\n<\/ul>\n\n<h4>2.0.33<\/h4>\n\n<ul>\n<li>2020-04-21<\/li>\n<li>Update Fontawesome library<\/li>\n<li>Correct typo in LICENSE<\/li>\n<\/ul>\n\n<h4>2.0.32<\/h4>\n\n<ul>\n<li>2020-04-01<\/li>\n<li>Tested up to WordPress 5.4<\/li>\n<li>Remove surrounding underscores in plugin constants per WordPress coding standards<\/li>\n<\/ul>\n\n<h4>2.0.31<\/h4>\n\n<ul>\n<li>2020-01-01<\/li>\n<li>BUGFIX: change assigment operators to comparisons in class-wp-foft-loader.php &amp; class-wp-foft-loader-ratings.php<\/li>\n<\/ul>\n\n<h4>2.0.30<\/h4>\n\n<ul>\n<li>2019-12-20<\/li>\n<li>Add option to keep database options on uninstall in case of upgrading to PRO version<\/li>\n<\/ul>\n\n<h4>2.0.29<\/h4>\n\n<ul>\n<li>2019-12-18<\/li>\n<li>MINOR BUGFIX: Fix missing coffee cup icon in plugin meta<\/li>\n<\/ul>\n\n<h4>2.0.28<\/h4>\n\n<ul>\n<li>2019-12-09<\/li>\n<li>BUGFIX: Fix CORS policy error<\/li>\n<li>Add translation strings for plugin meta<\/li>\n<\/ul>\n\n<h4>2.0.27<\/h4>\n\n<ul>\n<li>2019-12-08<\/li>\n<li>BUGFIX: Fix reset form not displaying<\/li>\n<li>BUGFIX: Check for NULL tab before displaying reset form<\/li>\n<li>Use define() instead of const to define globals<\/li>\n<li>Check if globals are already set &amp; show error message if they are<\/li>\n<li>Refactor Freemius checks: concatenate instead of nesting, use if \u2026 else instead of additional if statement<\/li>\n<\/ul>\n\n<h4>2.0.26<\/h4>\n\n<ul>\n<li>2019-12-06<\/li>\n<li>BUGFIX: Fix AJAX not firing on save<\/li>\n<li>Fixed missing space in success &amp; error admin messages on save<\/li>\n<li>Renamed Font Awesome scripts &amp; modified classname to avoid collisions with other themes &amp; plugins<\/li>\n<li>Load main Font Awesome script from CDN<\/li>\n<\/ul>\n\n<h4>2.0.25<\/h4>\n\n<ul>\n<li>2019-12-03<\/li>\n<li>Improvements to configuration instructions on upload &amp; subset screens<\/li>\n<\/ul>\n\n<h4>2.0.24<\/h4>\n\n<ul>\n<li>2019-12-03<\/li>\n<li>Include unminified scripts in assets to aid debugging<\/li>\n<\/ul>\n\n<h4>2.0.23<\/h4>\n\n<ul>\n<li>2019-12-02<\/li>\n<li>BUGFIX: fix broken path for fallback.min.js<\/li>\n<\/ul>\n\n<h4>2.0.22<\/h4>\n\n<ul>\n<li>2019-12-02<\/li>\n<li>BUGFIX: fix improper Freemius filter in wp-foft-loader.php<\/li>\n<li>BUGFIX: fix path error that prevents one of the optimized fonts from loading<\/li>\n<li>Add font-display property to subsetted font declaration<\/li>\n<\/ul>\n\n<h4>2.0.21<\/h4>\n\n<ul>\n<li>2019-11-29<\/li>\n<li>BUGFIX: Fix update success notice showing if not updated<\/li>\n<\/ul>\n\n<h4>2.0.20<\/h4>\n\n<ul>\n<li>2019-11-29<\/li>\n<li>Fixed missing spaces to upgrade success notice v2.0.17 \u2013 v2.0.19<\/li>\n<\/ul>\n\n<h4>2.0.19<\/h4>\n\n<ul>\n<li>2019-11-29<\/li>\n<li>BUGFIX: moved wpfl_activation() below wpfl_check_version() so they fire in correct order<\/li>\n<li>Added get_option() check for FALSE in wpfl_check_version()<\/li>\n<\/ul>\n\n<h4>2.0.19<\/h4>\n\n<ul>\n<li>2019-11-29<\/li>\n<li>BUGFIX: corrected version check error<\/li>\n<\/ul>\n\n<h4>2.0.17<\/h4>\n\n<ul>\n<li>2019-11-29<\/li>\n<li>Add aria-label to meta links<\/li>\n<li>Improved URL sanitization with esc_url()<\/li>\n<li>Some internationalization fixes<\/li>\n<li>Regenerate .POT file<\/li>\n<li>Tweaks to ratings microcopy<\/li>\n<\/ul>\n\n<h4>2.0.16<\/h4>\n\n<ul>\n<li>2019-11-29<\/li>\n<li>Change settings page slug to wp-foft-loader<\/li>\n<li>Add class-wp-foft-loader-ratings.php<\/li>\n<li>Additional capability &amp; pagenow() checks<\/li>\n<\/ul>\n\n<h4>2.0.15<\/h4>\n\n<ul>\n<li>2019-11-25<\/li>\n<li>BUGFIX: proper check for whether options are set in class-wp-foft-loader-jsvars.php<\/li>\n<li>BUGFIX: prevent loading of inline Font Face Observer JS until user uploads at least one font &amp; sets at least one option on main screen<\/li>\n<\/ul>\n\n<h4>2.0.14<\/h4>\n\n<ul>\n<li>2019-11-25<\/li>\n<li>BUGFIX: fix undefined variable $promises in class-wp-foft-loader-head.php<\/li>\n<\/ul>\n\n<h4>2.0.13<\/h4>\n\n<ul>\n<li>2019-11-25<\/li>\n<li>BUGFIX: change default options from empty to NULL to avoid missing font in Javascript font preload<\/li>\n<li>Minor admin CSS changes<\/li>\n<li>Minor revision to descriptive text on settings page<\/li>\n<li>POT file updated<\/li>\n<\/ul>\n\n<h4>2.0.12<\/h4>\n\n<ul>\n<li>2019-11-25<\/li>\n<li>Fix missing fontawesome glyphs in plugins settings page main heading<\/li>\n<\/ul>\n\n<h4>2.0.11<\/h4>\n\n<ul>\n<li>2019-11-24<\/li>\n<li>BUGFIX: Fix mixed content error in file upload path<\/li>\n<\/ul>\n\n<h4>2.0.10<\/h4>\n\n<ul>\n<li>2019-11-24<\/li>\n<li>BUGFIX: use array_pad() to finally fix undefined offset in class-wp-foft-loader-settings.php<\/li>\n<\/ul>\n\n<h4>2.0.9<\/h4>\n\n<ul>\n<li>2019-11-24<\/li>\n<li>BUGFIX: fix more undefined offsets<\/li>\n<li>BUGFIX: change \"$\" to \"jQuery\" in \"ays-beforeunload-shim.min.js\"<\/li>\n<\/ul>\n\n<h4>2.0.8<\/h4>\n\n<ul>\n<li>2019-11-23<\/li>\n<li>Sanitize variables jsObs &amp; jsLoad with wp_json_encode()<\/li>\n<li>BUGFIX: replace all instances of undefined variable $version with constant WPFL_VERSION<\/li>\n<li>BUGFIX: fix more undefined variables &amp; offsets<\/li>\n<li>BUGFIX: fix constant referring to wrong directory path<\/li>\n<\/ul>\n\n<h4>2.0.7<\/h4>\n\n<ul>\n<li>2019-11-22<\/li>\n<li>BUGFIXES: Check for existence of variables and arrays &amp; fix undefined offsets<\/li>\n<\/ul>\n\n<h4>2.0.6<\/h4>\n\n<ul>\n<li>2019-11-19<\/li>\n<li>Move HTMLPurifier &amp; CSSTidy to vendor directory<\/li>\n<li>Fix \"Buy the Developer a Coffee\" link in plugin meta<\/li>\n<li>Add author &amp; plugin URIs to readme<\/li>\n<\/ul>\n\n<h4>2.0.5<\/h4>\n\n<ul>\n<li>2019-11-15<\/li>\n<li>Tested up to WordPress 5.3<\/li>\n<\/ul>\n\n<h4>2.0.4<\/h4>\n\n<ul>\n<li>2019-11-12<\/li>\n<li>BUGFIX: fixed improper Freemius \"if\" statements<\/li>\n<li>BUGFIX: plugin no longer fails to uninstall<\/li>\n<li>BUGFIX: plugin now deletes options properly on uninstall<\/li>\n<li>Added new Admin messages for new installs &amp; updates<\/li>\n<li>Added WPFL_BASE &amp; WPFL_VERSION constants &amp; replaced limited-scope variables<\/li>\n<li>New PRO feature: finer-grained control over default CSS output<\/li>\n<li>New PRO feature: ability to restore plugin defaults<\/li>\n<\/ul>\n\n<h4>2.0.3<\/h4>\n\n<ul>\n<li>2019-11-07<\/li>\n<li>Improved support for small-caps in PRO version<\/li>\n<li>Warn on change without saving PRO version only<\/li>\n<li>Added admin messages after plugin activation or update<\/li>\n<li>Auto-disactivate FREE plugin when activating PRO version<\/li>\n<li>Fix README typos &amp; formatting<\/li>\n<li>Remove out-of-date README info (translators)<\/li>\n<li>Add version check in wp_options table<\/li>\n<\/ul>\n\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>2019-11-05<\/li>\n<li>Moved support for extended font weights and small-caps to PRO plugin<\/li>\n<li>Integrated FREEMIUS code for PRO plugin<\/li>\n<li>Eliminated redundant output if user uploads fewer than 4 fonts<\/li>\n<li>Changed font declarations to auto-populated select<\/li>\n<li>Moved font declarations to plugin settings tab<\/li>\n<li>Use template literals in class-wp-foft-loader-jsvars.php<\/li>\n<li>Ajaxify admin messages<\/li>\n<li>Prepend random exclamations to admin messages<\/li>\n<li>Update HTMLPurifier to v4.12.0<\/li>\n<li>Update CSSTidy to v1.7.1<\/li>\n<li>Removed out-of-date translation files<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>2019-10-30<\/li>\n<li><strong>IMPORTANT<\/strong> Versions &gt;= 2.0.0 and up introduce breaking changes from versions &lt;= 1.0.47<\/li>\n<li>Users upgrading from v1.x.x will need to visit the \u201cSubset\u201d screen and configure subsetted fonts<\/li>\n<li>Fixed error in class-wp-foft-loader-jsvars<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>2019-10-30<\/li>\n<li><strong>IMPORTANT<\/strong> This is a major update with breaking changes<\/li>\n<li>Users upgrading from v1.x.x will need to visit the \u201cSubset\u201d screen and configure subsetted fonts<\/li>\n<li>Move from \u201cCritical FOFT with Data URI\u201d to \u201cCritical FOFT with preload, with a polyfill fallback emulating font-display\u201d<\/li>\n<\/ul>\n\n<h4>1.0.47<\/h4>\n\n<ul>\n<li>2019-10-16<\/li>\n<li>Tested up to WordPress 1.0.46<\/li>\n<\/ul>\n\n<h4>1.0.46<\/h4>\n\n<ul>\n<li>2019-09-26<\/li>\n<li>Fix undefined offset <code>0<\/code><\/li>\n<li>Fix undefined index <code>placeholder<\/code><\/li>\n<\/ul>\n\n<h4>1.0.45<\/h4>\n\n<ul>\n<li>2019-09-26<\/li>\n<li>Remove undefined variable $parent from class mimes<\/li>\n<li>Add variable $plugin to class meta<\/li>\n<\/ul>\n\n<h4>1.0.44<\/h4>\n\n<ul>\n<li>2019-09-25<\/li>\n<li>Add links to plugin meta<\/li>\n<\/ul>\n\n<h4>1.0.43<\/h4>\n\n<ul>\n<li>2019-09-25<\/li>\n<li>Update plugin description in main file<\/li>\n<\/ul>\n\n<h4>1.0.42<\/h4>\n\n<ul>\n<li>2019-09-25<\/li>\n<li>Add <code>samp<\/code> tag to default CSS<\/li>\n<\/ul>\n\n<h4>1.0.41<\/h4>\n\n<ul>\n<li>2019-09-25<\/li>\n<li>Add <code>kbd<\/code> tag to default CSS<\/li>\n<\/ul>\n\n<h4>1.0.40<\/h4>\n\n<ul>\n<li>2019-09-12<\/li>\n<li>Remove unused dev code from HTMLPurifier &amp; CSSTidy<\/li>\n<\/ul>\n\n<h4>1.0.39<\/h4>\n\n<ul>\n<li>2019-09-08<\/li>\n<li>Security update: Fix XSS double-quoted attribute flaw in class-wp-foft-loader-settings.php<\/li>\n<\/ul>\n\n<h4>1.0.38<\/h4>\n\n<ul>\n<li>2019-09-05<\/li>\n<li>Remove admin script enqueuing since we\u2019re not using it and it throws a 404<\/li>\n<\/ul>\n\n<h4>1.0.37<\/h4>\n\n<ul>\n<li>2012-08-19<\/li>\n<li>Added package.json<\/li>\n<li>Minor updates to readme.txt &amp; readme.md<\/li>\n<\/ul>\n\n<h4>1.0.36<\/h4>\n\n<ul>\n<li>2019-08.13<\/li>\n<li>Fixed uploader bug. WOFF &amp; WOFF2 files now permitted &amp; upload to correct folder<\/li>\n<\/ul>\n\n<h4>1.0.35<\/h4>\n\n<ul>\n<li>2019-07-31<\/li>\n<li>Update CSSTidy library to v1.7.0<\/li>\n<\/ul>\n\n<h4>1.0.34<\/h4>\n\n<ul>\n<li>2019-07-29<\/li>\n<li>Modifed HTMLTidy config in class-wp-foft-loader-head.php<\/li>\n<\/ul>\n\n<h4>1.0.33<\/h4>\n\n<ul>\n<li>2019-07-07<\/li>\n<li>Updated .pot file<\/li>\n<li>Replaced incorrect Dutch .po &amp; .mo<\/li>\n<\/ul>\n\n<h4>1.0.32<\/h4>\n\n<ul>\n<li>2019-07-05<\/li>\n<li>BUGFIX in class-wp-foft-loader-settings.php<\/li>\n<li>Better installation instructions<\/li>\n<\/ul>\n\n<h4>1.0.31<\/h4>\n\n<ul>\n<li>2019-07-04<\/li>\n<li>More sanitization<\/li>\n<li>Pass PHPCS\/WPCS checks<\/li>\n<li>Remove unused metabox code<\/li>\n<\/ul>\n\n<h4>1.0.30<\/h4>\n\n<ul>\n<li>2019-06-27<\/li>\n<li>Fixed incorrect Dutch .po filenames<\/li>\n<\/ul>\n\n<h4>1.0.29<\/h4>\n\n<ul>\n<li>2019-06-28<\/li>\n<li>More sanitizing<\/li>\n<li>Changes to README content<\/li>\n<li>Corrected some errors in Dutch translation<\/li>\n<\/ul>\n\n<h4>1.0.28<\/h4>\n\n<ul>\n<li>2019-06-27<\/li>\n<li>Create correct icon sizes for WP Plugin Repository<\/li>\n<li>Fix readme.txt formatting<\/li>\n<li>Changes to README content<\/li>\n<\/ul>\n\n<h4>1.0.27<\/h4>\n\n<ul>\n<li>2019-06-27<\/li>\n<li>Code formatting now meets WordPress standards<\/li>\n<li>Strict type checking on comparisons<\/li>\n<li>Use Yoda case where appropriate<\/li>\n<li>Convert unnecessary concatenations to single strings<\/li>\n<li>Added Dutch translation<\/li>\n<\/ul>\n\n<h4>1.0.26<\/h4>\n\n<ul>\n<li>2019-06-25<\/li>\n<li>Minor bugfix (fixed typo in code)<\/li>\n<\/ul>\n\n<h4>1.0.25<\/h4>\n\n<ul>\n<li>2019-06-21<\/li>\n<li>Additional NULL value checks before outputting styles<\/li>\n<li>Other code improvements<\/li>\n<li>Numerous documentation improvements<\/li>\n<li>Added first two video tutorials (more to come)<\/li>\n<\/ul>\n\n<h4>1.0.24<\/h4>\n\n<ul>\n<li>2019-06-19<\/li>\n<li>BUGFIXes: fixed typos in output CSS<\/li>\n<li>Separated Stage 1 and Stage 2 CSS in CSS screen<\/li>\n<li>Added Documentation screen<\/li>\n<li>Major edits to body copy<\/li>\n<li>Removed internationalization where it\u2019s not needed<\/li>\n<\/ul>\n\n<h4>1.0.23<\/h4>\n\n<ul>\n<li>2019-06-18<\/li>\n<li>Use HTMLPurifier &amp; CSSTidy to sanitize user input custom CSS<\/li>\n<\/ul>\n\n<h4>1.0.22<\/h4>\n\n<ul>\n<li>2019-06-17<\/li>\n<li>Improve introductory microcopy on Settings page<\/li>\n<li>BUGFIX: fixed incorrect textdomain<\/li>\n<\/ul>\n\n<h4>1.0.21<\/h4>\n\n<ul>\n<li>2019-06-17<\/li>\n<li>Update custom CSS output in \/includes\/class-wp-foft-loader-head.php (convert <code>&amp;lt;<\/code> back to <code>&gt;<\/code> child selector after sanitizing)<\/li>\n<li>Update default CSS output in \/includes\/class-wp-foft-loader-head.php (don\u2019t escape <code>&gt;<\/code>)<\/li>\n<\/ul>\n\n<h4>1.0.20<\/h4>\n\n<ul>\n<li>2019-06-16<\/li>\n<li>Add font-display option to CSS Settings screen<\/li>\n<li>Update .pot, .po, &amp; .mo language files<\/li>\n<\/ul>\n\n<h4>1.0.19<\/h4>\n\n<ul>\n<li>2019-06-16<\/li>\n<li>Improve file-naming convention documentation<\/li>\n<\/ul>\n\n<h4>1.0.18<\/h4>\n\n<ul>\n<li>2019-06-16<\/li>\n<li>Improve file-naming convention documentation<\/li>\n<li>Use definition list for Font Squirrel suggested settings<\/li>\n<li>Open media uploader in Upload view instead of Library view<\/li>\n<li>Trim unused code from class-wp-foft-loader-admin-api.php<\/li>\n<li>Update .pot, .po, &amp; .mo language files<\/li>\n<\/ul>\n\n<h4>1.0.17<\/h4>\n\n<ul>\n<li>2019-06-15<\/li>\n<li>Reverted recommended Em Square Value setting<\/li>\n<\/ul>\n\n<h4>1.0.16<\/h4>\n\n<ul>\n<li>2019-06-15<\/li>\n<li>Corrected font weight mapping in README &amp; upload instructions<\/li>\n<li>Updated recommended Font Squirrel Generator settings<\/li>\n<\/ul>\n\n<h4>1.0.15<\/h4>\n\n<ul>\n<li>2019-06-14<\/li>\n<li>Added missing change to changelog &amp; re-assigned version numbers<\/li>\n<\/ul>\n\n<h4>1.0.14<\/h4>\n\n<ul>\n<li>2019-06-14<\/li>\n<li>Added plugin banner &amp; icon<\/li>\n<\/ul>\n\n<h4>1.0.13<\/h4>\n\n<ul>\n<li>2019-06-14<\/li>\n<li>Corrected GPL License info<\/li>\n<\/ul>\n\n<h4>1.0.12<\/h4>\n\n<ul>\n<li>2019-06-14<\/li>\n<li>Corrected version numbering error<\/li>\n<li>Fixed typo in README description<\/li>\n<\/ul>\n\n<h4>1.0.11<\/h4>\n\n<ul>\n<li>2019-06-14<\/li>\n<li>Corrected license URI<\/li>\n<\/ul>\n\n<h4>1.0.10<\/h4>\n\n<ul>\n<li>2019-06-14<\/li>\n<li>Upgraded GNU Public License from v2 to v3<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>2019-06-14<\/li>\n<li>Corrected Contributers username<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>2019-06-14<\/li>\n<li>Add Requires PHP to README<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>2019-06-14<\/li>\n<li>Add screenshots<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>2019-06-14<\/li>\n<li>Create readme.txt<\/li>\n<li>Add comments to readme.md<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>2019-06-14<\/li>\n<li>Upgrade license from GNU GPL 2 to GNU GPL 3<\/li>\n<li>Fix Undefined index: placeholder in class-wp-foft-loader-admin-api.php<\/li>\n<li>Add acknowledgement to README<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>2019-06-13<\/li>\n<li>README formatting fix<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>2019-06-13<\/li>\n<li>Further README formatting improvements<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>2019-06-13<\/li>\n<li>Fixed README formatting &amp; added Pros &amp; Cons to FAQ<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>2019-06-13<\/li>\n<li>Removed trailing comma if font stack is not set<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>2019-06-13<\/li>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Optimize and speed up web font loading and improve UX by minimizing Flash of Invisible Text, Flash of Unstyled Text, and DOM Reflow.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/105731","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=105731"}],"author":[{"embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/seezee"}],"wp:attachment":[{"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=105731"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=105731"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=105731"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=105731"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=105731"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=105731"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}