forked from mreishus/webfonts-jetpack-test
-
Notifications
You must be signed in to change notification settings - Fork 1
/
webfonts.php
152 lines (140 loc) · 4.36 KB
/
webfonts.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
<?php
/**
* Plugin Name: Fonts API Test Plugin
* Plugin URI: https://github.com/wordpress/gutenberg
* Description: Fonts API tester. Uses Jetpack's Google Fonts Provider package.
* Requires at least: 5.9
* Requires PHP: 5.6
* Version: 1.0.0-ironprogrammer
* Author: Gutenberg Team
*/
require_once __DIR__ . '/vendor/autoload.php';
const JETPACK_GOOGLE_FONTS_LIST = array(
'Albert Sans',
'Alegreya',
'Arvo',
'Bodoni Moda',
'Cabin',
'Chivo',
'Commissioner',
'Cormorant',
'Courier Prime',
'Crimson Pro',
'DM Mono',
//'DM Sans',
'Domine',
'EB Garamond',
'Epilogue',
'Figtree',
'Fira Sans',
'Fraunces',
//'IBM Plex Mono',
'IBM Plex Sans',
//'Inter',
'Josefin Sans',
'Jost',
'Libre Baskerville',
'Libre Franklin',
'Literata',
'Lora',
'Merriweather',
'Montserrat',
'Newsreader',
'Nunito',
'Open Sans',
'Overpass',
'Petrona',
'Piazzolla',
'Playfair Display',
'Plus Jakarta Sans',
'Poppins',
'Raleway',
'Roboto Slab',
'Roboto',
'Rubik',
'Sora',
'Source Sans Pro',
//'Source Serif Pro',
'Space Mono',
'Texturina',
'Work Sans',
);
add_action(
'after_setup_theme',
function() {
/*
if ( ! function_exists( 'wp_register_webfont_provider' ) || ! function_exists( 'wp_register_webfonts' ) ) {
return;
}
wp_register_webfont_provider( 'jetpack-google-fonts', '\Automattic\Jetpack\Fonts\Google_Fonts_Provider' );
*/
if ( ! function_exists( 'wp_register_font_provider' ) || ! function_exists( 'wp_register_fonts' ) ) {
return;
}
wp_register_font_provider( 'jetpack-google-fonts', '\Automattic\Jetpack\Fonts\Google_Fonts_Provider' );
foreach ( JETPACK_GOOGLE_FONTS_LIST as $font_family ) {
$fonts = array();
$font_italic = array(
'font-family' => $font_family,
'font-weight' => '100 900',
'font-style' => 'normal',
'font-display' => 'fallback',
'provider' => 'jetpack-google-fonts',
);
$font_normal = array(
'font-family' => $font_family,
'font-weight' => '100 900',
'font-style' => 'italic',
'font-display' => 'fallback',
'provider' => 'jetpack-google-fonts',
);
// New WP Fonts API format since Gutenberg 14.9 requires keyed array
// See https://github.com/Automattic/jetpack/issues/28063
// Remove conditional once WP 6.2 is the minimum version (must confirm this made it into 6.2)
if ( class_exists( 'WP_Fonts' ) ) {
$fonts = array(
$font_family => array( $font_normal, $font_italic ),
);
} elseif ( class_exists( 'WP_Webfonts' ) ) {
$fonts = array( $font_normal, $font_italic );
}
// New fonts register function since Gutenberg 15.0 or 15.1
// See https://github.com/Automattic/jetpack/issues/28063#issuecomment-1387090575
// Remove conditional once WP 6.2 is the minimum version (must confirm this made it into 6.2)
if ( function_exists( 'wp_register_fonts' ) ) {
wp_register_fonts( $fonts );
} else {
wp_register_webfonts( $fonts );
}
}
}
);
add_filter( 'wp_resource_hints', '\Automattic\Jetpack\Fonts\Utils::font_source_resource_hint', 10, 2 );
add_filter( 'pre_render_block', '\Automattic\Jetpack\Fonts\Introspectors\Blocks::enqueue_block_fonts', 10, 2 );
add_action( 'init', '\Automattic\Jetpack\Fonts\Introspectors\Global_Styles::enqueue_global_styles_fonts', 22 );
if ( ! function_exists( 'gutenberg_get_global_styles' ) ) {
/**
* Polyfill: Jetpack's package uses the Gutenberg function instead of
* the WordPress Core function. The function was removed from Gutenberg
* when `lib/compat/wordpress-6.0/` was removed.
*
* Function to get the styles resulting of merging core, theme, and user data.
*
* @param array $path Path to the specific style to retrieve. Optional.
* If empty, will return all styles.
* @param array $context {
* Metadata to know where to retrieve the $path from. Optional.
*
* @type string $block_name Which block to retrieve the styles from.
* If empty, it'll return the styles for the global context.
* @type string $origin Which origin to take data from.
* Valid values are 'all' (core, theme, and user) or 'base' (core and theme).
* If empty or unknown, 'all' is used.
* }
*
* @return array The styles to retrieve.
*/
function gutenberg_get_global_styles( $path = array(), $context = array() ) {
return wp_get_global_styles( $path, $context );
}
}