font management fixes
This commit is contained in:
parent
847ed92c23
commit
d5ecb31dad
8 changed files with 728 additions and 99 deletions
|
|
@ -38,11 +38,13 @@ class MLF_Font_Search {
|
|||
const METADATA_URL = 'https://fonts.google.com/metadata/fonts';
|
||||
|
||||
/**
|
||||
* Maximum metadata response size (2MB).
|
||||
* Maximum metadata response size (10MB).
|
||||
*
|
||||
* Google Fonts metadata for 1500+ fonts can be 5-8MB.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const MAX_METADATA_SIZE = 2 * 1024 * 1024;
|
||||
const MAX_METADATA_SIZE = 10 * 1024 * 1024;
|
||||
|
||||
/**
|
||||
* Rate limiter instance.
|
||||
|
|
@ -165,10 +167,12 @@ class MLF_Font_Search {
|
|||
$fonts = [];
|
||||
foreach ($data['familyMetadataList'] as $font) {
|
||||
$fonts[] = [
|
||||
'family' => $font['family'],
|
||||
'category' => $font['category'] ?? 'sans-serif',
|
||||
'variants' => $font['fonts'] ?? [],
|
||||
'subsets' => $font['subsets'] ?? ['latin'],
|
||||
'family' => $font['family'],
|
||||
'category' => $font['category'] ?? 'sans-serif',
|
||||
'variants' => $font['fonts'] ?? [],
|
||||
'subsets' => $font['subsets'] ?? ['latin'],
|
||||
'version' => $font['version'] ?? '',
|
||||
'lastModified' => $font['lastModified'] ?? '',
|
||||
];
|
||||
}
|
||||
|
||||
|
|
@ -253,6 +257,8 @@ class MLF_Font_Search {
|
|||
'has_variable' => $has_variable,
|
||||
'has_italic' => $has_italic,
|
||||
'weights' => $weights,
|
||||
'version' => $font['version'] ?? '',
|
||||
'lastModified' => $font['lastModified'] ?? '',
|
||||
];
|
||||
}
|
||||
|
||||
|
|
@ -262,4 +268,31 @@ class MLF_Font_Search {
|
|||
public function clear_cache() {
|
||||
delete_transient(self::CACHE_KEY);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get version info for a specific font.
|
||||
*
|
||||
* @param string $font_family Font family name.
|
||||
* @return array|null Version info or null if not found.
|
||||
*/
|
||||
public function get_font_version($font_family) {
|
||||
$fonts = $this->get_fonts_metadata();
|
||||
|
||||
if (is_wp_error($fonts)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$font_family_lower = strtolower($font_family);
|
||||
|
||||
foreach ($fonts as $font) {
|
||||
if (strtolower($font['family']) === $font_family_lower) {
|
||||
return [
|
||||
'version' => $font['version'] ?? '',
|
||||
'lastModified' => $font['lastModified'] ?? '',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue