PluginProbe
Twentig Supercharged Block Editor – Blocks, Patterns, Starter Sites, Portfolio / 0.6
Twentig Supercharged Block Editor – Blocks, Patterns, Starter Sites, Portfolio v0.6
2.0.5 2.0.4 2.0.3 2.0.2 trunk 0.0.1 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 0.9.1 0.9.2 1.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 All 88 releases
twentig / inc / font.php

font.php in Twentig Supercharged Block Editor – Blocks, Patterns, Starter Sites, Portfolio 0.6, at inc/font.php

588 lines 15.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Returns custom Google fonts URL based on Customizer settings.
5 */
6 function twentig_fonts_url() {
7 $fonts_url = '';
8 $fonts = [];
9 $font_sets = [];
10 $body_font = get_theme_mod( 'twentig_body_font' );
11 $heading_font = get_theme_mod( 'twentig_heading_font' );
12 $heading_font_weight = get_theme_mod( 'twentig_heading_font_weight', 700 );
13 $menu_font = get_theme_mod( 'twentig_menu_font' );
14 $menu_font_weight = get_theme_mod( 'twentig_menu_font_weight' );
15 $secondary_font = get_theme_mod( 'twentig_secondary_font' );
16
17 if ( $body_font && 'sans-serif' !== $body_font ) {
18 $fonts[ $body_font ] = [ '400', '400i', '700' ];
19 if ( 'body' === $menu_font ) {
20 $fonts[ $body_font ][] = $menu_font_weight;
21 }
22 }
23
24 if ( $heading_font && 'sans-serif' !== $heading_font ) {
25 if ( ! isset( $fonts[ $heading_font ] ) ) {
26 $fonts[ $heading_font ] = [];
27 }
28 $fonts[ $heading_font ][] = $heading_font_weight;
29
30 if ( 'heading' === $menu_font ) {
31 $fonts[ $heading_font ][] = $menu_font_weight;
32 }
33
34 if ( ! in_array( '400', $fonts[ $heading_font ] ) ) {
35 $fonts[ $heading_font ][] = '400';
36 }
37
38 if ( 'heading' === $secondary_font ) {
39 if ( ! in_array( '600', $fonts[ $heading_font ] ) && ! in_array( '700', $fonts[ $heading_font ] ) ) {
40 $fonts[ $heading_font ][] = '700';
41 }
42 }
43 }
44
45 if ( ! empty( $fonts ) ) {
46
47 foreach ( $fonts as $font_family => $variants ) {
48 $variants = array_unique( $variants );
49 $font_sets[] = $font_family . ':' . implode( ',', $variants );
50 }
51
52 $query_args = array(
53 'family' => urlencode( implode( '|', $font_sets ) ),
54 'subset' => urlencode( 'latin,latin-ext' ),
55 'display' => urlencode( 'fallback' ),
56 );
57 $fonts_url = add_query_arg( $query_args, 'https://fonts.googleapis.com/css' );
58 }
59
60 return apply_filters( 'twentig_google_fonts_url', esc_url_raw( $fonts_url ) );
61 }
62
63
64 /**
65 * Returns font choices for body.
66 */
67 function twentig_get_body_fonts() {
68 $font_options = array(
69 '' => __( 'Default Theme Font', 'twentig' ),
70 'sans-serif' => __( 'UI System Font', 'twentig' ),
71 );
72
73 $google_font_options = twentig_get_fonts();
74 foreach ( $google_font_options as $font ) {
75 if ( isset( $font[ 'bodyText' ] ) && ! $font['bodyText'] ) {
76 continue;
77 }
78 $font_options[ $font['family'] ] = $font['family'];
79 }
80 return $font_options;
81 }
82
83 /**
84 * Returns font choices for headings.
85 */
86 function twentig_get_heading_fonts() {
87 $font_options = array(
88 '' => __( 'Default Theme Font', 'twentig' ),
89 'sans-serif' => __( 'UI System Font', 'twentig' ),
90 );
91
92 $google_font_options = twentig_get_fonts();
93 foreach ( $google_font_options as $font ) {
94 if ( isset( $font[ 'headingText' ] ) && ! $font['headingText'] ) {
95 continue;
96 }
97 $font_options[ $font['family'] ] = $font['family'];
98 }
99 return $font_options;
100 }
101
102 /**
103 * Returns font stack for a given font.
104 */
105 function twentig_get_font_stack( $font_name ) {
106 if ( 'sans-serif' === $font_name ) {
107 return '-apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Helvetica, sans-serif';
108 }
109 return "'" . $font_name . "', ". twentig_get_font_fallback( $font_name );
110 }
111
112 /**
113 * Returns font fallback for a given font.
114 */
115 function twentig_get_font_fallback( $font_name ) {
116 $fonts = twentig_get_fonts();
117 foreach ( $fonts as $font ) {
118 if ( $font_name == $font['family'] ) {
119 return $font['category'];
120 }
121 }
122 return 'sans-serif';
123 }
124
125 /**
126 * Returns all available fonts.
127 */
128 function twentig_get_fonts() {
129
130 $fonts = array(
131 array(
132 'family' => 'Alegreya',
133 'category' => 'serif',
134 'variants' => array( '400', '500', '700', '800', '900' ),
135 ),
136 array(
137 'family' => 'Alegreya Sans',
138 'category' => 'sans-serif',
139 'variants' => array( '400', '500', '700', '800', '900' ),
140 ),
141 array(
142 'family' => 'Archivo Narrow',
143 'category' => 'sans-serif',
144 'bodyText' => false,
145 'variants' => array( '400', '500', '600', '700' ),
146 ),
147 array(
148 'family' => 'Arimo',
149 'category' => 'sans-serif',
150 'variants' => array( '400', '700' ),
151 ),
152 array(
153 'family' => 'Arvo',
154 'category' => 'serif',
155 'variants' => array( '400', '700' ),
156 ),
157 array(
158 'family' => 'Asap',
159 'category' => 'sans-serif',
160 'variants' => array( '400', '500', '600', '700' ),
161 ),
162 array(
163 'family' => 'Asap Condensed',
164 'category' => 'sans-serif',
165 'bodyText' => false,
166 'variants' => array( '400', '500', '600', '700' ),
167 ),
168 array(
169 'family' => 'Barlow',
170 'category' => 'sans-serif',
171 'variants' => array( '400', '500', '600', '700', '800', '900' ),
172 ),
173 array(
174 'family' => 'Barlow Condensed',
175 'category' => 'sans-serif',
176 'bodyText' => false,
177 'variants' => array( '400', '500', '600', '700', '800', '900' ),
178 ),
179 array(
180 'family' => 'BioRhyme',
181 'category' => 'serif',
182 'bodyText' => false,
183 'variants' => array( '400', '700', '800' ),
184 ),
185 array(
186 'family' => 'Bitter',
187 'category' => 'serif',
188 'variants' => array( '400', '700' ),
189 ),
190 array(
191 'family' => 'Cabin',
192 'category' => 'sans-serif',
193 'variants' => array( '400', '500', '600', '700' ),
194 ),
195 array(
196 'family' => 'Cabin Condensed',
197 'category' => 'sans-serif',
198 'bodyText' => false,
199 'variants' => array( '400', '500', '600', '700' ),
200 ),
201 array(
202 'family' => 'Cardo',
203 'category' => 'serif',
204 'variants' => array( '400', '700' ),
205 ),
206 array(
207 'family' => 'Chivo',
208 'category' => 'sans-serif',
209 'variants' => array( '400', '700', '900' ),
210 ),
211 array(
212 'family' => 'Comfortaa',
213 'category' => 'cursive',
214 'bodyText' => false,
215 'variants' => array( '400', '700' ),
216 ),
217 array(
218 'family' => 'Cormorant Garamond',
219 'category' => 'serif',
220 'bodyText' => false,
221 'variants' => array( '400', '500', '600', '700' ),
222 ),
223 array(
224 'family' => 'Cousine',
225 'category' => 'monospace',
226 'variants' => array( '400', '700' ),
227 ),
228 array(
229 'family' => 'Crimson Pro',
230 'category' => 'serif',
231 'variants' => array( '400', '500', '600', '700', '800', '900' ),
232 ),
233 array(
234 'family' => 'Domine',
235 'category' => 'serif',
236 'bodyText' => false,
237 'variants' => array( '400', '700' ),
238 ),
239 array(
240 'family' => 'Dosis',
241 'category' => 'sans-serif',
242 'bodyText' => false,
243 'variants' => array( '400', '500', '600', '700', '800' ),
244 ),
245 array(
246 'family' => 'EB Garamond',
247 'category' => 'serif',
248 'variants' => array( '400', '500', '600', '700', '800' ),
249 ),
250 array(
251 'family' => 'Eczar',
252 'category' => 'serif',
253 'bodyText' => false,
254 'variants' => array( '400', '500', '600', '700', '800' ),
255 ),
256 array(
257 'family' => 'Exo 2',
258 'category' => 'sans-serif',
259 'variants' => array( '400', '500', '600', '700', '800', '900' ),
260 ),
261 array(
262 'family' => 'Fira Sans',
263 'category' => 'sans-serif',
264 'variants' => array( '400', '500', '600', '700', '800', '900' ),
265 ),
266 array(
267 'family' => 'Fira Sans Condensed',
268 'category' => 'sans-serif',
269 'bodyText' => false,
270 'variants' => array( '400', '500', '600', '700', '800', '900' ),
271 ),
272 array(
273 'family' => 'Gentium Basic',
274 'category' => 'serif',
275 'variants' => array( '400', '700' ),
276 ),
277 array(
278 'family' => 'IBM Plex Mono',
279 'category' => 'monospace',
280 'variants' => array( '400', '500', '600', '700' ),
281 ),
282 array(
283 'family' => 'IBM Plex Sans',
284 'category' => 'sans-serif',
285 'variants' => array( '400', '500', '600', '700' ),
286 ),
287 array(
288 'family' => 'IBM Plex Sans Condensed',
289 'category' => 'sans-serif',
290 'bodyText' => false,
291 'variants' => array( '400', '500', '600', '700' ),
292 ),
293 array(
294 'family' => 'IBM Plex Serif',
295 'category' => 'serif',
296 'variants' => array( '400', '500', '600', '700' ),
297 ),
298 array(
299 'family' => 'Inconsolata',
300 'category' => 'monospace',
301 'bodyText' => false,
302 'variants' => array( '400', '700' ),
303 ),
304 array(
305 'family' => 'Inknut Antiqua',
306 'category' => 'serif',
307 'bodyText' => false,
308 'variants' => array( '400', '500', '600', '700', '800', '900' ),
309 ),
310 array(
311 'family' => 'Josefin Sans',
312 'category' => 'sans-serif',
313 'variants' => array( '400', '600', '700' ),
314 ),
315 array(
316 'family' => 'Josefin Slab',
317 'category' => 'serif',
318 'variants' => array( '400', '600', '700' ),
319 ),
320 array(
321 'family' => 'Karla',
322 'category' => 'sans-serif',
323 'variants' => array( '400', '700' ),
324 ),
325 array(
326 'family' => 'Lato',
327 'category' => 'sans-serif',
328 'variants' => array( '400', '700', '900' ),
329 ),
330 array(
331 'family' => 'Lekton',
332 'category' => 'sans-serif',
333 'variants' => array( '400', '700' ),
334 ),
335 array(
336 'family' => 'Libre Baskerville',
337 'category' => 'serif',
338 'variants' => array( '400', '700' ),
339 ),
340 array(
341 'family' => 'Libre Franklin',
342 'category' => 'sans-serif',
343 'variants' => array( '400', '500', '600', '700', '800', '900' ),
344 ),
345 array(
346 'family' => 'Lora',
347 'category' => 'serif',
348 'variants' => array( '400', '700' ),
349 ),
350 array(
351 'family' => 'Merriweather',
352 'category' => 'serif',
353 'variants' => array( '400', '700', '900' ),
354 ),
355 array(
356 'family' => 'Merriweather Sans',
357 'category' => 'sans-serif',
358 'variants' => array( '400', '700', '800' ),
359 ),
360 array(
361 'family' => 'Montserrat',
362 'category' => 'sans-serif',
363 'variants' => array( '400', '500', '600', '700', '800', '900' ),
364 ),
365 array(
366 'family' => 'Muli',
367 'category' => 'sans-serif',
368 'variants' => array( '400', '600', '700', '800', '900' ),
369 ),
370 array(
371 'family' => 'Neuton',
372 'category' => 'serif',
373 'variants' => array( '400', '700', '800' ),
374 ),
375 array(
376 'family' => 'Noto Sans',
377 'category' => 'sans-serif',
378 'variants' => array( '400', '700' ),
379 ),
380 array(
381 'family' => 'Noto Serif',
382 'category' => 'serif',
383 'variants' => array( '400', '700' ),
384 ),
385 array(
386 'family' => 'Nunito',
387 'category' => 'sans-serif',
388 'variants' => array( '400', '600', '700', '800', '900' ),
389 ),
390 array(
391 'family' => 'Nunito Sans',
392 'category' => 'sans-serif',
393 'variants' => array( '400', '600', '700', '800', '900' ),
394 ),
395 array(
396 'family' => 'Old Standard TT',
397 'category' => 'serif',
398 'bodyText' => false,
399 'variants' => array( '400', '700' ),
400 ),
401 array(
402 'family' => 'Open Sans',
403 'category' => 'sans-serif',
404 'variants' => array( '400', '600', '700', '800' ),
405 ),
406 array(
407 'family' => 'Oswald',
408 'category' => 'sans-serif',
409 'bodyText' => false,
410 'variants' => array( '400', '500', '600', '700' ),
411 ),
412 array(
413 'family' => 'Overpass',
414 'category' => 'sans-serif',
415 'variants' => array( '400', '600', '700', '800', '900' ),
416 ),
417 array(
418 'family' => 'Playfair Display',
419 'category' => 'serif',
420 'bodyText' => false,
421 'variants' => array( '400', '700', '900' ),
422 ),
423 array(
424 'family' => 'Poppins',
425 'category' => 'sans-serif',
426 'variants' => array( '400', '500', '600', '700', '800', '900' ),
427 ),
428 array(
429 'family' => 'Proza Libre',
430 'category' => 'sans-serif',
431 'variants' => array( '400', '500', '600', '700', '800' ),
432 ),
433 array(
434 'family' => 'PT Sans',
435 'category' => 'sans-serif',
436 'variants' => array( '400', '700' ),
437 ),
438 array(
439 'family' => 'PT Sans Narrow',
440 'category' => 'sans-serif',
441 'bodyText' => false,
442 'variants' => array( '400', '700' ),
443 ),
444 array(
445 'family' => 'PT Serif',
446 'category' => 'serif',
447 'variants' => array( '400', '700' ),
448 ),
449 array(
450 'family' => 'Quattrocento',
451 'category' => 'serif',
452 'bodyText' => false,
453 'variants' => array( '400', '700' ),
454 ),
455 array(
456 'family' => 'Quattrocento Sans',
457 'category' => 'sans-serif',
458 'variants' => array( '400', '700' ),
459 ),
460 array(
461 'family' => 'Rajdhani',
462 'category' => 'sans-serif',
463 'bodyText' => false,
464 'variants' => array( '400', '500', '600', '700' ),
465 ),
466 array(
467 'family' => 'Raleway',
468 'category' => 'sans-serif',
469 'variants' => array( '400', '500', '600', '700', '800', '900' ),
470 ),
471 array(
472 'family' => 'Roboto',
473 'category' => 'sans-serif',
474 'variants' => array( '400', '500', '700', '900' ),
475 ),
476 array(
477 'family' => 'Roboto Condensed',
478 'category' => 'sans-serif',
479 'bodyText' => false,
480 'variants' => array( '400', '700' ),
481 ),
482 array(
483 'family' => 'Roboto Mono',
484 'category' => 'monospace',
485 'variants' => array( '400', '500', '700' ),
486 ),
487 array(
488 'family' => 'Roboto Slab',
489 'category' => 'serif',
490 'bodyText' => false,
491 'variants' => array( '400', '700' ),
492 ),
493 array(
494 'family' => 'Rubik',
495 'category' => 'sans-serif',
496 'variants' => array( '400', '500', '700', '900' ),
497 ),
498 array(
499 'family' => 'Source Code Pro',
500 'category' => 'monospace',
501 'bodyText' => false,
502 'variants' => array( '400', '500', '600', '700', '900' ),
503 ),
504 array(
505 'family' => 'Source Sans Pro',
506 'category' => 'sans-serif',
507 'variants' => array( '400', '600', '700', '900' ),
508 ),
509 array(
510 'family' => 'Source Serif Pro',
511 'category' => 'serif',
512 'bodyText' => false,
513 'variants' => array( '400', '600', '700' ),
514 ),
515 array(
516 'family' => 'Space Mono',
517 'category' => 'monospace',
518 'variants' => array( '400', '700' ),
519 ),
520 array(
521 'family' => 'Spectral',
522 'category' => 'serif',
523 'variants' => array( '400', '500', '600', '700', '800' ),
524 ),
525 array(
526 'family' => 'Taviraj',
527 'category' => 'serif',
528 'variants' => array( '400', '500', '600', '700', '800', '900' ),
529 ),
530 array(
531 'family' => 'Tinos',
532 'category' => 'serif',
533 'variants' => array( '400', '700' ),
534 ),
535 array(
536 'family' => 'Titillium Web',
537 'category' => 'sans-serif',
538 'variants' => array( '400', '600', '700', '900' ),
539 ),
540 array(
541 'family' => 'Ubuntu',
542 'category' => 'sans-serif',
543 'variants' => array( '400', '500', '700' ),
544 ),
545 array(
546 'family' => 'Vollkorn',
547 'category' => 'serif',
548 'variants' => array( '400', '600', '700', '900' ),
549 ),
550 array(
551 'family' => 'Work Sans',
552 'category' => 'sans-serif',
553 'bodyText' => false,
554 'variants' => array( '400', '500', '600', '700', '800', '900' ),
555 ),
556 );
557
558 return apply_filters( 'twentig_fonts', $fonts );
559 }
560
561 /**
562 * Returns font weight choices.
563 */
564 function twentig_get_font_styles() {
565
566 $list_font_weights = array(
567 '' => __( 'Default', 'twentig' ),
568 '300' => __( 'Light 300', 'twentig' ),
569 '400' => __( 'Regular 400', 'twentig' ),
570 '500' => __( 'Medium 500', 'twentig' ),
571 '600' => __( 'Semi-Bold 600', 'twentig' ),
572 '700' => __( 'Bold 700', 'twentig' ),
573 '800' => __( 'Extra-Bold 800', 'twentig' ),
574 '900' => __( 'Black 900', 'twentig' ),
575 );
576 return $list_font_weights;
577 }
578
579 /**
580 * Returns default body font size. Back compat for early versions.
581 */
582 function twentig_get_default_body_font_size() {
583 if ( 'sans-serif' == get_theme_mod( 'twentig_body_font' ) && '' == get_theme_mod( 'twentig_body_font_size' ) ) {
584 return 'medium';
585 }
586 return 'large';
587 }
588