MP_Settings
Class MP_Settings
Source Source
File: mortgage-platform/Inc/Base/MP_Settings.php
class MP_Settings {
/**
* Fields of Tab "General Settings".
*
* @since 1.0.0
* @access public
*
* @return array {
* Plugin settings fields.
* @type array enable_cookie Enable cookies
* @type array remove_data Delete data when removing the plugin
* }
*/
public function set_fields() {
$general_fields = array(
array(
'id' => 'enable_cookie',
'title' => __( 'Enable cookies', 'mortgage_platform' ),
'callback' => array( $this, 'checkbox' ),
'args' => array(
'option_name' => 'mortgage_platform',
'label_for' => 'enable_cookie',
'placeholder' => '',
'default' => '',
'description' => __( 'Enable cookies', 'mortgage_platform' ),
),
),
array(
'id' => 'remove_data',
'title' => __( 'Delete data when removing the plugin', 'mortgage_platform' ),
'callback' => array( $this, 'checkbox' ),
'args' => array(
'option_name' => 'mortgage_platform',
'label_for' => 'remove_data',
'placeholder' => '',
'default' => '',
'description' => __( 'Delete data when removing the plugin', 'mortgage_platform' ),
),
),
);
return $general_fields;
}
/**
* Register general settings.
*
* @since 1.0.0
* @access public
*/
public function register_general_settings() {
$general_fields = $this->set_fields();
$this->register_setting_fields(
$general_fields,
'',
__( 'General Settings', 'mortgage_platform' ),
array( $this, 'page_title' )
);
add_filter( MortgagePlatform::$prefix . 'menu', array( $this, 'filter_menu' ), 5 );
add_action( MortgagePlatform::$prefix . 'menu_settings', array( $this, 'filter_settings' ) );
}
/**
* Register fields.
*
* @since 1.0.0
* @access public
*
* @param array $fields
* @param string $name slug-name to identify the section
* @param string $title_link formatted title of the section
* @param callable $callback function that echos out any content at the top of the section (between heading and fields)
*/
protected function register_setting_fields( array $fields, $name, $title_link, callable $callback ) {
if ( '' !== $name ) {
register_setting(
MortgagePlatform::$prefix . 'settings_' . $name,
MortgagePlatform::$prefix . $name,
''
);
$name = MortgagePlatform::$prefix . $name;
} else {
register_setting(
MortgagePlatform::$prefix . 'settings',
MortgagePlatform::$domain,
''
);
$name = MortgagePlatform::$domain;
}
add_settings_section(
$name,
$title_link,
$callback,
$name
);
$this->add_settings_field( $fields, $name );
}
/**
* Add Settings fields.
*
* @since 1.0.0
* @access public
*
* @param array $setting_fields settings fields
* @param string $name slug-name
*/
protected function add_settings_field( array $setting_fields, $name ) {
foreach ( $setting_fields as $field ) {
add_settings_field(
$field['id'],
$field['title'],
$field['callback'],
$name,
$name,
$field['args']
);
}
}
/**
* Set title for leads section.
*
* @since 1.0.0
* @access public
*/
public function page_title() {
echo '';
}
/**
* Filter Settings Menu.
*
* @since 1.0.0
* @access public
*
* @param string $list list of settings menu
*
* @return string list of settings menu
*/
public function filter_menu( $list ) {
if ( ! isset( $_GET['tab'] ) ) {
$list .= '<li class="active"><a href="?page=' . esc_attr( MortgagePlatform::$domain ) . '" >' . esc_html__( 'General Settings', 'mortgage_platform' ) . '</a></li>';
} else {
$list .= '<li ><a href="?page=' . esc_attr( MortgagePlatform::$domain ) . '" >' . esc_html__( 'General Settings', 'mortgage_platform' ) . '</a></li>';
}
return $list;
}
/**
* Add Setting Fields.
*
* @since 1.0.0
* @access public
*
* @global $pagenow
*/
public function filter_settings() {
global $pagenow;
if ( ! isset( $_GET['tab'] ) ) {
?>
<div class="mp-settings__content tab-pane general">
<form action="options.php" method="POST">
<?php
settings_fields( MortgagePlatform::$prefix . 'settings' );
do_settings_sections( MortgagePlatform::$domain );
submit_button();
?>
</form>
</div>
<?php
}
}
/**
* Callback input function.
*
* @since 1.0.0
* @access public
*
* @param array $args array of arguments
*/
public function input( $args ) {
$name = $args['label_for'];
$option_name = $args['option_name'];
$input = get_option( $option_name );
$placeholder = $args['placeholder'];
$default = $args['default'];
$description = $args['description'];
$value = ! empty( $input[ $name ] ) ? $input[ $name ] : $default;
echo '<input style="width: 100%; padding: 5px 10px" type="text" class="regular-text" id="' . esc_attr( $name ) . '" name="' . esc_attr( $option_name ) . '[' . esc_attr( $name ) . ']" value="' . esc_attr( $value ) . '" placeholder="' . esc_attr( $placeholder ) . '" >';
echo '<p>' . esc_html($description) . '</p>';
}
/**
* Callback textarea function.
*
* @since 1.0.0
* @access public
*
* @param array $args array of arguments
*/
public function textarea( $args ) {
$name = $args['label_for'];
$option_name = $args['option_name'];
$input = get_option( $option_name );
$default = $args['default'];
$value = ! empty( $input[ $name ] ) ? $input[ $name ] : $default;
$placeholder = $args['placeholder'];
$description = $args['description'];
echo '<textarea style="width: 100%; padding: 10px" id="' . esc_attr( $name ) . '" name="' . esc_attr( $option_name ) . '[' . esc_attr( $name ) . ']" placeholder="' . esc_attr( $placeholder ) . '" cols="37" rows="15">' . esc_attr( $value ) . '</textarea>';
echo '<p>' . esc_attr( $description ) . '</p>';
}
/**
* Callback color function.
*
* @since 1.0.0
* @access public
*
* @param array $args array of arguments
*/
public function color( $args ) {
$name = $args['label_for'];
$option_name = $args['option_name'];
$input = get_option( $option_name );
$default = $args['default'];
$value = ! empty( $input[ $name ] ) ? $input[ $name ] : $default;
$description = $args['description'];
echo '<input id="' . esc_attr( $name ) . '" type="text" name="' . esc_attr( $option_name ) . '[' . esc_attr( $name ) . ']" class="color-field" value="' . esc_attr( $value ) . '" />';
echo '<p>' . esc_attr( $description ) . '</p>';
}
/**
* Callback fonts function.
*
* @since 1.0.0
* @access public
*
* @param array $args array of arguments
*/
public function fonts( $args ) {
$google_fonts = $this->get_google_fonts();
$name = $args['label_for'];
$option_name = $args['option_name'];
$input = get_option( $option_name );
$default = $args['default'];
$value = ! empty( $input[ $name ] ) ? $input[ $name ] : $default;
$description = $args['description'];
echo '<select style="float:left;margin-right:30px; width: 50%;" name="' . esc_attr( $option_name ) . '[' . esc_attr( $name ) . ']" id="' . esc_attr( $name ) . '">';
foreach ( $google_fonts as $key => $font ) {
$selected = '';
if ( '' !== $value ) {
if ( $value === $key ) {
$selected = ' selected="selected"';
}
}
echo '<option ' . esc_attr( $selected ) . ' value="' . esc_attr( $key ) . '">' . esc_attr( $font ) . '</option>';
}
echo '</select>';
echo '<p id="font-example" style="font-size:30px; line-height:1;margin:0;padding:0; font-family:'.$google_fonts[$value].'">' . esc_attr( $google_fonts[$value] ) . '</p>';
echo '<p>' . esc_attr( $description ) . '</p>';
}
/**
* Callback editor function.
*
* @since 1.0.0
* @access public
*
* @param array $args array of arguments
*/
public function editor( $args ) {
$name = $args['label_for'];
$option_name = $args['option_name'];
$input = get_option( $option_name );
$default = $args['default'];
$value = ! empty( $input[ $name ] ) ? $input[ $name ] : $default;
//$description = $args['description'];
$editor_settings = array(
'wpautop' => 0,
'media_buttons' => 0,
'textarea_rows' => 30,
'teeny' => 0,
'dfw' => 0,
'tinymce' => 1,
'quicktags' => 1,
'drag_drop_upload' => false,
);
wp_editor( $value, $name, $editor_settings );
}
/**
* Callback checkbox function
*
* @since 1.0.0
* @access public
*
* @param array $args array of arguments
*/
public function checkbox( $args ) {
$name = $args['label_for'];
$option_name = $args['option_name'];
$input = get_option( $option_name );
$description = $args['description'];
$checked = isset( $input[ $name ] ) ? $input[ $name ] : false;
echo '<div class="ui-toggle">';
echo '<input type="checkbox" id="' . esc_attr( $name ) . '" name="' . esc_attr( $option_name ) . '[' . esc_attr( $name ) . ']" value="1" class="" ' . ( esc_attr( $checked ) ? 'checked' : '' ) . '>';
echo '<label for="' . esc_attr( $name ) . '"><div></div></label>';
echo '</div>';
echo '<p>' . esc_attr( $description ) . '</p>';
}
/**
* Callback select function.
*
* @since 1.0.0
* @access public
*
* @param array $args array of arguments
*/
public function select( $args ) {
$name = $args['label_for'];
$option_name = $args['option_name'];
$input = get_option( $option_name );
$default = $args['default'];
$value = isset( $input[ $name ] ) ? $input[ $name ] : $default;
$description = $args['description'];
echo '<select style="width: 50%;" name="' . esc_attr( $option_name ) . '[' . esc_attr( $name ) . ']" id="' . esc_attr( $name ) . '">';
foreach ( $args['options'] as $key => $option ) {
$selected = '';
if ( '' !== $value ) {
if ( $value === $key ) {
$selected = ' selected="selected"';
}
}
echo '<option' . esc_attr( $selected ) . ' value="' . esc_attr( $key ) . '">' . esc_attr( $option ) . '</option>';
}
echo '</select>';
echo '<p>' . esc_attr( $description ) . '</p>';
}
/**
* Callback upload function.
*
* @since 1.0.0
* @access public
*
* @param array $args array of arguments
*/
public function upload( $args ) {
$attachment_url = $args['label_for'];
$attachment_id = $args['attachment_id'];
$option_name = $args['option_name'];
$input = get_option( $option_name );
$value_url = isset( $input[ $attachment_url ] ) ? $input[ $attachment_url ] : '';
$value_id = isset( $input[ $attachment_id ] ) ? $input[ $attachment_id ] : '';
$description = $args['description'];
echo '<button id="upload_now" class="button button-primary custom_media_upload">' . esc_html__( 'Upload', 'mortgage_platform' ) . '</button> ';
echo '<button class="button button-primary logo_clear">' . esc_html__( 'Clear Image', 'mortgage_platform' ) . '</button> ';
echo '<img class="' . esc_attr( MortgagePlatform::$prefix ) . 'logo_image" style="display:none; width: 150px; height: auto;" src="' . esc_url( $value_url ) . '" />';
echo '<input class="custom_media_url" type="text" style="display:none;" id="' . esc_attr( $attachment_url ) . '" name="' . esc_attr( $option_name ) . '[' . esc_attr( $attachment_url ) . ']" value="' . esc_url( $value_url ) . '">';
echo '<input class="custom_media_id" type="text" style="display:none;" id="' . esc_attr( $attachment_id ) . '" name="' . esc_attr( $option_name ) . '[' . esc_attr( $attachment_id ) . ']" value="' . esc_attr( $value_id ) . '">';
echo '<p>' . esc_attr( $description ) . '</p>';
}
/**
* Callback button function.
*
* @since 1.0.0
* @access public
*
* @param array $args array of arguments
*/
public function button( $args ) {
$name = $args['label_for'];
$option_name = $args['option_name'];
$input = get_option( $option_name );
$description = $args['description'];
$default = $args['default'];
$value = isset( $input[ $name ] ) ? $input[ $name ] : $default;
echo '<button id="' . esc_attr( $name ) . '" class="button">' . esc_attr( $value ) . '</button>';
echo '<p>' . esc_attr( $description ) . '</p>';
}
/**
* Get google fonts.
*
* @since 1.0.0
* @access public
*
* @return array list of google fonts
*/
public function get_google_fonts() {
$google_fonts = array(
'default' => 'Default Font of Theme',
'ABeeZee' => 'ABeeZee',
'Abel' => 'Abel',
'Abhaya+Libre' => 'Abhaya Libre',
'Abril+Fatface' => 'Abril Fatface',
'Aclonica' => 'Aclonica',
'Acme' => 'Acme',
'Actor' => 'Actor',
'Adamina' => 'Adamina',
'Advent+Pro' => 'Advent Pro',
'Aguafina+Script' => 'Aguafina Script',
'Akronim' => 'Akronim',
'Aladin' => 'Aladin',
'Aldrich' => 'Aldrich',
'Alef' => 'Alef',
'Alegreya' => 'Alegreya',
'Alegreya+SC' => 'Alegreya SC',
'Alegreya+Sans' => 'Alegreya Sans',
'Alegreya+Sans SC' => 'Alegreya Sans SC',
'Aleo' => 'Aleo',
'Alex+Brush' => 'Alex Brush',
'Alfa+Slab One' => 'Alfa Slab One',
'Alice' => 'Alice',
'Alike' => 'Alike',
'Alike+Angular' => 'Alike Angular',
'Allan' => 'Allan',
'Allerta' => 'Allerta',
'Allerta+Stencil' => 'Allerta Stencil',
'Allura' => 'Allura',
'Almendra' => 'Almendra',
'Almendra+Display' => 'Almendra Display',
'Almendra+SC' => 'Almendra SC',
'Amarante' => 'Amarante',
'Amaranth' => 'Amaranth',
'Amatic+SC' => 'Amatic SC',
'Amethysta' => 'Amethysta',
'Amiko' => 'Amiko',
'Amiri' => 'Amiri',
'Amita' => 'Amita',
'Anaheim' => 'Anaheim',
'Andada' => 'Andada',
'Andika' => 'Andika',
'Angkor' => 'Angkor',
'Annie+Use Your Telescope' => 'Annie Use Your Telescope',
'Anonymous+Pro' => 'Anonymous Pro',
'Antic' => 'Antic',
'Antic+Didone' => 'Antic Didone',
'Antic+Slab' => 'Antic Slab',
'Anton' => 'Anton',
'Arapey' => 'Arapey',
'Arbutus' => 'Arbutus',
'Arbutus+Slab' => 'Arbutus Slab',
'Architects+Daughter' => 'Architects Daughter',
'Archivo' => 'Archivo',
'Archivo+Black' => 'Archivo Black',
'Archivo+Narrow' => 'Archivo Narrow',
'Aref+Ruqaa' => 'Aref Ruqaa',
'Arima+Madurai' => 'Arima Madurai',
'Arimo' => 'Arimo',
'Arizonia' => 'Arizonia',
'Armata' => 'Armata',
'Arsenal' => 'Arsenal',
'Artifika' => 'Artifika',
'Arvo' => 'Arvo',
'Arya' => 'Arya',
'Asap' => 'Asap',
'Asap+Condensed' => 'Asap Condensed',
'Asar' => 'Asar',
'Asset' => 'Asset',
'Assistant' => 'Assistant',
'Astloch' => 'Astloch',
'Asul' => 'Asul',
'Athiti' => 'Athiti',
'Atma' => 'Atma',
'Atomic+Age' => 'Atomic Age',
'Aubrey' => 'Aubrey',
'Audiowide' => 'Audiowide',
'Autour+One' => 'Autour One',
'Average' => 'Average',
'Average+Sans' => 'Average Sans',
'Averia+Gruesa Libre' => 'Averia Gruesa Libre',
'Averia+Libre' => 'Averia Libre',
'Averia+Sans Libre' => 'Averia Sans Libre',
'Averia+Serif Libre' => 'Averia Serif Libre',
'B612' => 'B612',
'B612+Mono' => 'B612 Mono',
'Bad+Script' => 'Bad Script',
'Bahiana' => 'Bahiana',
'Bahianita' => 'Bahianita',
'Bai+Jamjuree' => 'Bai Jamjuree',
'Baloo' => 'Baloo',
'Baloo+Bhai' => 'Baloo Bhai',
'Baloo+Bhaijaan' => 'Baloo Bhaijaan',
'Baloo+Bhaina' => 'Baloo Bhaina',
'Baloo+Chettan' => 'Baloo Chettan',
'Baloo+Da' => 'Baloo Da',
'Baloo+Paaji' => 'Baloo Paaji',
'Baloo+Tamma' => 'Baloo Tamma',
'Baloo+Tammudu' => 'Baloo Tammudu',
'Baloo+Thambi' => 'Baloo Thambi',
'Balthazar' => 'Balthazar',
'Bangers' => 'Bangers',
'Barlow' => 'Barlow',
'Barlow+Condensed' => 'Barlow Condensed',
'Barlow+Semi Condensed' => 'Barlow Semi Condensed',
'Barriecito' => 'Barriecito',
'Barrio' => 'Barrio',
'Basic' => 'Basic',
'Battambang' => 'Battambang',
'Baumans' => 'Baumans',
'Bayon' => 'Bayon',
'Belgrano' => 'Belgrano',
'Bellefair' => 'Bellefair',
'Belleza' => 'Belleza',
'BenchNine' => 'BenchNine',
'Bentham' => 'Bentham',
'Berkshire+Swash' => 'Berkshire Swash',
'Beth+Ellen' => 'Beth Ellen',
'Bevan' => 'Bevan',
'Bigelow+Rules' => 'Bigelow Rules',
'Bigshot+One' => 'Bigshot One',
'Bilbo' => 'Bilbo',
'Bilbo+Swash Caps' => 'Bilbo Swash Caps',
'BioRhyme' => 'BioRhyme',
'BioRhyme+Expanded' => 'BioRhyme Expanded',
'Biryani' => 'Biryani',
'Bitter' => 'Bitter',
'Black+And White Picture' => 'Black And White Picture',
'Black+Han Sans' => 'Black Han Sans',
'Black+Ops One' => 'Black Ops One',
'Blinker' => 'Blinker',
'Bokor' => 'Bokor',
'Bonbon' => 'Bonbon',
'Boogaloo' => 'Boogaloo',
'Bowlby+One' => 'Bowlby One',
'Bowlby+One SC' => 'Bowlby One SC',
'Brawler' => 'Brawler',
'Bree+Serif' => 'Bree Serif',
'Bubblegum+Sans' => 'Bubblegum Sans',
'Bubbler+One' => 'Bubbler One',
'Buda' => 'Buda',
'Buenard' => 'Buenard',
'Bungee' => 'Bungee',
'Bungee+Hairline' => 'Bungee Hairline',
'Bungee+Inline' => 'Bungee Inline',
'Bungee+Outline' => 'Bungee Outline',
'Bungee+Shade' => 'Bungee Shade',
'Butcherman' => 'Butcherman',
'Butterfly+Kids' => 'Butterfly Kids',
'Cabin' => 'Cabin',
'Cabin+Condensed' => 'Cabin Condensed',
'Cabin+Sketch' => 'Cabin Sketch',
'Caesar+Dressing' => 'Caesar Dressing',
'Cagliostro' => 'Cagliostro',
'Cairo' => 'Cairo',
'Calligraffitti' => 'Calligraffitti',
'Cambay' => 'Cambay',
'Cambo' => 'Cambo',
'Candal' => 'Candal',
'Cantarell' => 'Cantarell',
'Cantata+One' => 'Cantata One',
'Cantora+One' => 'Cantora One',
'Capriola' => 'Capriola',
'Cardo' => 'Cardo',
'Carme' => 'Carme',
'Carrois+Gothic' => 'Carrois Gothic',
'Carrois+Gothic SC' => 'Carrois Gothic SC',
'Carter+One' => 'Carter One',
'Catamaran' => 'Catamaran',
'Caudex' => 'Caudex',
'Caveat' => 'Caveat',
'Caveat+Brush' => 'Caveat Brush',
'Cedarville+Cursive' => 'Cedarville Cursive',
'Ceviche+One' => 'Ceviche One',
'Chakra+Petch' => 'Chakra Petch',
'Changa' => 'Changa',
'Changa+One' => 'Changa One',
'Chango' => 'Chango',
'Charm' => 'Charm',
'Charmonman' => 'Charmonman',
'Chathura' => 'Chathura',
'Chau+Philomene One' => 'Chau Philomene One',
'Chela+One' => 'Chela One',
'Chelsea+Market' => 'Chelsea Market',
'Chenla' => 'Chenla',
'Cherry+Cream Soda' => 'Cherry Cream Soda',
'Cherry+Swash' => 'Cherry Swash',
'Chewy' => 'Chewy',
'Chicle' => 'Chicle',
'Chivo' => 'Chivo',
'Chonburi' => 'Chonburi',
'Cinzel' => 'Cinzel',
'Cinzel+Decorative' => 'Cinzel Decorative',
'Clicker+Script' => 'Clicker Script',
'Coda' => 'Coda',
'Coda+Caption' => 'Coda Caption',
'Codystar' => 'Codystar',
'Coiny' => 'Coiny',
'Combo' => 'Combo',
'Comfortaa' => 'Comfortaa',
'Coming+Soon' => 'Coming Soon',
'Concert+One' => 'Concert One',
'Condiment' => 'Condiment',
'Content' => 'Content',
'Contrail+One' => 'Contrail One',
'Convergence' => 'Convergence',
'Cookie' => 'Cookie',
'Copse' => 'Copse',
'Corben' => 'Corben',
'Cormorant' => 'Cormorant',
'Cormorant+Garamond' => 'Cormorant Garamond',
'Cormorant+Infant' => 'Cormorant Infant',
'Cormorant+SC' => 'Cormorant SC',
'Cormorant+Unicase' => 'Cormorant Unicase',
'Cormorant+Upright' => 'Cormorant Upright',
'Courgette' => 'Courgette',
'Cousine' => 'Cousine',
'Coustard' => 'Coustard',
'Covered+By Your Grace' => 'Covered By Your Grace',
'Crafty+Girls' => 'Crafty Girls',
'Creepster' => 'Creepster',
'Crete+Round' => 'Crete Round',
'Crimson+Pro' => 'Crimson Pro',
'Crimson+Text' => 'Crimson Text',
'Croissant+One' => 'Croissant One',
'Crushed' => 'Crushed',
'Cuprum' => 'Cuprum',
'Cute+Font' => 'Cute Font',
'Cutive' => 'Cutive',
'Cutive+Mono' => 'Cutive Mono',
'DM+Sans' => 'DM Sans',
'DM+Serif Display' => 'DM Serif Display',
'DM+Serif Text' => 'DM Serif Text',
'Damion' => 'Damion',
'Dancing+Script' => 'Dancing Script',
'Dangrek' => 'Dangrek',
'Darker+Grotesque' => 'Darker Grotesque',
'David+Libre' => 'David Libre',
'Dawning+of a New Day' => 'Dawning of a New Day',
'Days+One' => 'Days One',
'Dekko' => 'Dekko',
'Delius' => 'Delius',
'Delius+Swash Caps' => 'Delius Swash Caps',
'Delius+Unicase' => 'Delius Unicase',
'Della+Respira' => 'Della Respira',
'Denk+One' => 'Denk One',
'Devonshire' => 'Devonshire',
'Dhurjati' => 'Dhurjati',
'Didact+Gothic' => 'Didact Gothic',
'Diplomata' => 'Diplomata',
'Diplomata+SC' => 'Diplomata SC',
'Do+Hyeon' => 'Do Hyeon',
'Dokdo' => 'Dokdo',
'Domine' => 'Domine',
'Donegal+One' => 'Donegal One',
'Doppio+One' => 'Doppio One',
'Dorsa' => 'Dorsa',
'Dosis' => 'Dosis',
'Dr+Sugiyama' => 'Dr Sugiyama',
'Duru+Sans' => 'Duru Sans',
'Dynalight' => 'Dynalight',
'EB+Garamond' => 'EB Garamond',
'Eagle+Lake' => 'Eagle Lake',
'East+Sea Dokdo' => 'East Sea Dokdo',
'Eater' => 'Eater',
'Economica' => 'Economica',
'Eczar' => 'Eczar',
'El+Messiri' => 'El Messiri',
'Electrolize' => 'Electrolize',
'Elsie' => 'Elsie',
'Elsie+Swash Caps' => 'Elsie Swash Caps',
'Emblema+One' => 'Emblema One',
'Emilys+Candy' => 'Emilys Candy',
'Encode+Sans' => 'Encode Sans',
'Encode+Sans Condensed' => 'Encode Sans Condensed',
'Encode+Sans Expanded' => 'Encode Sans Expanded',
'Encode+Sans Semi Condensed' => 'Encode Sans Semi Condensed',
'Encode+Sans Semi Expanded' => 'Encode Sans Semi Expanded',
'Engagement' => 'Engagement',
'Englebert' => 'Englebert',
'Enriqueta' => 'Enriqueta',
'Erica+One' => 'Erica One',
'Esteban' => 'Esteban',
'Euphoria+Script' => 'Euphoria Script',
'Ewert' => 'Ewert',
'Exo' => 'Exo',
'Exo+2' => 'Exo 2',
'Expletus+Sans' => 'Expletus Sans',
'Fahkwang' => 'Fahkwang',
'Fanwood+Text' => 'Fanwood Text',
'Farro' => 'Farro',
'Farsan' => 'Farsan',
'Fascinate' => 'Fascinate',
'Fascinate+Inline' => 'Fascinate Inline',
'Faster+One' => 'Faster One',
'Fasthand' => 'Fasthand',
'Fauna+One' => 'Fauna One',
'Faustina' => 'Faustina',
'Federant' => 'Federant',
'Federo' => 'Federo',
'Felipa' => 'Felipa',
'Fenix' => 'Fenix',
'Finger+Paint' => 'Finger Paint',
'Fira+Code' => 'Fira Code',
'Fira+Mono' => 'Fira Mono',
'Fira+Sans' => 'Fira Sans',
'Fira+Sans Condensed' => 'Fira Sans Condensed',
'Fira+Sans Extra Condensed' => 'Fira Sans Extra Condensed',
'Fjalla+One' => 'Fjalla One',
'Fjord+One' => 'Fjord One',
'Flamenco' => 'Flamenco',
'Flavors' => 'Flavors',
'Fondamento' => 'Fondamento',
'Fontdiner+Swanky' => 'Fontdiner Swanky',
'Forum' => 'Forum',
'Francois+One' => 'Francois One',
'Frank+Ruhl Libre' => 'Frank Ruhl Libre',
'Freckle+Face' => 'Freckle Face',
'Fredericka+the Great' => 'Fredericka the Great',
'Fredoka+One' => 'Fredoka One',
'Freehand' => 'Freehand',
'Fresca' => 'Fresca',
'Frijole' => 'Frijole',
'Fruktur' => 'Fruktur',
'Fugaz+One' => 'Fugaz One',
'GFS+Didot' => 'GFS Didot',
'GFS+Neohellenic' => 'GFS Neohellenic',
'Gabriela' => 'Gabriela',
'Gaegu' => 'Gaegu',
'Gafata' => 'Gafata',
'Galada' => 'Galada',
'Galdeano' => 'Galdeano',
'Galindo' => 'Galindo',
'Gamja+Flower' => 'Gamja Flower',
'Gentium+Basic' => 'Gentium Basic',
'Gentium+Book Basic' => 'Gentium Book Basic',
'Geo' => 'Geo',
'Geostar' => 'Geostar',
'Geostar+Fill' => 'Geostar Fill',
'Germania+One' => 'Germania One',
'Gidugu' => 'Gidugu',
'Gilda+Display' => 'Gilda Display',
'Give+You Glory' => 'Give You Glory',
'Glass+Antiqua' => 'Glass Antiqua',
'Glegoo' => 'Glegoo',
'Gloria+Hallelujah' => 'Gloria Hallelujah',
'Goblin+One' => 'Goblin One',
'Gochi+Hand' => 'Gochi Hand',
'Gorditas' => 'Gorditas',
'Gothic+A1' => 'Gothic A1',
'Goudy+Bookletter 1911' => 'Goudy Bookletter 1911',
'Graduate' => 'Graduate',
'Grand+Hotel' => 'Grand Hotel',
'Gravitas+One' => 'Gravitas One',
'Great+Vibes' => 'Great Vibes',
'Grenze' => 'Grenze',
'Griffy' => 'Griffy',
'Gruppo' => 'Gruppo',
'Gudea' => 'Gudea',
'Gugi' => 'Gugi',
'Gurajada' => 'Gurajada',
'Habibi' => 'Habibi',
'Halant' => 'Halant',
'Hammersmith+One' => 'Hammersmith One',
'Hanalei' => 'Hanalei',
'Hanalei+Fill' => 'Hanalei Fill',
'Handlee' => 'Handlee',
'Hanuman' => 'Hanuman',
'Happy+Monkey' => 'Happy Monkey',
'Harmattan' => 'Harmattan',
'Headland+One' => 'Headland One',
'Heebo' => 'Heebo',
'Henny+Penny' => 'Henny Penny',
'Herr+Von Muellerhoff' => 'Herr Von Muellerhoff',
'Hi+Melody' => 'Hi Melody',
'Hind' => 'Hind',
'Hind+Guntur' => 'Hind Guntur',
'Hind+Madurai' => 'Hind Madurai',
'Hind+Siliguri' => 'Hind Siliguri',
'Hind+Vadodara' => 'Hind Vadodara',
'Holtwood+One SC' => 'Holtwood One SC',
'Homemade+Apple' => 'Homemade Apple',
'Homenaje' => 'Homenaje',
'IBM+Plex Mono' => 'IBM Plex Mono',
'IBM+Plex Sans' => 'IBM Plex Sans',
'IBM+Plex Sans Condensed' => 'IBM Plex Sans Condensed',
'IBM+Plex Serif' => 'IBM Plex Serif',
'IM+Fell DW Pica' => 'IM Fell DW Pica',
'IM+Fell DW Pica SC' => 'IM Fell DW Pica SC',
'IM+Fell Double Pica' => 'IM Fell Double Pica',
'IM+Fell Double Pica SC' => 'IM Fell Double Pica SC',
'IM+Fell English' => 'IM Fell English',
'IM+Fell English SC' => 'IM Fell English SC',
'IM+Fell French Canon' => 'IM Fell French Canon',
'IM+Fell French Canon SC' => 'IM Fell French Canon SC',
'IM+Fell Great Primer' => 'IM Fell Great Primer',
'IM+Fell Great Primer SC' => 'IM Fell Great Primer SC',
'Iceberg' => 'Iceberg',
'Iceland' => 'Iceland',
'Imprima' => 'Imprima',
'Inconsolata' => 'Inconsolata',
'Inder' => 'Inder',
'Indie+Flower' => 'Indie Flower',
'Inika' => 'Inika',
'Inknut+Antiqua' => 'Inknut Antiqua',
'Irish+Grover' => 'Irish Grover',
'Istok+Web' => 'Istok Web',
'Italiana' => 'Italiana',
'Italianno' => 'Italianno',
'Itim' => 'Itim',
'Jacques+Francois' => 'Jacques Francois',
'Jacques+Francois Shadow' => 'Jacques Francois Shadow',
'Jaldi' => 'Jaldi',
'Jim+Nightshade' => 'Jim Nightshade',
'Jockey+One' => 'Jockey One',
'Jolly+Lodger' => 'Jolly Lodger',
'Jomhuria' => 'Jomhuria',
'Josefin+Sans' => 'Josefin Sans',
'Josefin+Slab' => 'Josefin Slab',
'Joti+One' => 'Joti One',
'Jua' => 'Jua',
'Judson' => 'Judson',
'Julee' => 'Julee',
'Julius+Sans One' => 'Julius Sans One',
'Junge' => 'Junge',
'Jura' => 'Jura',
'Just+Another Hand' => 'Just Another Hand',
'Just+Me Again Down Here' => 'Just Me Again Down Here',
'K2D' => 'K2D',
'Kadwa' => 'Kadwa',
'Kalam' => 'Kalam',
'Kameron' => 'Kameron',
'Kanit' => 'Kanit',
'Kantumruy' => 'Kantumruy',
'Karla' => 'Karla',
'Karma' => 'Karma',
'Katibeh' => 'Katibeh',
'Kaushan+Script' => 'Kaushan Script',
'Kavivanar' => 'Kavivanar',
'Kavoon' => 'Kavoon',
'Kdam+Thmor' => 'Kdam Thmor',
'Keania+One' => 'Keania One',
'Kelly+Slab' => 'Kelly Slab',
'Kenia' => 'Kenia',
'Khand' => 'Khand',
'Khmer' => 'Khmer',
'Khula' => 'Khula',
'Kirang+Haerang' => 'Kirang Haerang',
'Kite+One' => 'Kite One',
'Knewave' => 'Knewave',
'KoHo' => 'KoHo',
'Kodchasan' => 'Kodchasan',
'Kosugi' => 'Kosugi',
'Kosugi+Maru' => 'Kosugi Maru',
'Kotta+One' => 'Kotta One',
'Koulen' => 'Koulen',
'Kranky' => 'Kranky',
'Kreon' => 'Kreon',
'Kristi' => 'Kristi',
'Krona+One' => 'Krona One',
'Krub' => 'Krub',
'Kumar+One' => 'Kumar One',
'Kumar+One Outline' => 'Kumar One Outline',
'Kurale' => 'Kurale',
'La+Belle Aurore' => 'La Belle Aurore',
'Lacquer' => 'Lacquer',
'Laila' => 'Laila',
'Lakki+Reddy' => 'Lakki Reddy',
'Lalezar' => 'Lalezar',
'Lancelot' => 'Lancelot',
'Lateef' => 'Lateef',
'Lato' => 'Lato',
'League+Script' => 'League Script',
'Leckerli+One' => 'Leckerli One',
'Ledger' => 'Ledger',
'Lekton' => 'Lekton',
'Lemon' => 'Lemon',
'Lemonada' => 'Lemonada',
'Libre+Barcode 128' => 'Libre Barcode 128',
'Libre+Barcode 128 Text' => 'Libre Barcode 128 Text',
'Libre+Barcode 39' => 'Libre Barcode 39',
'Libre+Barcode 39 Extended' => 'Libre Barcode 39 Extended',
'Libre+Barcode 39 Extended Text' => 'Libre Barcode 39 Extended Text',
'Libre+Barcode 39 Text' => 'Libre Barcode 39 Text',
'Libre+Baskerville' => 'Libre Baskerville',
'Libre+Caslon Display' => 'Libre Caslon Display',
'Libre+Caslon Text' => 'Libre Caslon Text',
'Libre+Franklin' => 'Libre Franklin',
'Life+Savers' => 'Life Savers',
'Lilita+One' => 'Lilita One',
'Lily+Script One' => 'Lily Script One',
'Limelight' => 'Limelight',
'Linden+Hill' => 'Linden Hill',
'Literata' => 'Literata',
'Liu+Jian Mao Cao' => 'Liu Jian Mao Cao',
'Lobster' => 'Lobster',
'Lobster+Two' => 'Lobster Two',
'Londrina+Outline' => 'Londrina Outline',
'Londrina+Shadow' => 'Londrina Shadow',
'Londrina+Sketch' => 'Londrina Sketch',
'Londrina+Solid' => 'Londrina Solid',
'Long+Cang' => 'Long Cang',
'Lora' => 'Lora',
'Love+Ya Like A Sister' => 'Love Ya Like A Sister',
'Loved+by the King' => 'Loved by the King',
'Lovers+Quarrel' => 'Lovers Quarrel',
'Luckiest+Guy' => 'Luckiest Guy',
'Lusitana' => 'Lusitana',
'Lustria' => 'Lustria',
'M+PLUS 1p' => 'M PLUS 1p',
'M+PLUS Rounded 1c' => 'M PLUS Rounded 1c',
'Ma+Shan Zheng' => 'Ma Shan Zheng',
'Macondo' => 'Macondo',
'Macondo+Swash Caps' => 'Macondo Swash Caps',
'Mada' => 'Mada',
'Magra' => 'Magra',
'Maiden+Orange' => 'Maiden Orange',
'Maitree' => 'Maitree',
'Major+Mono Display' => 'Major Mono Display',
'Mako' => 'Mako',
'Mali' => 'Mali',
'Mallanna' => 'Mallanna',
'Mandali' => 'Mandali',
'Manuale' => 'Manuale',
'Marcellus' => 'Marcellus',
'Marcellus+SC' => 'Marcellus SC',
'Marck+Script' => 'Marck Script',
'Margarine' => 'Margarine',
'Markazi+Text' => 'Markazi Text',
'Marko+One' => 'Marko One',
'Marmelad' => 'Marmelad',
'Martel' => 'Martel',
'Martel+Sans' => 'Martel Sans',
'Marvel' => 'Marvel',
'Mate' => 'Mate',
'Mate+SC' => 'Mate SC',
'Maven+Pro' => 'Maven Pro',
'McLaren' => 'McLaren',
'Meddon' => 'Meddon',
'MedievalSharp' => 'MedievalSharp',
'Medula+One' => 'Medula One',
'Meera+Inimai' => 'Meera Inimai',
'Megrim' => 'Megrim',
'Meie+Script' => 'Meie Script',
'Merienda' => 'Merienda',
'Merienda+One' => 'Merienda One',
'Merriweather' => 'Merriweather',
'Merriweather+Sans' => 'Merriweather Sans',
'Metal' => 'Metal',
'Metal+Mania' => 'Metal Mania',
'Metamorphous' => 'Metamorphous',
'Metrophobic' => 'Metrophobic',
'Michroma' => 'Michroma',
'Milonga' => 'Milonga',
'Miltonian' => 'Miltonian',
'Miltonian+Tattoo' => 'Miltonian Tattoo',
'Mina' => 'Mina',
'Miniver' => 'Miniver',
'Miriam+Libre' => 'Miriam Libre',
'Mirza' => 'Mirza',
'Miss+Fajardose' => 'Miss Fajardose',
'Mitr' => 'Mitr',
'Modak' => 'Modak',
'Modern+Antiqua' => 'Modern Antiqua',
'Mogra' => 'Mogra',
'Molengo' => 'Molengo',
'Molle' => 'Molle',
'Monda' => 'Monda',
'Monofett' => 'Monofett',
'Monoton' => 'Monoton',
'Monsieur+La Doulaise' => 'Monsieur La Doulaise',
'Montaga' => 'Montaga',
'Montez' => 'Montez',
'Montserrat' => 'Montserrat',
'Montserrat+Alternates' => 'Montserrat Alternates',
'Montserrat+Subrayada' => 'Montserrat Subrayada',
'Moul' => 'Moul',
'Moulpali' => 'Moulpali',
'Mountains+of Christmas' => 'Mountains of Christmas',
'Mouse+Memoirs' => 'Mouse Memoirs',
'Mr+Bedfort' => 'Mr Bedfort',
'Mr+Dafoe' => 'Mr Dafoe',
'Mr+De Haviland' => 'Mr De Haviland',
'Mrs+Saint Delafield' => 'Mrs Saint Delafield',
'Mrs+Sheppards' => 'Mrs Sheppards',
'Mukta' => 'Mukta',
'Mukta+Mahee' => 'Mukta Mahee',
'Mukta+Malar' => 'Mukta Malar',
'Mukta+Vaani' => 'Mukta Vaani',
'Muli' => 'Muli',
'Mystery+Quest' => 'Mystery Quest',
'NTR' => 'NTR',
'Nanum+Brush Script' => 'Nanum Brush Script',
'Nanum+Gothic' => 'Nanum Gothic',
'Nanum+Gothic Coding' => 'Nanum Gothic Coding',
'Nanum+Myeongjo' => 'Nanum Myeongjo',
'Nanum+Pen Script' => 'Nanum Pen Script',
'Neucha' => 'Neucha',
'Neuton' => 'Neuton',
'New+Rocker' => 'New Rocker',
'News+Cycle' => 'News Cycle',
'Niconne' => 'Niconne',
'Niramit' => 'Niramit',
'Nixie+One' => 'Nixie One',
'Nobile' => 'Nobile',
'Nokora' => 'Nokora',
'Norican' => 'Norican',
'Nosifer' => 'Nosifer',
'Notable' => 'Notable',
'Nothing+You Could Do' => 'Nothing You Could Do',
'Noticia+Text' => 'Noticia Text',
'Noto+Sans' => 'Noto Sans',
'Noto+Sans HK' => 'Noto Sans HK',
'Noto+Sans JP' => 'Noto Sans JP',
'Noto+Sans KR' => 'Noto Sans KR',
'Noto+Sans SC' => 'Noto Sans SC',
'Noto+Sans TC' => 'Noto Sans TC',
'Noto+Serif' => 'Noto Serif',
'Noto+Serif JP' => 'Noto Serif JP',
'Noto+Serif KR' => 'Noto Serif KR',
'Noto+Serif SC' => 'Noto Serif SC',
'Noto+Serif TC' => 'Noto Serif TC',
'Nova+Cut' => 'Nova Cut',
'Nova+Flat' => 'Nova Flat',
'Nova+Mono' => 'Nova Mono',
'Nova+Oval' => 'Nova Oval',
'Nova+Round' => 'Nova Round',
'Nova+Script' => 'Nova Script',
'Nova+Slim' => 'Nova Slim',
'Nova+Square' => 'Nova Square',
'Numans' => 'Numans',
'Nunito' => 'Nunito',
'Nunito+Sans' => 'Nunito Sans',
'Odor+Mean Chey' => 'Odor Mean Chey',
'Offside' => 'Offside',
'Old+Standard TT' => 'Old Standard TT',
'Oldenburg' => 'Oldenburg',
'Oleo+Script' => 'Oleo Script',
'Oleo+Script Swash Caps' => 'Oleo Script Swash Caps',
'Open+Sans' => 'Open Sans',
'Open+Sans Condensed' => 'Open Sans Condensed',
'Oranienbaum' => 'Oranienbaum',
'Orbitron' => 'Orbitron',
'Oregano' => 'Oregano',
'Orienta' => 'Orienta',
'Original+Surfer' => 'Original Surfer',
'Oswald' => 'Oswald',
'Over+the Rainbow' => 'Over the Rainbow',
'Overlock' => 'Overlock',
'Overlock+SC' => 'Overlock SC',
'Overpass' => 'Overpass',
'Overpass+Mono' => 'Overpass Mono',
'Ovo' => 'Ovo',
'Oxygen' => 'Oxygen',
'Oxygen+Mono' => 'Oxygen Mono',
'PT+Mono' => 'PT Mono',
'PT+Sans' => 'PT Sans',
'PT+Sans Caption' => 'PT Sans Caption',
'PT+Sans Narrow' => 'PT Sans Narrow',
'PT+Serif' => 'PT Serif',
'PT+Serif Caption' => 'PT Serif Caption',
'Pacifico' => 'Pacifico',
'Padauk' => 'Padauk',
'Palanquin' => 'Palanquin',
'Palanquin+Dark' => 'Palanquin Dark',
'Pangolin' => 'Pangolin',
'Paprika' => 'Paprika',
'Parisienne' => 'Parisienne',
'Passero+One' => 'Passero One',
'Passion+One' => 'Passion One',
'Pathway+Gothic One' => 'Pathway Gothic One',
'Patrick+Hand' => 'Patrick Hand',
'Patrick+Hand SC' => 'Patrick Hand SC',
'Pattaya' => 'Pattaya',
'Patua+One' => 'Patua One',
'Pavanam' => 'Pavanam',
'Paytone+One' => 'Paytone One',
'Peddana' => 'Peddana',
'Peralta' => 'Peralta',
'Permanent+Marker' => 'Permanent Marker',
'Petit+Formal Script' => 'Petit Formal Script',
'Petrona' => 'Petrona',
'Philosopher' => 'Philosopher',
'Piedra' => 'Piedra',
'Pinyon+Script' => 'Pinyon Script',
'Pirata+One' => 'Pirata One',
'Plaster' => 'Plaster',
'Play' => 'Play',
'Playball' => 'Playball',
'Playfair+Display' => 'Playfair Display',
'Playfair+Display SC' => 'Playfair Display SC',
'Podkova' => 'Podkova',
'Poiret+One' => 'Poiret One',
'Poller+One' => 'Poller One',
'Poly' => 'Poly',
'Pompiere' => 'Pompiere',
'Pontano+Sans' => 'Pontano Sans',
'Poor+Story' => 'Poor Story',
'Poppins' => 'Poppins',
'Port+Lligat Sans' => 'Port Lligat Sans',
'Port+Lligat Slab' => 'Port Lligat Slab',
'Pragati+Narrow' => 'Pragati Narrow',
'Prata' => 'Prata',
'Preahvihear' => 'Preahvihear',
'Press+Start 2P' => 'Press Start 2P',
'Pridi' => 'Pridi',
'Princess+Sofia' => 'Princess Sofia',
'Prociono' => 'Prociono',
'Prompt' => 'Prompt',
'Prosto+One' => 'Prosto One',
'Proza+Libre' => 'Proza Libre',
'Puritan' => 'Puritan',
'Purple+Purse' => 'Purple Purse',
'Quando' => 'Quando',
'Quantico' => 'Quantico',
'Quattrocento' => 'Quattrocento',
'Quattrocento+Sans' => 'Quattrocento Sans',
'Questrial' => 'Questrial',
'Quicksand' => 'Quicksand',
'Quintessential' => 'Quintessential',
'Qwigley' => 'Qwigley',
'Racing+Sans One' => 'Racing Sans One',
'Radley' => 'Radley',
'Rajdhani' => 'Rajdhani',
'Rakkas' => 'Rakkas',
'Raleway' => 'Raleway',
'Raleway+Dots' => 'Raleway Dots',
'Ramabhadra' => 'Ramabhadra',
'Ramaraja' => 'Ramaraja',
'Rambla' => 'Rambla',
'Rammetto+One' => 'Rammetto One',
'Ranchers' => 'Ranchers',
'Rancho' => 'Rancho',
'Ranga' => 'Ranga',
'Rasa' => 'Rasa',
'Rationale' => 'Rationale',
'Ravi+Prakash' => 'Ravi Prakash',
'Red+Hat Display' => 'Red Hat Display',
'Red+Hat Text' => 'Red Hat Text',
'Redressed' => 'Redressed',
'Reem+Kufi' => 'Reem Kufi',
'Reenie+Beanie' => 'Reenie Beanie',
'Revalia' => 'Revalia',
'Rhodium+Libre' => 'Rhodium Libre',
'Ribeye' => 'Ribeye',
'Ribeye+Marrow' => 'Ribeye Marrow',
'Righteous' => 'Righteous',
'Risque' => 'Risque',
'Roboto' => 'Roboto',
'Roboto+Condensed' => 'Roboto Condensed',
'Roboto+Mono' => 'Roboto Mono',
'Roboto+Slab' => 'Roboto Slab',
'Rochester' => 'Rochester',
'Rock+Salt' => 'Rock Salt',
'Rokkitt' => 'Rokkitt',
'Romanesco' => 'Romanesco',
'Ropa+Sans' => 'Ropa Sans',
'Rosario' => 'Rosario',
'Rosarivo' => 'Rosarivo',
'Rouge+Script' => 'Rouge Script',
'Rozha+One' => 'Rozha One',
'Rubik' => 'Rubik',
'Rubik+Mono One' => 'Rubik Mono One',
'Ruda' => 'Ruda',
'Rufina' => 'Rufina',
'Ruge+Boogie' => 'Ruge Boogie',
'Ruluko' => 'Ruluko',
'Rum+Raisin' => 'Rum Raisin',
'Ruslan+Display' => 'Ruslan Display',
'Russo+One' => 'Russo One',
'Ruthie' => 'Ruthie',
'Rye' => 'Rye',
'Sacramento' => 'Sacramento',
'Sahitya' => 'Sahitya',
'Sail' => 'Sail',
'Saira' => 'Saira',
'Saira+Condensed' => 'Saira Condensed',
'Saira+Extra Condensed' => 'Saira Extra Condensed',
'Saira+Semi Condensed' => 'Saira Semi Condensed',
'Saira+Stencil One' => 'Saira Stencil One',
'Salsa' => 'Salsa',
'Sanchez' => 'Sanchez',
'Sancreek' => 'Sancreek',
'Sansita' => 'Sansita',
'Sarabun' => 'Sarabun',
'Sarala' => 'Sarala',
'Sarina' => 'Sarina',
'Sarpanch' => 'Sarpanch',
'Satisfy' => 'Satisfy',
'Sawarabi+Gothic' => 'Sawarabi Gothic',
'Sawarabi+Mincho' => 'Sawarabi Mincho',
'Scada' => 'Scada',
'Scheherazade' => 'Scheherazade',
'Schoolbell' => 'Schoolbell',
'Scope+One' => 'Scope One',
'Seaweed+Script' => 'Seaweed Script',
'Secular+One' => 'Secular One',
'Sedgwick+Ave' => 'Sedgwick Ave',
'Sedgwick+Ave Display' => 'Sedgwick Ave Display',
'Sevillana' => 'Sevillana',
'Seymour+One' => 'Seymour One',
'Shadows+Into Light' => 'Shadows Into Light',
'Shadows+Into Light Two' => 'Shadows Into Light Two',
'Shanti' => 'Shanti',
'Share' => 'Share',
'Share+Tech' => 'Share Tech',
'Share+Tech Mono' => 'Share Tech Mono',
'Shojumaru' => 'Shojumaru',
'Short+Stack' => 'Short Stack',
'Shrikhand' => 'Shrikhand',
'Siemreap' => 'Siemreap',
'Sigmar+One' => 'Sigmar One',
'Signika' => 'Signika',
'Signika+Negative' => 'Signika Negative',
'Simonetta' => 'Simonetta',
'Single+Day' => 'Single Day',
'Sintony' => 'Sintony',
'Sirin+Stencil' => 'Sirin Stencil',
'Six+Caps' => 'Six Caps',
'Skranji' => 'Skranji',
'Slabo+13px' => 'Slabo 13px',
'Slabo+27px' => 'Slabo 27px',
'Slackey' => 'Slackey',
'Smokum' => 'Smokum',
'Smythe' => 'Smythe',
'Sniglet' => 'Sniglet',
'Snippet' => 'Snippet',
'Snowburst+One' => 'Snowburst One',
'Sofadi+One' => 'Sofadi One',
'Sofia' => 'Sofia',
'Song+Myung' => 'Song Myung',
'Sonsie+One' => 'Sonsie One',
'Sorts+Mill Goudy' => 'Sorts Mill Goudy',
'Source+Code Pro' => 'Source Code Pro',
'Source+Sans Pro' => 'Source Sans Pro',
'Source+Serif Pro' => 'Source Serif Pro',
'Space+Mono' => 'Space Mono',
'Special+Elite' => 'Special Elite',
'Spectral' => 'Spectral',
'Spectral+SC' => 'Spectral SC',
'Spicy+Rice' => 'Spicy Rice',
'Spinnaker' => 'Spinnaker',
'Spirax' => 'Spirax',
'Squada+One' => 'Squada One',
'Sree+Krushnadevaraya' => 'Sree Krushnadevaraya',
'Sriracha' => 'Sriracha',
'Srisakdi' => 'Srisakdi',
'Staatliches' => 'Staatliches',
'Stalemate' => 'Stalemate',
'Stalinist+One' => 'Stalinist One',
'Stardos+Stencil' => 'Stardos Stencil',
'Stint+Ultra Condensed' => 'Stint Ultra Condensed',
'Stint+Ultra Expanded' => 'Stint Ultra Expanded',
'Stoke' => 'Stoke',
'Strait' => 'Strait',
'Stylish' => 'Stylish',
'Sue+Ellen Francisco' => 'Sue Ellen Francisco',
'Suez+One' => 'Suez One',
'Sumana' => 'Sumana',
'Sunflower' => 'Sunflower',
'Sunshiney' => 'Sunshiney',
'Supermercado+One' => 'Supermercado One',
'Sura' => 'Sura',
'Suranna' => 'Suranna',
'Suravaram' => 'Suravaram',
'Suwannaphum' => 'Suwannaphum',
'Swanky+and Moo Moo' => 'Swanky and Moo Moo',
'Syncopate' => 'Syncopate',
'Tajawal' => 'Tajawal',
'Tangerine' => 'Tangerine',
'Taprom' => 'Taprom',
'Tauri' => 'Tauri',
'Taviraj' => 'Taviraj',
'Teko' => 'Teko',
'Telex' => 'Telex',
'Tenali+Ramakrishna' => 'Tenali Ramakrishna',
'Tenor+Sans' => 'Tenor Sans',
'Text+Me One' => 'Text Me One',
'Thasadith' => 'Thasadith',
'The+Girl Next Door' => 'The Girl Next Door',
'Tienne' => 'Tienne',
'Tillana' => 'Tillana',
'Timmana' => 'Timmana',
'Tinos' => 'Tinos',
'Titan+One' => 'Titan One',
'Titillium+Web' => 'Titillium Web',
'Trade+Winds' => 'Trade Winds',
'Trirong' => 'Trirong',
'Trocchi' => 'Trocchi',
'Trochut' => 'Trochut',
'Trykker' => 'Trykker',
'Tulpen+One' => 'Tulpen One',
'Ubuntu' => 'Ubuntu',
'Ubuntu+Condensed' => 'Ubuntu Condensed',
'Ubuntu+Mono' => 'Ubuntu Mono',
'Ultra' => 'Ultra',
'Uncial+Antiqua' => 'Uncial Antiqua',
'Underdog' => 'Underdog',
'Unica+One' => 'Unica One',
'UnifrakturCook' => 'UnifrakturCook',
'UnifrakturMaguntia' => 'UnifrakturMaguntia',
'Unkempt' => 'Unkempt',
'Unlock' => 'Unlock',
'Unna' => 'Unna',
'VT323' => 'VT323',
'Vampiro+One' => 'Vampiro One',
'Varela' => 'Varela',
'Varela+Round' => 'Varela Round',
'Vast+Shadow' => 'Vast Shadow',
'Vesper+Libre' => 'Vesper Libre',
'Vibur' => 'Vibur',
'Vidaloka' => 'Vidaloka',
'Viga' => 'Viga',
'Voces' => 'Voces',
'Volkhov' => 'Volkhov',
'Vollkorn' => 'Vollkorn',
'Vollkorn+SC' => 'Vollkorn SC',
'Voltaire' => 'Voltaire',
'Waiting+for the Sunrise' => 'Waiting for the Sunrise',
'Wallpoet' => 'Wallpoet',
'Walter+Turncoat' => 'Walter Turncoat',
'Warnes' => 'Warnes',
'Wellfleet' => 'Wellfleet',
'Wendy+One' => 'Wendy One',
'Wire+One' => 'Wire One',
'Work+Sans' => 'Work Sans',
'Yanone+Kaffeesatz' => 'Yanone Kaffeesatz',
'Yantramanav' => 'Yantramanav',
'Yatra+One' => 'Yatra One',
'Yellowtail' => 'Yellowtail',
'Yeon+Sung' => 'Yeon Sung',
'Yeseva+One' => 'Yeseva One',
'Yesteryear' => 'Yesteryear',
'Yrsa' => 'Yrsa',
'ZCOOL+KuaiLe' => 'ZCOOL KuaiLe',
'ZCOOL+QingKe HuangYou' => 'ZCOOL QingKe HuangYou',
'ZCOOL+XiaoWei' => 'ZCOOL XiaoWei',
'Zeyada' => 'Zeyada',
'Zhi+Mang Xing' => 'Zhi Mang Xing',
'Zilla+Slab' => 'Zilla Slab',
'Zilla+Slab Highlight' => 'Zilla Slab Highlight',
);
return $google_fonts;
}
/**
* Adjust Brightness.
*
* @since 1.0.0
* @access public
*
* @param string $hex color hex
* @param int $steps steps should be between -255 and 255. Negative = darker, positive = lighter
*
* @return string
*/
public static function adjust_brightness( $hex, $steps ) {
// Steps should be between -255 and 255. Negative = darker, positive = lighter
$steps = max( - 255, min( 255, $steps ) );
// Normalize into a six character long hex string
$hex = str_replace( '#', '', $hex );
if ( strlen( $hex ) === 3 ) {
$hex = str_repeat( substr( $hex, 0, 1 ), 2 ) . str_repeat( substr( $hex, 1, 1 ), 2 ) . str_repeat( substr( $hex, 2, 1 ), 2 );
}
// Split into three parts: R, G and B
$color_parts = str_split( $hex, 2 );
$return = '#';
foreach ( $color_parts as $color ) {
$color = hexdec( $color ); // Convert to decimal
$color = max( 0, min( 255, $color + $steps ) ); // Adjust color
$return .= str_pad( dechex( $color ), 2, '0', STR_PAD_LEFT ); // Make two char hex code
}
return $return;
}
/**
* Check is isset data.
* @since 1.0.0
* @access public
* @static
*
* @param string|array|mixed $data data.
* @param int|string|bool|callback $is_not_isset resulf if not isset. Default ''.
*
* @return mixed
*/
public static function is_isset( $data, $is_not_isset = '' ) {
if ( isset( $data ) ) {
return $data;
}
return $is_not_isset;
}
/**
* Check is isset and not empty data.
* @since 1.0.0
* @access public
* @static
*
* @param string|array|mixed $data data.
* @param int|string|bool|callback $is_not_isset resulf if not isset. Default ''.
*
* @return mixed
*/
public static function check_data( $data, $is_not_isset = '' ) {
if ( isset( $data ) && ! empty( $data ) ) {
return $data;
}
return $is_not_isset;
}
/**
* Create CSV file from array.
*
* @access public
* @static
* @since 1.0.0
*
* @param array $array array of leads
* @param string $filename file name
*
* @return null|string
*/
public static function create_csv( array &$array, $filename = '' ) {
self::download_send_headers($filename);
if ( count( $array ) == 0 ) {
return null;
}
ob_start();
$df = fopen( "php://output", 'w' );
fputcsv($df, array_keys(reset($array)));
foreach ( $array as $row ) {
fputcsv( $df, $row );
}
fclose( $df );
return ob_get_clean();
}
/**
* Prepare headers for export csv file.
*
* @access private
* @static
* @since 1.0.0
*
* @param string $filename csv file name
*/
private static function download_send_headers( $filename ) {
// disable caching
$now = gmdate( "D, d M Y H:i:s" );
header( "Expires: Tue, 03 Jul 2001 06:00:00 GMT" );
header( "Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate" );
header( "Last-Modified: {$now} GMT" );
// force download
header( "Content-Type: application/force-download" );
header( "Content-Type: application/octet-stream" );
header( "Content-Type: application/download" );
// disposition / encoding on response body
header( "Content-Disposition: attachment;filename={$filename}" );
header( "Content-Transfer-Encoding: binary" );
}
}
Methods Methods
- add_settings_field — Add Settings fields.
- adjust_brightness — Adjust Brightness.
- button — Callback button function.
- check_data — Check is isset and not empty data.
- checkbox — Callback checkbox function
- color — Callback color function.
- create_csv — Create CSV file from array.
- download_send_headers — Prepare headers for export csv file.
- editor — Callback editor function.
- filter_menu — Filter Settings Menu.
- filter_settings — Add Setting Fields.
- fonts — Callback fonts function.
- get_google_fonts — Get google fonts.
- input — Callback input function.
- is_isset — Check is isset data.
- page_title — Set title for leads section.
- register_general_settings — Register general settings.
- register_setting_fields — Register fields.
- select — Callback select function.
- set_fields — Fields of Tab "General Settings".
- textarea — Callback textarea function.
- upload — Callback upload function.
Changelog Changelog
| Version | Description |
|---|---|
| 1.0.0 | Introduced. |