WordPress/wp-admin
hellofromTonya 8c4c35311b Introduce font-face styles generator and printer.
Introducing Font Face, a server-side `@font-face` styles generator and printer. 

tl;dr:
* Introduces Font Face.
* Deprecates `_wp_theme_json_webfonts_handler()`.

**Introduce Font Face**

From an array of fonts (i.e. each font-family and its font variations to be processed), it:

1. Validates each `font-face` declaration, i.e. the CSS property and value pairing. If validation fails, processing stops with no font-face styles printed.
3. Generates the `@font-face` CSS for each font-family.
4. Prints the CSS within a `<style id="wp-fonts-local">` element.

The entry point into Font Face is through a new global function called `wp_print_font_faces()`, which is automatically called:

* when the `'wp_head'` hook runs (for the front-end).
* when the `'admin_print_styles'` hook runs (for the back-end).
* when `_wp_get_iframed_editor_assets()` runs to inject the `@font-face` styles into the iframed editor.

Once called, it gets the fonts from Theme_JSON merged data layer, which includes theme defined fonts and user activated fonts (once the Font Library #59166 is introduced into Core).

For classic sites, themes and plugins can directly call `wp_print_font_faces()` and pass their fonts array to it for processing.

**Deprecates `_wp_theme_json_webfonts_handler()`.**

As Font Face is a direct replacement, the stopgap code in `_wp_theme_json_webfonts_handler()` (introduced in 6.0.0 via [53282]) is deprecated and unused in Core.

**Props note:**
There's a long multiple year history baked into Font Face, which dates back to the early versions of a web font API (see #46370 and [https://github.com/WordPress/gutenberg/issues/41479 roadmap]. The props list includes those who contributed from those early versions up to this commit.

**References:**
* #46370 original (Web)Fonts API proposal for registering and enqueuing web fonts.
* [https://github.com/WordPress/gutenberg/issues/41479 Gutenberg tracking issue] which includes the evolution from Webfonts API to Fonts API to Font Face.
* [53282] / #55567 Added the stopgap code `_wp_theme_json_webfonts_handler()` in 6.0.
* [https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face @font-face on mdn web docs]
* #59166 Font Library: Font manager for WordPress

Follow-up to [53282].

Props aristath, jonoaldersonwp, hellofromTonya, andraganescu, annezazu, antonvlasenko, arena, askdesign, azaozz, bph, bradley2083, colorful-tones, costdev, davidbaumwald, desrosj, dingo_d, djcowan, domainsupport, dryanpress, elmastudio, flixos90, francina, garrett-eclipse, gigitux, grantmkin, grapplerulrich, gziolo, ironprogrammer, jb510, jeffpaul, jeremyyip, jffng, joostdevalk, jorgefilipecosta, juanmaguitar, mamaduka, matveb, mburridge, mitogh, ndiego, ntsekouras, oandregal, ocean90, oglekler, paaljoachim, pagelab, peterwilsoncc, poena, priethor, scruffian, SergeyBiryukov, shiloey, simison, skorasaurus, soean, westonruter, wildworks, zaguiini.
Fixes #59165.
Built from https://develop.svn.wordpress.org/trunk@56500


git-svn-id: http://core.svn.wordpress.org/trunk@56012 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-08-31 21:49:20 +00:00
..
css General: Use regular core button styles for page header actions. 2023-08-24 20:16:18 +00:00
images Help/About: Updates to About page. 2023-07-24 23:39:22 +00:00
includes Introduce font-face styles generator and printer. 2023-08-31 21:49:20 +00:00
js External Libraries: Update deprecated jQuery code in Farbtastic lib. 2023-07-17 22:03:26 +00:00
maint Coding Standards: Use strict comparison in wp-admin/maint/repair.php. 2023-04-11 16:30:22 +00:00
network Administration: Apply admin notice functions in multisite. 2023-08-17 21:03:19 +00:00
user
about.php Help/About: Add images to About page, match header style to images. 2023-08-01 15:04:22 +00:00
admin-ajax.php
admin-footer.php
admin-functions.php
admin-header.php Docs: Use third-person singular verbs in various function descriptions, as per docblocks standards. 2023-06-14 14:08:18 +00:00
admin-post.php
admin.php Docs: Use third-person singular verbs in various function descriptions, as per docblocks standards. 2023-06-14 14:08:18 +00:00
async-upload.php
authorize-application.php
comment.php Code Modernization: Replace usage of strpos() with str_contains(). 2023-06-22 14:36:26 +00:00
contribute.php Help/About: Escape "Contribute" links, for better consistency. 2023-08-01 12:58:22 +00:00
credits.php Help/About: Escape "Contribute" links, for better consistency. 2023-08-01 12:58:22 +00:00
custom-background.php
custom-header.php
customize.php Docs: Use third-person singular verbs in various function descriptions, as per docblocks standards. 2023-06-14 14:08:18 +00:00
edit-comments.php General: Replace some instances of "blog" with "site" in documentation, translator comments, and user-facing text strings. 2023-06-19 18:27:27 +00:00
edit-form-advanced.php Help/About: Avoid extra redirections on HelpHub Links. 2023-02-23 11:06:19 +00:00
edit-form-blocks.php Editor: Fix layout of no-js state in site editor. 2023-07-10 21:22:21 +00:00
edit-form-comment.php I18N: Mark screen reader strings as such with translator comments. 2023-02-07 17:10:21 +00:00
edit-link-form.php Coding Standards: Use esc_url() to escape link URL value in wp-admin/edit-link-form.php. 2023-05-11 15:05:22 +00:00
edit-tag-form.php Networks and Sites: Officially remove global terms. 2022-09-20 02:51:09 +00:00
edit-tags.php Help/About: Use the new /documentation/ URLs for HelpHub links in WordPress Admin. 2023-02-23 10:38:21 +00:00
edit.php Help/About: Match icon and text in Help for bulk edit button. 2023-08-24 20:27:12 +00:00
erase-personal-data.php Help/About: Use the new /documentation/ URLs for HelpHub links in WordPress Admin. 2023-02-23 10:38:21 +00:00
export-personal-data.php Help/About: Use the new /documentation/ URLs for HelpHub links in WordPress Admin. 2023-02-23 10:38:21 +00:00
export.php Docs: Use third-person singular verbs in various function descriptions, as per docblocks standards. 2023-06-14 14:08:18 +00:00
freedoms.php Help/About: Updates to About page. 2023-07-24 23:39:22 +00:00
import.php Help/About: Use the new /documentation/ URLs for HelpHub links in WordPress Admin. 2023-02-23 10:38:21 +00:00
index.php Docs: Use third-person singular verbs in various function descriptions, as per docblocks standards. 2023-06-14 14:08:18 +00:00
install-helper.php Docs: Fix typo and improve DocBlock formatting in wp-admin/install-helper.php. 2022-11-20 14:10:15 +00:00
install.php Upgrade/Install: Add aria-describedby for input descriptions. 2023-06-25 18:44:23 +00:00
link-add.php
link-manager.php Help/About: Use the new /documentation/ URLs for HelpHub links in WordPress Admin. 2023-02-23 10:38:21 +00:00
link-parse-opml.php Docs: Use third-person singular verbs in various function descriptions, as per docblocks standards. 2023-06-14 14:08:18 +00:00
link.php
load-scripts.php
load-styles.php Database: Replace str_contains() and str_ends_with() usage in wpdb methods. 2023-06-23 12:17:24 +00:00
media-new.php Help/About: Use the new /documentation/ URLs for HelpHub links in WordPress Admin. 2023-02-23 10:38:21 +00:00
media-upload.php
media.php Media: Redirect deprecated wp-admin/media.php file. 2023-06-19 23:20:21 +00:00
menu-header.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 19:56:23 +00:00
menu.php Editor: Fix conditionals in Template Editing Mode. 2023-07-25 14:33:23 +00:00
moderation.php
ms-admin.php
ms-delete-site.php Text Changes: Improve the wording of the email sent to confirm site deletion. 2022-11-14 21:57:10 +00:00
ms-edit.php
ms-options.php
ms-sites.php
ms-themes.php
ms-upgrade-network.php
ms-users.php
my-sites.php Administration: Apply admin notice functions in multisite. 2023-08-17 21:03:19 +00:00
nav-menus.php Menus: Fix proximity of controls to Save and Delete menus. 2023-08-24 15:59:12 +00:00
network.php Help/About: Use the new /documentation/ URLs for HelpHub links in WordPress Admin. 2023-02-23 10:38:21 +00:00
options-discussion.php Help/About: Use the new /documentation/ URLs for HelpHub links in WordPress Admin. 2023-02-23 10:38:21 +00:00
options-general.php I18n: Move translator comments inside sprintf for tagline field description. 2023-07-11 05:55:20 +00:00
options-head.php
options-media.php Help/About: Use the new /documentation/ URLs for HelpHub links in WordPress Admin. 2023-02-23 10:38:21 +00:00
options-permalink.php Code Modernization: Replace usage of strpos() with str_starts_with(). 2023-05-02 15:45:22 +00:00
options-privacy.php Coding Standards: Use __DIR__ magic constant in wp-admin/options-privacy.php. 2023-04-27 13:14:23 +00:00
options-reading.php Help/About: Use the new /documentation/ URLs for HelpHub links in WordPress Admin. 2023-02-23 10:38:21 +00:00
options-writing.php Administration: Hide password in options/writing. 2023-06-22 00:32:21 +00:00
options.php Code Modernization: Replace usage of strpos() with str_contains(). 2023-06-22 14:36:26 +00:00
plugin-editor.php Code Modernization: Use str_ends_with() in a few more places. 2023-06-24 09:52:19 +00:00
plugin-install.php Help/About: Use the new /documentation/ URLs for HelpHub links in WordPress Admin. 2023-02-23 10:38:21 +00:00
plugins.php Help/About: Avoid extra redirections on HelpHub Links. 2023-02-23 11:06:19 +00:00
post-new.php
post.php Code Modernization: Replace usage of strpos() with str_contains(). 2023-06-22 14:36:26 +00:00
press-this.php
privacy-policy-guide.php Coding Standards: Replace include_once with require_once for required files. 2023-04-09 11:57:22 +00:00
privacy.php Help/About: Updates to About page. 2023-07-24 23:39:22 +00:00
profile.php
revision.php Revisions: Add missing escaping function for $post_edit_link in wp-admin/revision.php. 2023-08-24 09:32:21 +00:00
setup-config.php Upgrade/Install: Show/hide toggle on password fields. 2023-06-23 23:09:29 +00:00
site-editor.php Editor: Fix conditionals in Template Editing Mode. 2023-07-25 14:33:23 +00:00
site-health-info.php
site-health.php Docs: Use third-person singular verbs in various function descriptions, as per docblocks standards. 2023-06-14 14:08:18 +00:00
term.php
theme-editor.php Code Modernization: Use str_ends_with() in a few more places. 2023-06-24 09:52:19 +00:00
theme-install.php Help/About: Use the new /documentation/ URLs for HelpHub links in WordPress Admin. 2023-02-23 10:38:21 +00:00
themes.php General: add block theme previews. 2023-06-27 09:36:21 +00:00
tools.php Help/About: Use the new /documentation/ URLs for HelpHub links in WordPress Admin. 2023-02-23 10:38:21 +00:00
update-core.php Menus: Revert unintentional changes in [56449]. 2023-08-24 16:14:18 +00:00
update.php Coding Standards: Replace include_once with require_once for required files. 2023-04-09 11:57:22 +00:00
upgrade-functions.php
upgrade.php Upgrade/Install: Add missing escaping function for get_option( 'home' ) in upgrade.php. 2023-08-25 05:44:16 +00:00
upload.php Code Modernization: Replace usage of strpos() with str_contains(). 2023-06-22 14:36:26 +00:00
user-edit.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 19:56:23 +00:00
user-new.php Upgrade/Install: Show/hide toggle on password fields. 2023-06-23 23:09:29 +00:00
users.php Coding Standards: Use strict comparison in wp-admin/users.php. 2023-06-04 02:35:19 +00:00
widgets-form-blocks.php
widgets-form.php Code Modernization: Replace usage of substr() with str_starts_with() and str_ends_with(). 2023-06-22 14:57:24 +00:00
widgets.php