wp = $wp; $this->settings = $settings; } public function displayCustomFonts(): bool { $display = $this->wp->applyFilters('mailpoet_display_custom_fonts', $this->settings->get('3rd_party_libs.enabled') === '1'); return (bool)$display; } public function enqueueStyle() { if (!$this->displayCustomFonts()) { return; } // Due to a conflict with the WooCommerce Payments plugin, we need to load custom fonts in more requests. // When we load all custom fonts in one request, a form from WC Payments isn't displayed correctly. // It looks that the larger file size overloads the Stripe SDK. foreach (array_chunk(self::FONTS, self::FONT_CHUNK_SIZE) as $key => $fonts) { $this->wp->wpEnqueueStyle('mailpoet_custom_fonts_' . $key, $this->generateLink($fonts)); } } public function generateHtmlCustomFontLink(): string { if (!$this->displayCustomFonts()) { return ''; } $output = ''; foreach (array_chunk(self::FONTS, self::FONT_CHUNK_SIZE) as $key => $fonts) { $output .= sprintf('', $this->generateLink($fonts)); } return $output; } private function generateLink(array $fonts): string { $fonts = array_map(function ($fontName) { return urlencode($fontName) . ':400,400i,700,700i'; }, $fonts); $fonts = implode('|', $fonts); return 'https://fonts.googleapis.com/css?family=' . $fonts; } }