PluginProbe
Twentig Supercharged Block Editor – Blocks, Patterns, Starter Sites, Portfolio / 0.8
Twentig Supercharged Block Editor – Blocks, Patterns, Starter Sites, Portfolio v0.8
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.8, at inc/font.php

649 lines 16.7 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' => 'Arya',
159 'category' => 'sans-serif',
160 'bodyText' => false,
161 'variants' => array( '400', '700' ),
162 ),
163 array(
164 'family' => 'Asap',
165 'category' => 'sans-serif',
166 'variants' => array( '400', '500', '600', '700' ),
167 ),
168 array(
169 'family' => 'Asap Condensed',
170 'category' => 'sans-serif',
171 'bodyText' => false,
172 'variants' => array( '400', '500', '600', '700' ),
173 ),
174 array(
175 'family' => 'B612',
176 'category' => 'sans-serif',
177 'variants' => array( '400', '700' ),
178 ),
179 array(
180 'family' => 'Barlow',
181 'category' => 'sans-serif',
182 'variants' => array( '400', '500', '600', '700', '800', '900' ),
183 ),
184 array(
185 'family' => 'Barlow Condensed',
186 'category' => 'sans-serif',
187 'bodyText' => false,
188 'variants' => array( '400', '500', '600', '700', '800', '900' ),
189 ),
190 array(
191 'family' => 'Big Shoulders Display',
192 'category' => 'sans-serif',
193 'bodyText' => false,
194 'variants' => array( '400', '500', '600', '700', '800', '900' ),
195 ),
196 array(
197 'family' => 'BioRhyme',
198 'category' => 'serif',
199 'bodyText' => false,
200 'variants' => array( '400', '700', '800' ),
201 ),
202 array(
203 'family' => 'Bitter',
204 'category' => 'serif',
205 'variants' => array( '400', '700' ),
206 ),
207 array(
208 'family' => 'Cabin',
209 'category' => 'sans-serif',
210 'variants' => array( '400', '500', '600', '700' ),
211 ),
212 array(
213 'family' => 'Cabin Condensed',
214 'category' => 'sans-serif',
215 'bodyText' => false,
216 'variants' => array( '400', '500', '600', '700' ),
217 ),
218 array(
219 'family' => 'Cardo',
220 'category' => 'serif',
221 'variants' => array( '400', '700' ),
222 ),
223 array(
224 'family' => 'Chivo',
225 'category' => 'sans-serif',
226 'variants' => array( '400', '700', '900' ),
227 ),
228 array(
229 'family' => 'Comfortaa',
230 'category' => 'cursive',
231 'bodyText' => false,
232 'variants' => array( '400', '700' ),
233 ),
234 array(
235 'family' => 'Cormorant Garamond',
236 'category' => 'serif',
237 'bodyText' => false,
238 'variants' => array( '400', '500', '600', '700' ),
239 ),
240 array(
241 'family' => 'Cousine',
242 'category' => 'monospace',
243 'variants' => array( '400', '700' ),
244 ),
245 array(
246 'family' => 'Crimson Pro',
247 'category' => 'serif',
248 'variants' => array( '400', '500', '600', '700', '800', '900' ),
249 ),
250 array(
251 'family' => 'DM Sans',
252 'category' => 'sans-serif',
253 'variants' => array( '400', '500', '700' ),
254 ),
255 array(
256 'family' => 'Domine',
257 'category' => 'serif',
258 'bodyText' => false,
259 'variants' => array( '400', '700' ),
260 ),
261 array(
262 'family' => 'Dosis',
263 'category' => 'sans-serif',
264 'bodyText' => false,
265 'variants' => array( '400', '500', '600', '700', '800' ),
266 ),
267 array(
268 'family' => 'EB Garamond',
269 'category' => 'serif',
270 'variants' => array( '400', '500', '600', '700', '800' ),
271 ),
272 array(
273 'family' => 'Eczar',
274 'category' => 'serif',
275 'bodyText' => false,
276 'variants' => array( '400', '500', '600', '700', '800' ),
277 ),
278 array(
279 'family' => 'Exo 2',
280 'category' => 'sans-serif',
281 'variants' => array( '400', '500', '600', '700', '800', '900' ),
282 ),
283 array(
284 'family' => 'Fira Sans',
285 'category' => 'sans-serif',
286 'variants' => array( '400', '500', '600', '700', '800', '900' ),
287 ),
288 array(
289 'family' => 'Fira Sans Condensed',
290 'category' => 'sans-serif',
291 'bodyText' => false,
292 'variants' => array( '400', '500', '600', '700', '800', '900' ),
293 ),
294 array(
295 'family' => 'Gentium Basic',
296 'category' => 'serif',
297 'variants' => array( '400', '700' ),
298 ),
299 array(
300 'family' => 'IBM Plex Mono',
301 'category' => 'monospace',
302 'variants' => array( '400', '500', '600', '700' ),
303 ),
304 array(
305 'family' => 'IBM Plex Sans',
306 'category' => 'sans-serif',
307 'variants' => array( '400', '500', '600', '700' ),
308 ),
309 array(
310 'family' => 'IBM Plex Sans Condensed',
311 'category' => 'sans-serif',
312 'bodyText' => false,
313 'variants' => array( '400', '500', '600', '700' ),
314 ),
315 array(
316 'family' => 'IBM Plex Serif',
317 'category' => 'serif',
318 'variants' => array( '400', '500', '600', '700' ),
319 ),
320 array(
321 'family' => 'Inconsolata',
322 'category' => 'monospace',
323 'bodyText' => false,
324 'variants' => array( '400', '700' ),
325 ),
326 array(
327 'family' => 'Inknut Antiqua',
328 'category' => 'serif',
329 'bodyText' => false,
330 'variants' => array( '400', '500', '600', '700', '800', '900' ),
331 ),
332 array(
333 'family' => 'Inria Serif',
334 'category' => 'serif',
335 'variants' => array( '400', '700' ),
336 ),
337 array(
338 'family' => 'Josefin Sans',
339 'category' => 'sans-serif',
340 'variants' => array( '400', '600', '700' ),
341 ),
342 array(
343 'family' => 'Josefin Slab',
344 'category' => 'serif',
345 'variants' => array( '400', '600', '700' ),
346 ),
347 array(
348 'family' => 'Kalam',
349 'category' => 'cursive',
350 'bodyText' => false,
351 'variants' => array( '400', '700' ),
352 ),
353 array(
354 'family' => 'Karla',
355 'category' => 'sans-serif',
356 'variants' => array( '400', '700' ),
357 ),
358 array(
359 'family' => 'Lato',
360 'category' => 'sans-serif',
361 'variants' => array( '400', '700', '900' ),
362 ),
363 array(
364 'family' => 'Lekton',
365 'category' => 'sans-serif',
366 'variants' => array( '400', '700' ),
367 ),
368 array(
369 'family' => 'Libre Baskerville',
370 'category' => 'serif',
371 'variants' => array( '400', '700' ),
372 ),
373 array(
374 'family' => 'Libre Franklin',
375 'category' => 'sans-serif',
376 'variants' => array( '400', '500', '600', '700', '800', '900' ),
377 ),
378 array(
379 'family' => 'Lora',
380 'category' => 'serif',
381 'variants' => array( '400', '700' ),
382 ),
383 array(
384 'family' => 'Merriweather',
385 'category' => 'serif',
386 'variants' => array( '400', '700', '900' ),
387 ),
388 array(
389 'family' => 'Merriweather Sans',
390 'category' => 'sans-serif',
391 'variants' => array( '400', '700', '800' ),
392 ),
393 array(
394 'family' => 'Montserrat',
395 'category' => 'sans-serif',
396 'variants' => array( '400', '500', '600', '700', '800', '900' ),
397 ),
398 array(
399 'family' => 'Muli',
400 'category' => 'sans-serif',
401 'variants' => array( '400', '600', '700', '800', '900' ),
402 ),
403 array(
404 'family' => 'Neuton',
405 'category' => 'serif',
406 'variants' => array( '400', '700', '800' ),
407 ),
408 array(
409 'family' => 'Noto Sans',
410 'category' => 'sans-serif',
411 'variants' => array( '400', '700' ),
412 ),
413 array(
414 'family' => 'Noto Serif',
415 'category' => 'serif',
416 'variants' => array( '400', '700' ),
417 ),
418 array(
419 'family' => 'Nunito',
420 'category' => 'sans-serif',
421 'variants' => array( '400', '600', '700', '800', '900' ),
422 ),
423 array(
424 'family' => 'Nunito Sans',
425 'category' => 'sans-serif',
426 'variants' => array( '400', '600', '700', '800', '900' ),
427 ),
428 array(
429 'family' => 'Old Standard TT',
430 'category' => 'serif',
431 'bodyText' => false,
432 'variants' => array( '400', '700' ),
433 ),
434 array(
435 'family' => 'Open Sans',
436 'category' => 'sans-serif',
437 'variants' => array( '400', '600', '700', '800' ),
438 ),
439 array(
440 'family' => 'Oswald',
441 'category' => 'sans-serif',
442 'bodyText' => false,
443 'variants' => array( '400', '500', '600', '700' ),
444 ),
445 array(
446 'family' => 'Overpass',
447 'category' => 'sans-serif',
448 'variants' => array( '400', '600', '700', '800', '900' ),
449 ),
450 array(
451 'family' => 'Playfair Display',
452 'category' => 'serif',
453 'bodyText' => false,
454 'variants' => array( '400', '700', '900' ),
455 ),
456 array(
457 'family' => 'Poppins',
458 'category' => 'sans-serif',
459 'variants' => array( '400', '500', '600', '700', '800', '900' ),
460 ),
461 array(
462 'family' => 'Proza Libre',
463 'category' => 'sans-serif',
464 'variants' => array( '400', '500', '600', '700', '800' ),
465 ),
466 array(
467 'family' => 'PT Sans',
468 'category' => 'sans-serif',
469 'variants' => array( '400', '700' ),
470 ),
471 array(
472 'family' => 'PT Sans Narrow',
473 'category' => 'sans-serif',
474 'bodyText' => false,
475 'variants' => array( '400', '700' ),
476 ),
477 array(
478 'family' => 'PT Serif',
479 'category' => 'serif',
480 'variants' => array( '400', '700' ),
481 ),
482 array(
483 'family' => 'Quattrocento',
484 'category' => 'serif',
485 'bodyText' => false,
486 'variants' => array( '400', '700' ),
487 ),
488 array(
489 'family' => 'Quattrocento Sans',
490 'category' => 'sans-serif',
491 'variants' => array( '400', '700' ),
492 ),
493 array(
494 'family' => 'Rajdhani',
495 'category' => 'sans-serif',
496 'bodyText' => false,
497 'variants' => array( '400', '500', '600', '700' ),
498 ),
499 array(
500 'family' => 'Red Hat Display',
501 'category' => 'sans-serif',
502 'bodyText' => false,
503 'variants' => array( '400', '500', '700', '900' ),
504 ),
505 array(
506 'family' => 'Red Hat Text',
507 'category' => 'sans-serif',
508 'variants' => array( '400', '500', '700' ),
509 ),
510 array(
511 'family' => 'Raleway',
512 'category' => 'sans-serif',
513 'variants' => array( '400', '500', '600', '700', '800', '900' ),
514 ),
515 array(
516 'family' => 'Roboto',
517 'category' => 'sans-serif',
518 'variants' => array( '400', '500', '700', '900' ),
519 ),
520 array(
521 'family' => 'Roboto Condensed',
522 'category' => 'sans-serif',
523 'bodyText' => false,
524 'variants' => array( '400', '700' ),
525 ),
526 array(
527 'family' => 'Roboto Mono',
528 'category' => 'monospace',
529 'variants' => array( '400', '500', '700' ),
530 ),
531 array(
532 'family' => 'Roboto Slab',
533 'category' => 'serif',
534 'bodyText' => false,
535 'variants' => array( '400', '700' ),
536 ),
537 array(
538 'family' => 'Rubik',
539 'category' => 'sans-serif',
540 'variants' => array( '400', '500', '700', '900' ),
541 ),
542 array(
543 'family' => 'Rufina',
544 'category' => 'serif',
545 'bodyText' => false,
546 'variants' => array( '400', '700' ),
547 ),
548 array(
549 'family' => 'Signika',
550 'category' => 'sans-serif',
551 'bodyText' => false,
552 'variants' => array( '400', '600', '700' ),
553 ),
554 array(
555 'family' => 'Source Code Pro',
556 'category' => 'monospace',
557 'bodyText' => false,
558 'variants' => array( '400', '500', '600', '700', '900' ),
559 ),
560 array(
561 'family' => 'Source Sans Pro',
562 'category' => 'sans-serif',
563 'variants' => array( '400', '600', '700', '900' ),
564 ),
565 array(
566 'family' => 'Source Serif Pro',
567 'category' => 'serif',
568 'bodyText' => false,
569 'variants' => array( '400', '600', '700' ),
570 ),
571 array(
572 'family' => 'Space Mono',
573 'category' => 'monospace',
574 'variants' => array( '400', '700' ),
575 ),
576 array(
577 'family' => 'Spectral',
578 'category' => 'serif',
579 'variants' => array( '400', '500', '600', '700', '800' ),
580 ),
581 array(
582 'family' => 'Taviraj',
583 'category' => 'serif',
584 'variants' => array( '400', '500', '600', '700', '800', '900' ),
585 ),
586 array(
587 'family' => 'Tinos',
588 'category' => 'serif',
589 'variants' => array( '400', '700' ),
590 ),
591 array(
592 'family' => 'Titillium Web',
593 'category' => 'sans-serif',
594 'variants' => array( '400', '600', '700', '900' ),
595 ),
596 array(
597 'family' => 'Ubuntu',
598 'category' => 'sans-serif',
599 'variants' => array( '400', '500', '700' ),
600 ),
601 array(
602 'family' => 'Ubuntu Mono',
603 'category' => 'monospace',
604 'variants' => array( '400', '700' ),
605 ),
606 array(
607 'family' => 'Vollkorn',
608 'category' => 'serif',
609 'variants' => array( '400', '600', '700', '900' ),
610 ),
611 array(
612 'family' => 'Work Sans',
613 'category' => 'sans-serif',
614 'bodyText' => false,
615 'variants' => array( '400', '500', '600', '700', '800', '900' ),
616 ),
617 );
618
619 return apply_filters( 'twentig_fonts', $fonts );
620 }
621
622 /**
623 * Returns font weight choices.
624 */
625 function twentig_get_font_styles() {
626
627 $list_font_weights = array(
628 '' => __( 'Default', 'twentig' ),
629 '300' => __( 'Light 300', 'twentig' ),
630 '400' => __( 'Regular 400', 'twentig' ),
631 '500' => __( 'Medium 500', 'twentig' ),
632 '600' => __( 'Semi-Bold 600', 'twentig' ),
633 '700' => __( 'Bold 700', 'twentig' ),
634 '800' => __( 'Extra-Bold 800', 'twentig' ),
635 '900' => __( 'Black 900', 'twentig' ),
636 );
637 return $list_font_weights;
638 }
639
640 /**
641 * Returns default body font size. Back compat for early versions.
642 */
643 function twentig_get_default_body_font_size() {
644 if ( 'sans-serif' == get_theme_mod( 'twentig_body_font' ) && '' == get_theme_mod( 'twentig_body_font_size' ) ) {
645 return 'medium';
646 }
647 return 'large';
648 }
649