null, 'tablet' => null, 'mobile' => null ]; $fontStyle = $fontStyle ?? ''; $textTransform = $textTransform ?? ''; $textDecoration = $textDecoration ?? ''; $lineHeight = $lineHeight ?? ''; $letterSpace = $letterSpace ?? ''; $isEmptyFamily = !$isFamily || !$fontFamily || 'Default' === $fontFamily; $desktopFontSize = $fontSize['desktop'] ?? $fontSize; $tabletFontSize = $fontSize['tablet'] ?? $desktopFontSize; $mobileFontSize = $fontSize['mobile'] ?? $tabletFontSize; $tabBreakpoint = '@media only screen and (max-width: 1024px)'; $mobileBreakpoint = '@media only screen and (max-width: 640px)'; $styles = ($isEmptyFamily ? '' : "font-family: $fontFamily, $fontCategory;") . self::isValidCSS('font-weight', $fontWeight) . self::isValidCSS('font-size', self::checkUnit($desktopFontSize)) . self::isValidCSS('font-style', $fontStyle) . self::isValidCSS('text-transform', $textTransform) . self::isValidCSS('text-decoration', $textDecoration) . self::isValidCSS('line-height', $lineHeight) . self::isValidCSS('letter-spacing', $letterSpace); // Google font link if (!$fontVariant || $fontVariant === 400) { $linkQuery = ''; } elseif ($fontVariant === '400i') { $linkQuery = ':ital@1'; } elseif (strpos($fontVariant, '00i') !== false) { $linkQuery = ':ital,wght@1,' . str_replace('00i', '00', $fontVariant); } else { $linkQuery = ":wght@$fontVariant"; } $link = $isEmptyFamily ? '' : 'https://fonts.googleapis.com/css2?family=' . str_replace(' ', '+', $fontFamily) . $linkQuery . '&display=swap'; return [ 'googleFontLink' => (!$isUploadFont || $isEmptyFamily) ? '' : "@import url($link);", 'styles' => preg_replace('/\s+/', ' ', trim(" $selector { $styles } $tabBreakpoint { $selector { " . self::isValidCSS('font-size', self::checkUnit($tabletFontSize)) . " } } $mobileBreakpoint { $selector { " . self::isValidCSS('font-size', self::checkUnit($mobileFontSize)) . " } } ")) ]; } }