'',
'font-style' => 'normal',
'font-weight' => '400',
'font-display' => 'fallback',
);
/**
* Valid font-face property names.
*
* @since 6.4.0
*
* @var string[]
*/
private $valid_font_face_properties = array(
'ascent-override',
'descent-override',
'font-display',
'font-family',
'font-stretch',
'font-style',
'font-weight',
'font-variant',
'font-feature-settings',
'font-variation-settings',
'line-gap-override',
'size-adjust',
'src',
'unicode-range',
);
/**
* Valid font-display values.
*
* @since 6.4.0
*
* @var string[]
*/
private $valid_font_display = array( 'auto', 'block', 'fallback', 'swap', 'optional' );
/**
* Array of font-face style tag's attribute(s)
* where the key is the attribute name and the
* value is its value.
*
* @since 6.4.0
*
* @var string[]
*/
private $style_tag_attrs = array();
/**
* Creates and initializes an instance of WP_Font_Face.
*
* @since 6.4.0
*/
public function __construct() {
if (
function_exists( 'is_admin' ) && ! is_admin()
&&
function_exists( 'current_theme_supports' ) && ! current_theme_supports( 'html5', 'style' )
) {
$this->style_tag_attrs = array( 'type' => 'text/css' );
}
}
/**
* Generates and prints the `@font-face` styles for the given fonts.
*
* @since 6.4.0
*
* @param array[][] $fonts Optional. The font-families and their font variations.
* See {@see wp_print_font_faces()} for the supported fields.
* Default empty array.
*/
public function generate_and_print( array $fonts ) {
$fonts = $this->validate_fonts( $fonts );
// Bail out if there are no fonts are given to process.
if ( empty( $fonts ) ) {
return;
}
$css = $this->get_css( $fonts );
/*
* The font-face CSS is contained within and open a