PageRenderTime 27ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

/wp-content/plugins/divi-builder/dashboard/includes/google_fonts.php

https://gitlab.com/gregtyka/lfmawordpress
PHP | 489 lines | 457 code | 16 blank | 16 comment | 4 complexity | e5996d5f8ca7b6f88630643912dfe175 MD5 | raw file
  1. <?php
  2. if ( ! defined( 'ABSPATH' ) ) {
  3. exit; // Exit if accessed directly
  4. }
  5. class ET_Dashboard_Fonts {
  6. /**
  7. * Returns the list of popular google fonts
  8. *
  9. */
  10. function et_get_google_fonts() {
  11. $google_fonts = array(
  12. 'Open Sans' => array(
  13. 'styles' => '300italic,400italic,600italic,700italic,800italic,400,300,600,700,800',
  14. 'character_set' => 'latin,cyrillic-ext,greek-ext,greek,vietnamese,latin-ext,cyrillic',
  15. 'type' => 'sans-serif',
  16. ),
  17. 'Oswald' => array(
  18. 'styles' => '400,300,700',
  19. 'character_set' => 'latin,latin-ext',
  20. 'type' => 'sans-serif',
  21. ),
  22. 'Droid Sans' => array(
  23. 'styles' => '400,700',
  24. 'character_set' => 'latin',
  25. 'type' => 'sans-serif',
  26. ),
  27. 'Lato' => array(
  28. 'styles' => '400,100,100italic,300,300italic,400italic,700,700italic,900,900italic',
  29. 'character_set' => 'latin',
  30. 'type' => 'sans-serif',
  31. ),
  32. 'Open Sans Condensed' => array(
  33. 'styles' => '300,300italic,700',
  34. 'character_set' => 'latin,cyrillic-ext,latin-ext,greek-ext,greek,vietnamese,cyrillic',
  35. 'type' => 'sans-serif',
  36. ),
  37. 'PT Sans' => array(
  38. 'styles' => '400,400italic,700,700italic',
  39. 'character_set' => 'latin,latin-ext,cyrillic',
  40. 'type' => 'sans-serif',
  41. ),
  42. 'Ubuntu' => array(
  43. 'styles' => '400,300,300italic,400italic,500,500italic,700,700italic',
  44. 'character_set' => 'latin,cyrillic-ext,cyrillic,greek-ext,greek,latin-ext',
  45. 'type' => 'sans-serif',
  46. ),
  47. 'PT Sans Narrow' => array(
  48. 'styles' => '400,700',
  49. 'character_set' => 'latin,latin-ext,cyrillic',
  50. 'type' => 'sans-serif',
  51. ),
  52. 'Yanone Kaffeesatz' => array(
  53. 'styles' => '400,200,300,700',
  54. 'character_set' => 'latin,latin-ext',
  55. 'type' => 'sans-serif',
  56. ),
  57. 'Roboto Condensed' => array(
  58. 'styles' => '400,300,300italic,400italic,700,700italic',
  59. 'character_set' => 'latin,cyrillic-ext,latin-ext,greek-ext,cyrillic,greek,vietnamese',
  60. 'type' => 'sans-serif',
  61. ),
  62. 'Source Sans Pro' => array(
  63. 'styles' => '400,200,200italic,300,300italic,400italic,600,600italic,700,700italic,900,900italic',
  64. 'character_set' => 'latin,latin-ext',
  65. 'type' => 'sans-serif',
  66. ),
  67. 'Nunito' => array(
  68. 'styles' => '400,300,700',
  69. 'character_set' => 'latin',
  70. 'type' => 'sans-serif',
  71. ),
  72. 'Francois One' => array(
  73. 'styles' => '400',
  74. 'character_set' => 'latin,latin-ext',
  75. 'type' => 'sans-serif',
  76. ),
  77. 'Roboto' => array(
  78. 'styles' => '400,100,100italic,300,300italic,400italic,500,500italic,700,700italic,900,900italic',
  79. 'character_set' => 'latin,cyrillic-ext,latin-ext,cyrillic,greek-ext,greek,vietnamese',
  80. 'type' => 'sans-serif',
  81. ),
  82. 'Raleway' => array(
  83. 'styles' => '400,100,200,300,600,500,700,800,900',
  84. 'character_set' => 'latin',
  85. 'type' => 'sans-serif',
  86. ),
  87. 'Arimo' => array(
  88. 'styles' => '400,400italic,700italic,700',
  89. 'character_set' => 'latin,cyrillic-ext,latin-ext,greek-ext,cyrillic,greek,vietnamese',
  90. 'type' => 'sans-serif',
  91. ),
  92. 'Cuprum' => array(
  93. 'styles' => '400,400italic,700italic,700',
  94. 'character_set' => 'latin,latin-ext,cyrillic',
  95. 'type' => 'sans-serif',
  96. ),
  97. 'Play' => array(
  98. 'styles' => '400,700',
  99. 'character_set' => 'latin,cyrillic-ext,cyrillic,greek-ext,greek,latin-ext',
  100. 'type' => 'sans-serif',
  101. ),
  102. 'Dosis' => array(
  103. 'styles' => '400,200,300,500,600,700,800',
  104. 'character_set' => 'latin,latin-ext',
  105. 'type' => 'sans-serif',
  106. ),
  107. 'Abel' => array(
  108. 'styles' => '400',
  109. 'character_set' => 'latin',
  110. 'type' => 'sans-serif',
  111. ),
  112. 'Droid Serif' => array(
  113. 'styles' => '400,400italic,700,700italic',
  114. 'character_set' => 'latin',
  115. 'type' => 'serif',
  116. ),
  117. 'Arvo' => array(
  118. 'styles' => '400,400italic,700,700italic',
  119. 'character_set' => 'latin',
  120. 'type' => 'serif',
  121. ),
  122. 'Lora' => array(
  123. 'styles' => '400,400italic,700,700italic',
  124. 'character_set' => 'latin',
  125. 'type' => 'serif',
  126. ),
  127. 'Rokkitt' => array(
  128. 'styles' => '400,700',
  129. 'character_set' => 'latin',
  130. 'type' => 'serif',
  131. ),
  132. 'PT Serif' => array(
  133. 'styles' => '400,400italic,700,700italic',
  134. 'character_set' => 'latin,cyrillic',
  135. 'type' => 'serif',
  136. ),
  137. 'Bitter' => array(
  138. 'styles' => '400,400italic,700',
  139. 'character_set' => 'latin,latin-ext',
  140. 'type' => 'serif',
  141. ),
  142. 'Merriweather' => array(
  143. 'styles' => '400,300,900,700',
  144. 'character_set' => 'latin',
  145. 'type' => 'serif',
  146. ),
  147. 'Vollkorn' => array(
  148. 'styles' => '400,400italic,700italic,700',
  149. 'character_set' => 'latin',
  150. 'type' => 'serif',
  151. ),
  152. 'Cantata One' => array(
  153. 'styles' => '400',
  154. 'character_set' => 'latin,latin-ext',
  155. 'type' => 'serif',
  156. ),
  157. 'Kreon' => array(
  158. 'styles' => '400,300,700',
  159. 'character_set' => 'latin',
  160. 'type' => 'serif',
  161. ),
  162. 'Josefin Slab' => array(
  163. 'styles' => '400,100,100italic,300,300italic,400italic,600,700,700italic,600italic',
  164. 'character_set' => 'latin',
  165. 'type' => 'serif',
  166. ),
  167. 'Playfair Display' => array(
  168. 'styles' => '400,400italic,700,700italic,900italic,900',
  169. 'character_set' => 'latin,latin-ext,cyrillic',
  170. 'type' => 'serif',
  171. ),
  172. 'Bree Serif' => array(
  173. 'styles' => '400',
  174. 'character_set' => 'latin,latin-ext',
  175. 'type' => 'serif',
  176. ),
  177. 'Crimson Text' => array(
  178. 'styles' => '400,400italic,600,600italic,700,700italic',
  179. 'character_set' => 'latin',
  180. 'type' => 'serif',
  181. ),
  182. 'Old Standard TT' => array(
  183. 'styles' => '400,400italic,700',
  184. 'character_set' => 'latin',
  185. 'type' => 'serif',
  186. ),
  187. 'Sanchez' => array(
  188. 'styles' => '400,400italic',
  189. 'character_set' => 'latin,latin-ext',
  190. 'type' => 'serif',
  191. ),
  192. 'Crete Round' => array(
  193. 'styles' => '400,400italic',
  194. 'character_set' => 'latin,latin-ext',
  195. 'type' => 'serif',
  196. ),
  197. 'Cardo' => array(
  198. 'styles' => '400,400italic,700',
  199. 'character_set' => 'latin,greek-ext,greek,latin-ext',
  200. 'type' => 'serif',
  201. ),
  202. 'Noticia Text' => array(
  203. 'styles' => '400,400italic,700,700italic',
  204. 'character_set' => 'latin,vietnamese,latin-ext',
  205. 'type' => 'serif',
  206. ),
  207. 'Judson' => array(
  208. 'styles' => '400,400italic,700',
  209. 'character_set' => 'latin',
  210. 'type' => 'serif',
  211. ),
  212. 'Lobster' => array(
  213. 'styles' => '400',
  214. 'character_set' => 'latin,cyrillic-ext,latin-ext,cyrillic',
  215. 'type' => 'cursive',
  216. ),
  217. 'Unkempt' => array(
  218. 'styles' => '400,700',
  219. 'character_set' => 'latin',
  220. 'type' => 'cursive',
  221. ),
  222. 'Changa One' => array(
  223. 'styles' => '400,400italic',
  224. 'character_set' => 'latin',
  225. 'type' => 'cursive',
  226. ),
  227. 'Special Elite' => array(
  228. 'styles' => '400',
  229. 'character_set' => 'latin',
  230. 'type' => 'cursive',
  231. ),
  232. 'Chewy' => array(
  233. 'styles' => '400',
  234. 'character_set' => 'latin',
  235. 'type' => 'cursive',
  236. ),
  237. 'Comfortaa' => array(
  238. 'styles' => '400,300,700',
  239. 'character_set' => 'latin,cyrillic-ext,greek,latin-ext,cyrillic',
  240. 'type' => 'cursive',
  241. ),
  242. 'Boogaloo' => array(
  243. 'styles' => '400',
  244. 'character_set' => 'latin',
  245. 'type' => 'cursive',
  246. ),
  247. 'Fredoka One' => array(
  248. 'styles' => '400',
  249. 'character_set' => 'latin',
  250. 'type' => 'cursive',
  251. ),
  252. 'Luckiest Guy' => array(
  253. 'styles' => '400',
  254. 'character_set' => 'latin',
  255. 'type' => 'cursive',
  256. ),
  257. 'Cherry Cream Soda' => array(
  258. 'styles' => '400',
  259. 'character_set' => 'latin',
  260. 'type' => 'cursive',
  261. ),
  262. 'Lobster Two' => array(
  263. 'styles' => '400,400italic,700,700italic',
  264. 'character_set' => 'latin',
  265. 'type' => 'cursive',
  266. ),
  267. 'Righteous' => array(
  268. 'styles' => '400',
  269. 'character_set' => 'latin,latin-ext',
  270. 'type' => 'cursive',
  271. ),
  272. 'Squada One' => array(
  273. 'styles' => '400',
  274. 'character_set' => 'latin',
  275. 'type' => 'cursive',
  276. ),
  277. 'Black Ops One' => array(
  278. 'styles' => '400',
  279. 'character_set' => 'latin,latin-ext',
  280. 'type' => 'cursive',
  281. ),
  282. 'Happy Monkey' => array(
  283. 'styles' => '400',
  284. 'character_set' => 'latin,latin-ext',
  285. 'type' => 'cursive',
  286. ),
  287. 'Passion One' => array(
  288. 'styles' => '400,700,900',
  289. 'character_set' => 'latin,latin-ext',
  290. 'type' => 'cursive',
  291. ),
  292. 'Nova Square' => array(
  293. 'styles' => '400',
  294. 'character_set' => 'latin',
  295. 'type' => 'cursive',
  296. ),
  297. 'Metamorphous' => array(
  298. 'styles' => '400',
  299. 'character_set' => 'latin,latin-ext',
  300. 'type' => 'cursive',
  301. ),
  302. 'Poiret One' => array(
  303. 'styles' => '400',
  304. 'character_set' => 'latin,latin-ext,cyrillic',
  305. 'type' => 'cursive',
  306. ),
  307. 'Bevan' => array(
  308. 'styles' => '400',
  309. 'character_set' => 'latin',
  310. 'type' => 'cursive',
  311. ),
  312. 'Shadows Into Light' => array(
  313. 'styles' => '400',
  314. 'character_set' => 'latin',
  315. 'type' => 'cursive',
  316. ),
  317. 'The Girl Next Door' => array(
  318. 'styles' => '400',
  319. 'character_set' => 'latin',
  320. 'type' => 'cursive',
  321. ),
  322. 'Coming Soon' => array(
  323. 'styles' => '400',
  324. 'character_set' => 'latin',
  325. 'type' => 'cursive',
  326. ),
  327. 'Dancing Script' => array(
  328. 'styles' => '400,700',
  329. 'character_set' => 'latin',
  330. 'type' => 'cursive',
  331. ),
  332. 'Pacifico' => array(
  333. 'styles' => '400',
  334. 'character_set' => 'latin',
  335. 'type' => 'cursive',
  336. ),
  337. 'Crafty Girls' => array(
  338. 'styles' => '400',
  339. 'character_set' => 'latin',
  340. 'type' => 'cursive',
  341. ),
  342. 'Calligraffitti' => array(
  343. 'styles' => '400',
  344. 'character_set' => 'latin',
  345. 'type' => 'cursive',
  346. ),
  347. 'Rock Salt' => array(
  348. 'styles' => '400',
  349. 'character_set' => 'latin',
  350. 'type' => 'cursive',
  351. ),
  352. 'Amatic SC' => array(
  353. 'styles' => '400,700',
  354. 'character_set' => 'latin',
  355. 'type' => 'cursive',
  356. ),
  357. 'Leckerli One' => array(
  358. 'styles' => '400',
  359. 'character_set' => 'latin',
  360. 'type' => 'cursive',
  361. ),
  362. 'Tangerine' => array(
  363. 'styles' => '400,700',
  364. 'character_set' => 'latin',
  365. 'type' => 'cursive',
  366. ),
  367. 'Reenie Beanie' => array(
  368. 'styles' => '400',
  369. 'character_set' => 'latin',
  370. 'type' => 'cursive',
  371. ),
  372. 'Satisfy' => array(
  373. 'styles' => '400',
  374. 'character_set' => 'latin',
  375. 'type' => 'cursive',
  376. ),
  377. 'Gloria Hallelujah' => array(
  378. 'styles' => '400',
  379. 'character_set' => 'latin',
  380. 'type' => 'cursive',
  381. ),
  382. 'Permanent Marker' => array(
  383. 'styles' => '400',
  384. 'character_set' => 'latin',
  385. 'type' => 'cursive',
  386. ),
  387. 'Covered By Your Grace' => array(
  388. 'styles' => '400',
  389. 'character_set' => 'latin',
  390. 'type' => 'cursive',
  391. ),
  392. 'Walter Turncoat' => array(
  393. 'styles' => '400',
  394. 'character_set' => 'latin',
  395. 'type' => 'cursive',
  396. ),
  397. 'Patrick Hand' => array(
  398. 'styles' => '400',
  399. 'character_set' => 'latin,vietnamese,latin-ext',
  400. 'type' => 'cursive',
  401. ),
  402. 'Schoolbell' => array(
  403. 'styles' => '400',
  404. 'character_set' => 'latin',
  405. 'type' => 'cursive',
  406. ),
  407. 'Indie Flower' => array(
  408. 'styles' => '400',
  409. 'character_set' => 'latin',
  410. 'type' => 'cursive',
  411. ),
  412. );
  413. return apply_filters( 'et_google_fonts', $google_fonts );
  414. }
  415. /**
  416. * Determines a websafe font stack, using font type
  417. *
  418. */
  419. function et_get_websafe_font_stack( $type = 'sans-serif' ) {
  420. $font_stack = '';
  421. switch ( $type ) {
  422. case 'sans-serif':
  423. $font_stack = 'Helvetica, Arial, Lucida, sans-serif';
  424. break;
  425. case 'serif':
  426. $font_stack = 'Georgia, "Times New Roman", serif';
  427. break;
  428. case 'cursive':
  429. $font_stack = 'cursive';
  430. break;
  431. }
  432. return $font_stack;
  433. }
  434. /**
  435. * Attaches Google Font to given css elements
  436. *
  437. */
  438. function et_gf_attach_font( $et_gf_font_name, $elements ) {
  439. $google_fonts = $this->et_get_google_fonts();
  440. $output = '';
  441. $output = sprintf(
  442. '%s { font-family: "%s", %s; }',
  443. esc_html( $elements ),
  444. esc_html( $et_gf_font_name ),
  445. $this->et_get_websafe_font_stack( $google_fonts[$et_gf_font_name]['type'] )
  446. );
  447. return $output;
  448. }
  449. /**
  450. * Enqueues Google Fonts
  451. *
  452. */
  453. function et_gf_enqueue_fonts( $et_gf_font_names ) {
  454. global $shortname;
  455. if ( ! is_array( $et_gf_font_names ) || empty( $et_gf_font_names ) ) {
  456. return;
  457. }
  458. $google_fonts = $this->et_get_google_fonts();
  459. $protocol = is_ssl() ? 'https' : 'http';
  460. foreach ( $et_gf_font_names as $et_gf_font_name ) {
  461. $google_font_character_set = $google_fonts[$et_gf_font_name]['character_set'];
  462. $query_args = array(
  463. 'family' => sprintf( '%s:%s',
  464. str_replace( ' ', '+', $et_gf_font_name ),
  465. apply_filters( 'et_gf_set_styles', $google_fonts[$et_gf_font_name]['styles'], $et_gf_font_name )
  466. ),
  467. 'subset' => apply_filters( 'et_gf_set_character_set', $google_font_character_set, $et_gf_font_name ),
  468. );
  469. $et_gf_font_name_slug = strtolower( str_replace( ' ', '-', $et_gf_font_name ) );
  470. wp_enqueue_style( 'et-gf-' . $et_gf_font_name_slug, esc_url( add_query_arg( $query_args, "$protocol://fonts.googleapis.com/css" ) ), array(), null );
  471. }
  472. }
  473. }