File "fonts.php"

Full Path: /home/pumpbmko/public_html/wp-content/plugins/gutenberg/lib/compat/wordpress-6.4/fonts/fonts.php
File size: 3.22 KB
MIME-type: text/x-php
Charset: utf-8

<?php
/**
 * Fonts functions.
 *
 * @package    WordPress
 * @subpackage Fonts
 * @since      6.4.0
 *
 * @core-merge: this file is located in `wp-includes/fonts.php`. It will contain Font Face and Font Library functions.
 */

if ( ! function_exists( 'wp_print_font_faces' ) ) {
	// @core-merge: will merge into Core's `wp-includes/default-filters.php` file.
	add_action( 'wp_head', 'wp_print_font_faces', 50 );
	// @core-merge: will merge into Core's `wp-admin/includes/admin-filters.php.` file.
	add_action( 'admin_print_styles', 'wp_print_font_faces', 50 );

	/**
	 * Generates and prints font-face styles for given fonts or theme.json fonts.
	 *
	 * @since 6.4.0
	 *
	 * @param array[][] $fonts {
	 *     Optional. The font-families and their font variations. Default empty array.
	 *
	 *     @type string $font-family => array[] $variations {
	 *         Optional. An associated array of font variations for this font-family.
	 *         Each variation has the following structure.
	 *
	 *         @type array $font_variation {
	 *             @type string          $font-family             The font-family property.
	 *             @type string|string[] $src                     The URL(s) to each resource containing the font data.
	 *             @type string          $font_style              Optional. The font-style property. Default 'normal'.
	 *             @type string          $font-weight             Optional. The font-weight property. Default '400'.
	 *             @type string          $font-display            Optional. The font-display property. Default 'fallback'.
	 *             @type string          $ascent-override         Optional. The ascent-override property.
	 *             @type string          $descent-override        Optional. The descent-override property.
	 *             @type string          $font-stretch            Optional. The font-stretch property.
	 *             @type string          $font-variant            Optional. The font-variant property.
	 *             @type string          $font-feature-settings   Optional. The font-feature-settings property.
	 *             @type string          $font-variation-settings Optional. The font-variation-settings property.
	 *             @type string          $line-gap-override       Optional. The line-gap-override property.
	 *             @type string          $size-adjust             Optional. The size-adjust property.
	 *             @type string          $unicode-range           Optional. The unicode-range property.
	 *         }
	 *     }
	 * }
	 */
	function wp_print_font_faces( $fonts = array() ) {

		if ( empty( $fonts ) ) {
			$fonts = WP_Font_Face_Resolver::get_fonts_from_theme_json();
		}

		if ( empty( $fonts ) ) {
			return;
		}

		$wp_font_face = new WP_Font_Face();
		$wp_font_face->generate_and_print( $fonts );
	}
}

// @core-merge: do not merge this code into Core.
add_filter(
	'block_editor_settings_all',
	static function ( $settings ) {
		ob_start();
		// @core-merge: add only this line into Core's `_wp_get_iframed_editor_assets()` function after `wp_print_styles()`.
		wp_print_font_faces();
		$styles = ob_get_clean();

		// Add the font-face styles to iframed editor assets.
		$settings['__unstableResolvedAssets']['styles'] .= $styles;
		return $settings;
	},
	11
);