/
home
/
infinitibizsol
/
cashforcarsallen.com
/
wp-content
/
themes
/
blocksy
/
inc
/
css
/
File Upload :
llllll
Current File: /home/infinitibizsol/cashforcarsallen.com/wp-content/themes/blocksy/inc/css/fonts-manager.php
<?php namespace Blocksy; class FontsManager { private $matching_fonts_collection = []; public function get_all_fonts() { return apply_filters('blocksy_typography_font_sources', [ 'system' => [ 'type' => 'system', 'families' => $this->get_system_fonts(), ], 'google' => [ 'type' => 'google', 'families' => $this->get_googgle_fonts() // 'families' => [] ] ]); } public function process_matching_typography($value) { $family_to_push = 'Default'; $variation_to_push = 'Default'; if ($value && isset($value['family'])) { $family_to_push = $value['family']; } if ($value && isset($value['variation'])) { $variation_to_push = $value['variation']; } if (! isset($this->matching_fonts_collection[$family_to_push])) { $this->matching_fonts_collection[$family_to_push] = [$variation_to_push]; } else { $this->matching_fonts_collection[$family_to_push][] = $variation_to_push; } $this->matching_fonts_collection[$family_to_push] = array_unique( $this->matching_fonts_collection[$family_to_push] ); } public function get_matching_google_fonts() { $matching_fonts_collection = $this->matching_fonts_collection; $matching_google_fonts = []; $all_fonts = $this->get_system_fonts(); $system_fonts_families = []; foreach ($all_fonts as $single_google_font) { $system_fonts_families[] = $single_google_font['family']; } $default_family = blocksy_get_theme_mod( 'rootTypography', blocksy_typography_default_values([ 'family' => 'System Default', 'variation' => 'n4', 'size' => '16px', 'line-height' => '1.65', 'letter-spacing' => '0em', 'text-transform' => 'none', 'text-decoration' => 'none', ]) ); $default_variation = $default_family['variation']; $default_family = $default_family['family']; $all_google_fonts = $this->get_googgle_fonts(true); foreach ($matching_fonts_collection as $family => $variations) { foreach ($variations as $variation) { $family_to_use = $family; $variation_to_use = $variation; if ($family_to_use === 'Default') { $family_to_use = $default_family; } if ($variation_to_use === 'Default') { $variation_to_use = $default_variation; } if ( in_array($family_to_use, $system_fonts_families) || $family_to_use === 'Default' || ! isset($all_google_fonts[$family_to_use]) ) { continue; } if (! isset($matching_google_fonts[$family_to_use])) { $matching_google_fonts[$family_to_use] = [$variation_to_use]; } else { $matching_google_fonts[$family_to_use][] = $variation_to_use; } $matching_google_fonts[$family_to_use] = array_unique( $matching_google_fonts[$family_to_use] ); } } return $matching_google_fonts; } public function load_dynamic_google_fonts($matching_google_fonts) { $has_dynamic_google_fonts = apply_filters( 'blocksy:typography:google:use-remote', true ); if (! $has_dynamic_google_fonts) { return; } $url = $this->get_google_fonts_url($matching_google_fonts); if (! empty($url)) { wp_register_style('blocksy-fonts-font-source-google', $url, [], null); wp_enqueue_style('blocksy-fonts-font-source-google'); } } public function load_editor_fonts() { $has_dynamic_google_fonts = apply_filters( 'blocksy:typography:google:use-remote', true ); if (! $has_dynamic_google_fonts) { return ''; } $dynamic_styles_descriptor = blocksy_manager() ->dynamic_css ->get_dynamic_styles_descriptor(); $matching_google_fonts = $dynamic_styles_descriptor['google_fonts']; $url = $this->get_google_fonts_url($matching_google_fonts); return $url; } private function get_google_fonts_url($to_enqueue = []) { $endpoint = apply_filters( 'blocksy:typography:google:endpoint', 'https://fonts.googleapis.com/css2' ); $url = $endpoint . '?'; $families = []; foreach ($to_enqueue as $family => $variations) { $to_push = 'family=' . $family . ':'; $ital_vars = []; $wght_vars = []; foreach ($variations as $variation) { $var_to_push = intval($variation[1]) * 100; $var_to_push .= $variation[0] === 'i' ? 'i' : ''; if ($variation[0] === 'i') { $ital_vars[] = intval($variation[1]) * 100; } else { $wght_vars[] = intval($variation[1]) * 100; } } sort($ital_vars); sort($wght_vars); $axis_tag_list = []; if (count($ital_vars) > 0) { $axis_tag_list[] = 'ital'; } $axis_tag_list[] = 'wght'; $to_push .= implode(',', $axis_tag_list); $to_push .= '@'; $all_vars = []; foreach ($wght_vars as $wght_var) { if (count($axis_tag_list) > 1) { $all_vars[] = '0,' . $wght_var; } else { $all_vars[] = $wght_var; } } foreach ($ital_vars as $ital_var) { $all_vars[] = '1,' . $ital_var; } $to_push .= implode(';', array_unique($all_vars)); $families[] = $to_push; } $families = implode('&', $families); if (! empty($families)) { $url .= $families; $url .= '&display=swap'; return $url; } return false; } public function get_system_fonts($as_string = false) { $system = [ 'System Default', 'Arial', 'Verdana', 'Trebuchet', 'Georgia', 'Times New Roman', 'Palatino', 'Helvetica', 'Myriad Pro', 'Lucida', 'Gill Sans', 'Impact', 'Serif', 'monospace' ]; if ($as_string) { return $system; } $result = []; foreach ($system as $font) { $display = $font; if ($font === 'System Default') { $display = __('System Default', 'blocksy'); } $result[] = [ 'source' => 'system', 'family' => $font, 'display' => $display, 'variations' => [], 'all_variations' => $this->get_standard_variations_descriptors() ]; } return $result; } public function get_standard_variations_descriptors() { return [ 'n1', 'i1', 'n2', 'i2', 'n3', 'i3', 'n4', 'i4', 'n5', 'i5', 'n6', 'i6', 'n7', 'i7', 'n8', 'i8', 'n9', 'i9' ]; } public function retrieve_all_google_fonts() { $data = file_get_contents( get_template_directory() . '/static/fonts/google-fonts.json' ); if (! $data) { return []; } return json_decode($data, true); } public function get_googgle_fonts($as_keys = false) { $maybe_custom_source = apply_filters( 'blocksy-typography-google-fonts-source', null ); if ($maybe_custom_source) { return $maybe_custom_source; } $response = $this->retrieve_all_google_fonts(); if (! isset($response['items'])) { return false; } if (! is_array($response['items']) || !count($response['items'])) { return false; } foreach ($response['items'] as $key => $row) { $response['items'][$key] = $this->prepare_font_data($row); } if (! $as_keys) { return $response['items']; } $result = []; foreach ($response['items'] as $single_item) { $result[$single_item['family']] = true; } return $result; } private function prepare_font_data($font) { $font['source'] = 'google'; $font['variations'] = []; if (isset($font['variants'])) { $font['all_variations'] = $this->change_variations_structure($font['variants']); } unset($font['variants']); return $font; } private function change_variations_structure( $structure ) { $result = []; foreach($structure as $weight) { $result[] = $this->get_weight_and_style_key($weight); } return $result; } private function get_weight_and_style_key($code) { $prefix = 'n'; // Font style: italic = `i`, regular = n. $sufix = '4'; // Font weight: 1 -> 9. $value = strtolower(trim($code)); $value = str_replace(' ', '', $value); # Only number. if (is_numeric($value) && isset($value[0])) { $sufix = $value[0]; $prefix = 'n'; } // Italic. if (preg_match("#italic#", $value)) { if ('italic' === $value) { $sufix = 4; $prefix = 'i'; } else { $value = trim(str_replace('italic', '', $value)); if (is_numeric($value) && isset($value[0])) { $sufix = $value[0]; $prefix = 'i'; } } } // Regular. if (preg_match("#regular|normal#", $value)) { if ('regular' === $value) { $sufix = 4; $prefix = 'n'; } else { $value = trim(str_replace(array('regular', 'normal') , '', $value)); if (is_numeric($value) && isset($value[0])) { $sufix = $value[0]; $prefix = 'n'; } } } return "{$prefix}{$sufix}"; } }
Copyright ©2k19 -
Hexid
|
Tex7ure