$variants ) { $variants = array_unique( $variants ); $font_sets[] = $font_family . ':' . implode( ',', $variants ); } $query_args = array( 'family' => urlencode( implode( '|', $font_sets ) ), 'subset' => urlencode( 'latin,latin-ext' ), 'display' => urlencode( 'fallback' ), ); $fonts_url = add_query_arg( $query_args, 'https://fonts.googleapis.com/css' ); } return apply_filters( 'twentig_google_fonts_url', esc_url_raw( $fonts_url ) ); } /** * Returns font choices for body. */ function twentig_get_body_fonts() { $font_options = array( '' => __( 'Default Theme Font', 'twentig' ), 'sans-serif' => __( 'UI System Font', 'twentig' ), ); $google_font_options = twentig_get_fonts(); foreach ( $google_font_options as $font ) { if ( isset( $font[ 'bodyText' ] ) && ! $font['bodyText'] ) { continue; } $font_options[ $font['family'] ] = $font['family']; } return $font_options; } /** * Returns font choices for headings. */ function twentig_get_heading_fonts() { $font_options = array( '' => __( 'Default Theme Font', 'twentig' ), 'sans-serif' => __( 'UI System Font', 'twentig' ), ); $google_font_options = twentig_get_fonts(); foreach ( $google_font_options as $font ) { if ( isset( $font[ 'headingText' ] ) && ! $font['headingText'] ) { continue; } $font_options[ $font['family'] ] = $font['family']; } return $font_options; } /** * Returns font stack for a given font. */ function twentig_get_font_stack( $font_name ) { if ( 'sans-serif' === $font_name ) { return '-apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Helvetica, sans-serif'; } return "'" . $font_name . "', ". twentig_get_font_fallback( $font_name ); } /** * Returns font fallback for a given font. */ function twentig_get_font_fallback( $font_name ) { $fonts = twentig_get_fonts(); foreach ( $fonts as $font ) { if ( $font_name == $font['family'] ) { return $font['category']; } } return 'sans-serif'; } /** * Returns all available fonts. */ function twentig_get_fonts() { $fonts = array( array( 'family' => 'Alegreya', 'category' => 'serif', 'variants' => array( '400', '500', '700', '800', '900' ), ), array( 'family' => 'Alegreya Sans', 'category' => 'sans-serif', 'variants' => array( '400', '500', '700', '800', '900' ), ), array( 'family' => 'Archivo Narrow', 'category' => 'sans-serif', 'bodyText' => false, 'variants' => array( '400', '500', '600', '700' ), ), array( 'family' => 'Arimo', 'category' => 'sans-serif', 'variants' => array( '400', '700' ), ), array( 'family' => 'Arvo', 'category' => 'serif', 'variants' => array( '400', '700' ), ), array( 'family' => 'Arya', 'category' => 'sans-serif', 'bodyText' => false, 'variants' => array( '400', '700' ), ), array( 'family' => 'Asap', 'category' => 'sans-serif', 'variants' => array( '400', '500', '600', '700' ), ), array( 'family' => 'Asap Condensed', 'category' => 'sans-serif', 'bodyText' => false, 'variants' => array( '400', '500', '600', '700' ), ), array( 'family' => 'B612', 'category' => 'sans-serif', 'variants' => array( '400', '700' ), ), array( 'family' => 'Barlow', 'category' => 'sans-serif', 'variants' => array( '400', '500', '600', '700', '800', '900' ), ), array( 'family' => 'Barlow Condensed', 'category' => 'sans-serif', 'bodyText' => false, 'variants' => array( '400', '500', '600', '700', '800', '900' ), ), array( 'family' => 'Big Shoulders Display', 'category' => 'sans-serif', 'bodyText' => false, 'variants' => array( '400', '500', '600', '700', '800', '900' ), ), array( 'family' => 'BioRhyme', 'category' => 'serif', 'bodyText' => false, 'variants' => array( '400', '700', '800' ), ), array( 'family' => 'Bitter', 'category' => 'serif', 'variants' => array( '400', '700' ), ), array( 'family' => 'Cabin', 'category' => 'sans-serif', 'variants' => array( '400', '500', '600', '700' ), ), array( 'family' => 'Cabin Condensed', 'category' => 'sans-serif', 'bodyText' => false, 'variants' => array( '400', '500', '600', '700' ), ), array( 'family' => 'Cardo', 'category' => 'serif', 'variants' => array( '400', '700' ), ), array( 'family' => 'Chivo', 'category' => 'sans-serif', 'variants' => array( '400', '700', '900' ), ), array( 'family' => 'Comfortaa', 'category' => 'cursive', 'bodyText' => false, 'variants' => array( '400', '700' ), ), array( 'family' => 'Cormorant Garamond', 'category' => 'serif', 'bodyText' => false, 'variants' => array( '400', '500', '600', '700' ), ), array( 'family' => 'Cousine', 'category' => 'monospace', 'variants' => array( '400', '700' ), ), array( 'family' => 'Crimson Pro', 'category' => 'serif', 'variants' => array( '400', '500', '600', '700', '800', '900' ), ), array( 'family' => 'DM Sans', 'category' => 'sans-serif', 'variants' => array( '400', '500', '700' ), ), array( 'family' => 'Domine', 'category' => 'serif', 'bodyText' => false, 'variants' => array( '400', '700' ), ), array( 'family' => 'Dosis', 'category' => 'sans-serif', 'bodyText' => false, 'variants' => array( '400', '500', '600', '700', '800' ), ), array( 'family' => 'EB Garamond', 'category' => 'serif', 'variants' => array( '400', '500', '600', '700', '800' ), ), array( 'family' => 'Eczar', 'category' => 'serif', 'bodyText' => false, 'variants' => array( '400', '500', '600', '700', '800' ), ), array( 'family' => 'Exo 2', 'category' => 'sans-serif', 'variants' => array( '400', '500', '600', '700', '800', '900' ), ), array( 'family' => 'Fira Sans', 'category' => 'sans-serif', 'variants' => array( '400', '500', '600', '700', '800', '900' ), ), array( 'family' => 'Fira Sans Condensed', 'category' => 'sans-serif', 'bodyText' => false, 'variants' => array( '400', '500', '600', '700', '800', '900' ), ), array( 'family' => 'Gentium Basic', 'category' => 'serif', 'variants' => array( '400', '700' ), ), array( 'family' => 'IBM Plex Mono', 'category' => 'monospace', 'variants' => array( '400', '500', '600', '700' ), ), array( 'family' => 'IBM Plex Sans', 'category' => 'sans-serif', 'variants' => array( '400', '500', '600', '700' ), ), array( 'family' => 'IBM Plex Sans Condensed', 'category' => 'sans-serif', 'bodyText' => false, 'variants' => array( '400', '500', '600', '700' ), ), array( 'family' => 'IBM Plex Serif', 'category' => 'serif', 'variants' => array( '400', '500', '600', '700' ), ), array( 'family' => 'Inconsolata', 'category' => 'monospace', 'bodyText' => false, 'variants' => array( '400', '700' ), ), array( 'family' => 'Inknut Antiqua', 'category' => 'serif', 'bodyText' => false, 'variants' => array( '400', '500', '600', '700', '800', '900' ), ), array( 'family' => 'Inria Serif', 'category' => 'serif', 'variants' => array( '400', '700' ), ), array( 'family' => 'Josefin Sans', 'category' => 'sans-serif', 'variants' => array( '400', '600', '700' ), ), array( 'family' => 'Josefin Slab', 'category' => 'serif', 'variants' => array( '400', '600', '700' ), ), array( 'family' => 'Kalam', 'category' => 'cursive', 'bodyText' => false, 'variants' => array( '400', '700' ), ), array( 'family' => 'Karla', 'category' => 'sans-serif', 'variants' => array( '400', '700' ), ), array( 'family' => 'Lato', 'category' => 'sans-serif', 'variants' => array( '400', '700', '900' ), ), array( 'family' => 'Lekton', 'category' => 'sans-serif', 'variants' => array( '400', '700' ), ), array( 'family' => 'Libre Baskerville', 'category' => 'serif', 'variants' => array( '400', '700' ), ), array( 'family' => 'Libre Franklin', 'category' => 'sans-serif', 'variants' => array( '400', '500', '600', '700', '800', '900' ), ), array( 'family' => 'Lora', 'category' => 'serif', 'variants' => array( '400', '700' ), ), array( 'family' => 'Merriweather', 'category' => 'serif', 'variants' => array( '400', '700', '900' ), ), array( 'family' => 'Merriweather Sans', 'category' => 'sans-serif', 'variants' => array( '400', '700', '800' ), ), array( 'family' => 'Montserrat', 'category' => 'sans-serif', 'variants' => array( '400', '500', '600', '700', '800', '900' ), ), array( 'family' => 'Muli', 'category' => 'sans-serif', 'variants' => array( '400', '600', '700', '800', '900' ), ), array( 'family' => 'Neuton', 'category' => 'serif', 'variants' => array( '400', '700', '800' ), ), array( 'family' => 'Noto Sans', 'category' => 'sans-serif', 'variants' => array( '400', '700' ), ), array( 'family' => 'Noto Serif', 'category' => 'serif', 'variants' => array( '400', '700' ), ), array( 'family' => 'Nunito', 'category' => 'sans-serif', 'variants' => array( '400', '600', '700', '800', '900' ), ), array( 'family' => 'Nunito Sans', 'category' => 'sans-serif', 'variants' => array( '400', '600', '700', '800', '900' ), ), array( 'family' => 'Old Standard TT', 'category' => 'serif', 'bodyText' => false, 'variants' => array( '400', '700' ), ), array( 'family' => 'Open Sans', 'category' => 'sans-serif', 'variants' => array( '400', '600', '700', '800' ), ), array( 'family' => 'Oswald', 'category' => 'sans-serif', 'bodyText' => false, 'variants' => array( '400', '500', '600', '700' ), ), array( 'family' => 'Overpass', 'category' => 'sans-serif', 'variants' => array( '400', '600', '700', '800', '900' ), ), array( 'family' => 'Playfair Display', 'category' => 'serif', 'bodyText' => false, 'variants' => array( '400', '700', '900' ), ), array( 'family' => 'Poppins', 'category' => 'sans-serif', 'variants' => array( '400', '500', '600', '700', '800', '900' ), ), array( 'family' => 'Proza Libre', 'category' => 'sans-serif', 'variants' => array( '400', '500', '600', '700', '800' ), ), array( 'family' => 'PT Sans', 'category' => 'sans-serif', 'variants' => array( '400', '700' ), ), array( 'family' => 'PT Sans Narrow', 'category' => 'sans-serif', 'bodyText' => false, 'variants' => array( '400', '700' ), ), array( 'family' => 'PT Serif', 'category' => 'serif', 'variants' => array( '400', '700' ), ), array( 'family' => 'Quattrocento', 'category' => 'serif', 'bodyText' => false, 'variants' => array( '400', '700' ), ), array( 'family' => 'Quattrocento Sans', 'category' => 'sans-serif', 'variants' => array( '400', '700' ), ), array( 'family' => 'Rajdhani', 'category' => 'sans-serif', 'bodyText' => false, 'variants' => array( '400', '500', '600', '700' ), ), array( 'family' => 'Red Hat Display', 'category' => 'sans-serif', 'bodyText' => false, 'variants' => array( '400', '500', '700', '900' ), ), array( 'family' => 'Red Hat Text', 'category' => 'sans-serif', 'variants' => array( '400', '500', '700' ), ), array( 'family' => 'Raleway', 'category' => 'sans-serif', 'variants' => array( '400', '500', '600', '700', '800', '900' ), ), array( 'family' => 'Roboto', 'category' => 'sans-serif', 'variants' => array( '400', '500', '700', '900' ), ), array( 'family' => 'Roboto Condensed', 'category' => 'sans-serif', 'bodyText' => false, 'variants' => array( '400', '700' ), ), array( 'family' => 'Roboto Mono', 'category' => 'monospace', 'variants' => array( '400', '500', '700' ), ), array( 'family' => 'Roboto Slab', 'category' => 'serif', 'bodyText' => false, 'variants' => array( '400', '700' ), ), array( 'family' => 'Rubik', 'category' => 'sans-serif', 'variants' => array( '400', '500', '700', '900' ), ), array( 'family' => 'Rufina', 'category' => 'serif', 'bodyText' => false, 'variants' => array( '400', '700' ), ), array( 'family' => 'Signika', 'category' => 'sans-serif', 'bodyText' => false, 'variants' => array( '400', '600', '700' ), ), array( 'family' => 'Source Code Pro', 'category' => 'monospace', 'bodyText' => false, 'variants' => array( '400', '500', '600', '700', '900' ), ), array( 'family' => 'Source Sans Pro', 'category' => 'sans-serif', 'variants' => array( '400', '600', '700', '900' ), ), array( 'family' => 'Source Serif Pro', 'category' => 'serif', 'bodyText' => false, 'variants' => array( '400', '600', '700' ), ), array( 'family' => 'Space Mono', 'category' => 'monospace', 'variants' => array( '400', '700' ), ), array( 'family' => 'Spectral', 'category' => 'serif', 'variants' => array( '400', '500', '600', '700', '800' ), ), array( 'family' => 'Taviraj', 'category' => 'serif', 'variants' => array( '400', '500', '600', '700', '800', '900' ), ), array( 'family' => 'Tinos', 'category' => 'serif', 'variants' => array( '400', '700' ), ), array( 'family' => 'Titillium Web', 'category' => 'sans-serif', 'variants' => array( '400', '600', '700', '900' ), ), array( 'family' => 'Ubuntu', 'category' => 'sans-serif', 'variants' => array( '400', '500', '700' ), ), array( 'family' => 'Ubuntu Mono', 'category' => 'monospace', 'variants' => array( '400', '700' ), ), array( 'family' => 'Vollkorn', 'category' => 'serif', 'variants' => array( '400', '600', '700', '900' ), ), array( 'family' => 'Work Sans', 'category' => 'sans-serif', 'bodyText' => false, 'variants' => array( '400', '500', '600', '700', '800', '900' ), ), ); return apply_filters( 'twentig_fonts', $fonts ); } /** * Returns font weight choices. */ function twentig_get_font_styles() { $list_font_weights = array( '' => __( 'Default', 'twentig' ), '300' => __( 'Light 300', 'twentig' ), '400' => __( 'Regular 400', 'twentig' ), '500' => __( 'Medium 500', 'twentig' ), '600' => __( 'Semi-Bold 600', 'twentig' ), '700' => __( 'Bold 700', 'twentig' ), '800' => __( 'Extra-Bold 800', 'twentig' ), '900' => __( 'Black 900', 'twentig' ), ); return $list_font_weights; } /** * Returns default body font size. Back compat for early versions. */ function twentig_get_default_body_font_size() { if ( 'sans-serif' == get_theme_mod( 'twentig_body_font' ) && '' == get_theme_mod( 'twentig_body_font_size' ) ) { return 'medium'; } return 'large'; }