1,
'block' => 1,
'swap' => 1,
'fallback' => 1,
'optional' => 1,
];
/**
* Flag for whether google fonts have been detected (Default: true)
*
* @since 3.8.8
*
* @var bool
*/
protected $has_google_fonts = true;
/**
* Optimize Google Fonts
*
* @param string $html HTML content.
*
* @return string
*/
abstract public function optimize( $html): string;
/**
* Check whether the optimizer has found google fonts on the page.
*
* @since 3.8.8
*
* @return bool Will default to true when extending classes have not set via the optimize() method.
*/
public function has_google_fonts() {
return $this->has_google_fonts;
}
/**
* Returns font with display value.
*
* @since 3.8 Moved here from GoogleFonts\Combine::class
* @since 3.5.1
*
* @param array $font Array containing font tag and matches.
*
* @return string Google Font tag with display param.
*/
protected function get_font_with_display( array $font ) {
$font_url = html_entity_decode( $font['url'] );
$query = wp_parse_url( $font_url, PHP_URL_QUERY );
if ( empty( $query ) ) {
return $font[0];
}
$parsed_font = wp_parse_args( $query );
$font_url = ! empty( $parsed_font['display'] )
? str_replace( "&display={$parsed_font['display']}", '&display=swap', $font_url )
: "{$font_url}&display=swap";
return str_replace( $font['url'], esc_url( $font_url ), $font[0] );
}
/**
* Get the font display value.
*
* @since 3.8 Moved here from GoogleFonts\Combine::class
* @since 3.5.1
*
* @return string font display value.
*/
protected function get_font_display_value(): string {
/**
* Filters the combined Google Fonts display parameter value
*
* @since 3.8 Moved here from GoogleFonts\Combine::class
* @since 3.3.5
*
* @param string $display Display value. Can be either auto, block, swap, fallback or optional.
*/
$display = apply_filters( 'rocket_combined_google_fonts_display', 'swap' );
if ( ! is_string( $display ) ) {
return 'swap';
}
return isset( $this->display_values[ $display ] ) ? $display : 'swap';
}
/**
* Returns the optimized markup for Google Fonts
*
* @since 3.9.1
*
* @param string $url Google Fonts URL.
*
* @return string
*/
protected function get_optimized_markup( string $url ): string {
return sprintf(
'', // phpcs:ignore WordPress.WP.EnqueuedResources.NonEnqueuedStylesheet
$url
);
}
}