[ Index ]

PHP Cross Reference of WordPress Trunk (Updated Daily)

Search

title

Body

[close]

/wp-content/themes/twentytwenty/classes/ -> class-twentytwenty-non-latin-languages.php (source)

   1  <?php
   2  /**
   3   * Non-latin language handling.
   4   *
   5   * Handle non-latin language styles.
   6   *
   7   * @package WordPress
   8   * @subpackage Twenty_Twenty
   9   * @since Twenty Twenty 1.0
  10   */
  11  
  12  if ( ! class_exists( 'TwentyTwenty_Non_Latin_Languages' ) ) {
  13      /**
  14       * Language handling.
  15       *
  16       * @since Twenty Twenty 1.0
  17       */
  18      class TwentyTwenty_Non_Latin_Languages {
  19  
  20          /**
  21           * Get custom CSS.
  22           *
  23           * Return CSS for non-latin language, if available, or null
  24           *
  25           * @since Twenty Twenty 1.0
  26           *
  27           * @param string $type Whether to return CSS for the "front-end", "block-editor", or "classic-editor".
  28           * @return string|null Custom CSS, or null if not applicable.
  29           */
  30  		public static function get_non_latin_css( $type = 'front-end' ) {
  31  
  32              // Fetch site locale.
  33              $locale = get_bloginfo( 'language' );
  34  
  35              /**
  36               * Filters the fallback fonts for non-latin languages.
  37               *
  38               * @since Twenty Twenty 1.0
  39               *
  40               * @param array $font_family An array of locales and font families.
  41               */
  42              $font_family = apply_filters(
  43                  'twentytwenty_get_localized_font_family_types',
  44                  array(
  45  
  46                      // Arabic.
  47                      'ar'    => array( 'Tahoma', 'Arial', 'sans-serif' ),
  48                      'ary'   => array( 'Tahoma', 'Arial', 'sans-serif' ),
  49                      'azb'   => array( 'Tahoma', 'Arial', 'sans-serif' ),
  50                      'ckb'   => array( 'Tahoma', 'Arial', 'sans-serif' ),
  51                      'fa-IR' => array( 'Tahoma', 'Arial', 'sans-serif' ),
  52                      'haz'   => array( 'Tahoma', 'Arial', 'sans-serif' ),
  53                      'ps'    => array( 'Tahoma', 'Arial', 'sans-serif' ),
  54  
  55                      // Chinese Simplified (China) - Noto Sans SC.
  56                      'zh-CN' => array( '\'PingFang SC\'', '\'Helvetica Neue\'', '\'Microsoft YaHei New\'', '\'STHeiti Light\'', 'sans-serif' ),
  57  
  58                      // Chinese Traditional (Taiwan) - Noto Sans TC.
  59                      'zh-TW' => array( '\'PingFang TC\'', '\'Helvetica Neue\'', '\'Microsoft YaHei New\'', '\'STHeiti Light\'', 'sans-serif' ),
  60  
  61                      // Chinese (Hong Kong) - Noto Sans HK.
  62                      'zh-HK' => array( '\'PingFang HK\'', '\'Helvetica Neue\'', '\'Microsoft YaHei New\'', '\'STHeiti Light\'', 'sans-serif' ),
  63  
  64                      // Cyrillic.
  65                      'bel'   => array( '\'Helvetica Neue\'', 'Helvetica', '\'Segoe UI\'', 'Arial', 'sans-serif' ),
  66                      'bg-BG' => array( '\'Helvetica Neue\'', 'Helvetica', '\'Segoe UI\'', 'Arial', 'sans-serif' ),
  67                      'kk'    => array( '\'Helvetica Neue\'', 'Helvetica', '\'Segoe UI\'', 'Arial', 'sans-serif' ),
  68                      'mk-MK' => array( '\'Helvetica Neue\'', 'Helvetica', '\'Segoe UI\'', 'Arial', 'sans-serif' ),
  69                      'mn'    => array( '\'Helvetica Neue\'', 'Helvetica', '\'Segoe UI\'', 'Arial', 'sans-serif' ),
  70                      'ru-RU' => array( '\'Helvetica Neue\'', 'Helvetica', '\'Segoe UI\'', 'Arial', 'sans-serif' ),
  71                      'sah'   => array( '\'Helvetica Neue\'', 'Helvetica', '\'Segoe UI\'', 'Arial', 'sans-serif' ),
  72                      'sr-RS' => array( '\'Helvetica Neue\'', 'Helvetica', '\'Segoe UI\'', 'Arial', 'sans-serif' ),
  73                      'tt-RU' => array( '\'Helvetica Neue\'', 'Helvetica', '\'Segoe UI\'', 'Arial', 'sans-serif' ),
  74                      'uk'    => array( '\'Helvetica Neue\'', 'Helvetica', '\'Segoe UI\'', 'Arial', 'sans-serif' ),
  75  
  76                      // Devanagari.
  77                      'bn-BD' => array( 'Arial', 'sans-serif' ),
  78                      'hi-IN' => array( 'Arial', 'sans-serif' ),
  79                      'mr'    => array( 'Arial', 'sans-serif' ),
  80                      'ne-NP' => array( 'Arial', 'sans-serif' ),
  81  
  82                      // Greek.
  83                      'el'    => array( '\'Helvetica Neue\', Helvetica, Arial, sans-serif' ),
  84  
  85                      // Gujarati.
  86                      'gu'    => array( 'Arial', 'sans-serif' ),
  87  
  88                      // Hebrew.
  89                      'he-IL' => array( '\'Arial Hebrew\'', 'Arial', 'sans-serif' ),
  90  
  91                      // Japanese.
  92                      'ja'    => array( 'sans-serif' ),
  93  
  94                      // Korean.
  95                      'ko-KR' => array( '\'Apple SD Gothic Neo\'', '\'Malgun Gothic\'', '\'Nanum Gothic\'', 'Dotum', 'sans-serif' ),
  96  
  97                      // Thai.
  98                      'th'    => array( '\'Sukhumvit Set\'', '\'Helvetica Neue\'', 'Helvetica', 'Arial', 'sans-serif' ),
  99  
 100                      // Vietnamese.
 101                      'vi'    => array( '\'Libre Franklin\'', 'sans-serif' ),
 102  
 103                  )
 104              );
 105  
 106              // Return if the selected language has no fallback fonts.
 107              if ( empty( $font_family[ $locale ] ) ) {
 108                  return null;
 109              }
 110  
 111              /**
 112               * Filters the elements to apply fallback fonts to.
 113               *
 114               * @since Twenty Twenty 1.0
 115               *
 116               * @param array $elements An array of elements for "front-end", "block-editor", or "classic-editor".
 117               */
 118              $elements = apply_filters(
 119                  'twentytwenty_get_localized_font_family_elements',
 120                  array(
 121                      'front-end'      => array( 'body', 'input', 'textarea', 'button', '.button', '.faux-button', '.faux-button.more-link', '.wp-block-button__link', '.wp-block-file__button', '.has-drop-cap:not(:focus)::first-letter', '.entry-content .wp-block-archives', '.entry-content .wp-block-categories', '.entry-content .wp-block-cover-image', '.entry-content .wp-block-cover-image p', '.entry-content .wp-block-latest-comments', '.entry-content .wp-block-latest-posts', '.entry-content .wp-block-pullquote', '.entry-content .wp-block-quote.is-large', '.entry-content .wp-block-quote.is-style-large', '.entry-content .wp-block-archives *', '.entry-content .wp-block-categories *', '.entry-content .wp-block-latest-posts *', '.entry-content .wp-block-latest-comments *', '.entry-content', '.entry-content h1', '.entry-content h2', '.entry-content h3', '.entry-content h4', '.entry-content h5', '.entry-content h6', '.entry-content p', '.entry-content ol', '.entry-content ul', '.entry-content dl', '.entry-content dt', '.entry-content cite', '.entry-content figcaption', '.entry-content table', '.entry-content address', '.entry-content .wp-caption-text', '.entry-content .wp-block-file', '.comment-content p', '.comment-content ol', '.comment-content ul', '.comment-content dl', '.comment-content dt', '.comment-content cite', '.comment-content figcaption', '.comment-content .wp-caption-text', '.widget_text p', '.widget_text ol', '.widget_text ul', '.widget_text dl', '.widget_text dt', '.widget-content .rssSummary', '.widget-content cite', '.widget-content figcaption', '.widget-content .wp-caption-text' ),
 122                      'block-editor'   => array( '.editor-styles-wrapper > *', '.editor-styles-wrapper p', '.editor-styles-wrapper ol', '.editor-styles-wrapper ul', '.editor-styles-wrapper dl', '.editor-styles-wrapper dt', '.editor-post-title__block .editor-post-title__input', '.editor-styles-wrapper .wp-block-post-title', '.editor-styles-wrapper h1', '.editor-styles-wrapper h2', '.editor-styles-wrapper h3', '.editor-styles-wrapper h4', '.editor-styles-wrapper h5', '.editor-styles-wrapper h6', '.editor-styles-wrapper .has-drop-cap:not(:focus)::first-letter', '.editor-styles-wrapper cite', '.editor-styles-wrapper figcaption', '.editor-styles-wrapper .wp-caption-text' ),
 123                      'classic-editor' => array( 'body#tinymce.wp-editor', 'body#tinymce.wp-editor p', 'body#tinymce.wp-editor ol', 'body#tinymce.wp-editor ul', 'body#tinymce.wp-editor dl', 'body#tinymce.wp-editor dt', 'body#tinymce.wp-editor figcaption', 'body#tinymce.wp-editor .wp-caption-text', 'body#tinymce.wp-editor .wp-caption-dd', 'body#tinymce.wp-editor cite', 'body#tinymce.wp-editor table' ),
 124                  )
 125              );
 126  
 127              // Return if the specified type doesn't exist.
 128              if ( empty( $elements[ $type ] ) ) {
 129                  return null;
 130              }
 131  
 132              // Return the specified styles.
 133              return twentytwenty_generate_css( implode( ',', $elements[ $type ] ), 'font-family', implode( ',', $font_family[ $locale ] ), null, null, false );
 134          }
 135      }
 136  }


Generated : Thu Nov 21 08:20:01 2024 Cross-referenced by PHPXref