Больше результатов...

Generic selectors
Только точные совпадения
Искать в заголовках
Искать в контенте
Post Type Selectors
Filter by Categories
FAQ
Hostenko
Вдохновение
Видеоуроки
Новости
Плагины
Темы
Уроки
Хаки

С момента появления веб-шрифтов в 2009 году веб-дизайнеры получили доступ к богатому набору типографских палитр. Эти шрифты в основном применялись через правило CS @fontface, что позволяло дизайнерам отказаться от использования системных (веб-безопасных) шрифтов.

Использование переменных шрифтов в темах wordpress

inet.ws - Powerful VPS Hosting in the USA, Canada, UK and DE!

Крупные разработчики шрифтов предлагали (и предлагают) разнообразные форматы файлов шрифтов, в первую очередь Google Fonts.

В то время использование веб-шрифтов означало работу с отдельными файлами для каждого начертания и стиля. Например, такие имена файлов ясно показывали, как шрифт будет отображаться при использовании:

Roboto-Italic.woff2

Lato-BoldItalic.woff2

OpenSans-SemiBold.ttf

WorkSans-ExtraBold.ttf.

Каждый вариант приходилось загружать как отдельный файл. Это увеличивало размер страницы, требовало больше HTTP-запросов и усложняло выбор и применение шрифтов в дизайне.

Рост популярности вариативных шрифтов

В 2016 году произошел крупный прорыв в цифровой типографике: появились вариативные шрифты. Разработанные совместно Google, Apple, Adobe и Microsoft, они быстро стали популярными.

Отличительной особенностью вариативного шрифта является то, что он может содержать любой из следующих элементов, каждый из которых называется осью:

ОсьCSS-свойство
толщинаfont-weight
стильfont-style: italic
наклонныйfont-style: oblique
растягивающийсяfont-stretch
Оптический размер оси (opsz)font-variations-setting

Наиболее распространённым форматом файла является .woff2 (Web Open Font Format) — формат с высокой степенью сжатия, получивший рекомендацию W3C в 2018 году. Хотя такие форматы, как .ttf и .otf можно использовать в качестве вариативных шрифтов, наиболее эффективным является формат .woff2. Все современные браузеры поддерживают вариативные шрифты.

Для ясности мы проводим различие между «веб-шрифтами» и «вариативными шрифтами». Однако на практике вариативные шрифты часто объединяют с веб-шрифтами.

Зачем использовать переменные шрифты?

Есть три веские причины использовать вариативные шрифты в своих проектах:

  1. Повышенная производительность: вместо вызова нескольких отдельных файлов шрифтов (обычный, полужирный, курсив и т. д.) один файл переменного шрифта может охватывать все шрифты. Это означает меньше HTTP-запросов и более быструю загрузку.
  2. Гибкость дизайна: переменные шрифты обеспечивают точный контроль. Например, вместо того, чтобы ограничиваться значениями font-weight: 500 или 600, можно задать пользовательское значение, например 532.
  3. Адаптивная типографика: поскольку вариативные шрифты легко адаптируются, вы можете создавать типографику, которая будет реагировать на все устройства. Хороший пример: font-weight: clamp() масштабирование веса между областями просмотра без резких «скачков», характерных для статических файлов шрифтов.

Как WordPress использует переменные шрифты

С выпуском WordPress 6.1  в ноябре 2022 года в систему была добавлена ​​поддержка переменных шрифтов theme.json. Впервые это было продемонстрировано в Twenty Twenty-Three.

Настройка темы с помощью переменных шрифтов

При работе с дочерней темой TT5 мы начинаем с добавления в очередь стилей родительской и дочерней темы.

Чтобы гарантировать единообразное отображение наших пользовательских шрифтов как в редакторе, так и во внешнем интерфейсе, также добавляем в очередь fonts.css файл, содержащий необходимые @font-face объявления.

<?php
// enqueue parent and child styles
add_action('wp_enqueue_scripts', function() {
   wp_enqueue_style(
       'parent-style',
       get_template_directory_uri() . '/style.css'
   );

   wp_enqueue_style(
       'child-style',
       get_stylesheet_uri(),
       array('parent-style'),
       wp_get_theme()->get('Version')
   );

   // enqueue custom fonts
   wp_enqueue_style(
       'child-fonts',
       get_stylesheet_directory_uri() . '/fonts.css',
       array(),
       wp_get_theme()->get('Version')
   );
});

Как всегда, способ добавления скриптов в очередь зависит от самой темы. Единого стандартного метода не существует.Чтобы убедиться, что мы правильно настроили дочернюю тему, запускаем этот тест styles.css:

 body { background: #0000ff; }

Добавление шрифтов с помощью theme.json

В TT5 по умолчанию уже включены два вариативных шрифта: Manrope и Fira Code . В этом примере добавим Vollkorn и сделаем его шрифтом заголовков по умолчанию с толщиной 600.

Вот соответствующая часть theme.json:

{
  "$schema": "https://schemas.wp.org/wp/6.7/theme.json",
  "version": 3,
  "settings": {
    "appearanceTools": true,
    "typography": {
      "fontFamilies": [
        {
          "name": "Manrope",
          "slug": "manrope",
          "fontFamily": "Manrope, sans-serif",
          "fontFace": [
            {
              "fontFamily": "Manrope",
              "src": ["file:../twentytwentyfive/assets/fonts/manrope/Manrope-VariableFont_wght.woff2"],
              "fontWeight": "200 800",
              "fontStyle": "normal"
            }
          ]
        },
        {
          "name": "Fira Code",
          "slug": "fira-code",
          "fontFamily": "\"Fira Code\", monospace",
          "fontFace": [
            {
              "fontFamily": "\"Fira Code\"",
              "src": ["file:../twentytwentyfive/assets/fonts/fira-code/FiraCode-VariableFont_wght.woff2"],
              "fontWeight": "300 700",
              "fontStyle": "normal"
            }
          ]
        },
        {
          "name": "Vollkorn",
          "slug": "vollkorn",
          "fontFamily": "Vollkorn, serif",
          "fontFace": [
            {
              "fontFamily": "Vollkorn",
              "src": ["file:../twentytwentyfive/assets/fonts/vollkorn/Vollkorn-VariableFont_wght.woff2"],
              "fontWeight": "400 900",
              "fontStyle": "normal"
            },
            {
              "fontFamily": "Vollkorn",
              "src": ["file:../twentytwentyfive/assets/fonts/vollkorn/Vollkorn-Italic-VariableFont_wght.woff2"],
              "fontWeight": "400 900",
              "fontStyle": "italic"
            }
          ]
        }
      ],
      "customFontSize": true,
      "fluid": true
    }
  },
  "styles": {
    "typography": {
      "fontFamily": "var:preset|font-family|manrope"
    },
    "elements": {
      "heading": {
        "typography": {
          "fontFamily": "var:preset|font-family|vollkorn",
          "fontWeight": "600"
        }
      }
    }
  }
} 

Результатом стало появление шрифта Vollkorn на всем сайте.

vollkorn in wp

Шрифт Vollkorn теперь доступен в библиотеке шрифтов WordPress.

Следует отметить несколько моментов:

  • Возможно, вы захотите скопировать файлы Manrope и Fira Code своей дочерней теме в случае, если TT5 обновится и укажет новые пути к файлам.
  • Может показаться, что код для этих шрифтов избыточен, поскольку они уже зарегистрированы в родительской теме. Однако важно объявить их в дочерней теме. Это гарантирует их корректное отображение в интерфейсе библиотеки шрифтов и их доступность даже при обновлении родительской темы с новыми путями к файлам или внесении изменений.
  • Мы ссылаемся на два разных файла Vollkorn.

Обеспечение правильной загрузки шрифтов

Иногда шрифты не отображаются корректно на странице, пока вы не объявите их в CSS. Вот типичный пример styles.css:

/*
Theme Name: TT5 Child
Template: twentytwentyfive
Version: 1.0
*/

/* Ensure fonts are loaded and applied */
body {
  font-family: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
               Oxygen-Sans, Ubuntu, Cantarell, sans-serif;
}

code,
pre {
  font-family: 'Fira Code', 'Courier New', monospace;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: 'Vollkorn', 'Times New Roman', serif;
}

А в fonts.css мы объявляем файлы шрифтов с помощью @font-face. Это гарантирует, что браузер знает, какие шрифты загружать и применять. Если вы хотите действительно предварительно загрузить  критически важные шрифты (например, основной шрифт заголовка), то можете добавить <link rel="preload"> к сайту <head>dir="auto"> через хуки WordPress. В большинстве случаев @font-face правило с font-display: swap обеспечивает хороший баланс между производительностью и пользовательским опытом.

/* Preload critical fonts for better performance */
@font-face {
  font-family: 'Manrope';
  src: url('../twentytwentyfive/assets/fonts/manrope/Manrope-VariableFont_wght.woff2')
       format('woff2');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Fira Code';
  src: url('../twentytwentyfive/assets/fonts/fira-code/FiraCode-VariableFont_wght.woff2')
       format('woff2');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Vollkorn';
  src: url('../twentytwentyfive/assets/fonts/vollkorn/Vollkorn-VariableFont_wght.woff2')
       format('woff2');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Vollkorn';
  src: url('../twentytwentyfive/assets/fonts/vollkorn/Vollkorn-Italic-VariableFont_wght.woff2')
       format('woff2');
  font-weight: 100 900;
  font-style: italic;
  font-display: swap;
} 

В результате получается страница, на которой заголовки по умолчанию имеют шрифт Vollkorn с весом 600.

using vollkorn
При желании можно включить @font-face-правила в styles.css. Это также избавит от необходимости добавлять fonts.css файл в очередь.

Упрощаем для пользователей выбор начертания шрифта

Одно из главных преимуществ переменных шрифтов заключается в том, что их насыщенность не ограничена фиксированными значениями, такими как 400 или 600. Вы можете использовать любое значение от 100 до 900. Проблема в том, что WordPress не предоставляет встроенного пользовательского интерфейса для выбора этих значений насыщенности.

Чтобы решить эту проблему, мы создали минималистичный плагин под названием «Параметры начертания шрифта». Он добавляет страницу настроек в раздел «Внешний вид»  > «Начертание шрифта», где можно задать собственные значения начертания для основного текста, заголовков и блоков кода.

Вот сокращенный взгляд на основную логику:

<?php
/**
 * Plugin Name: Font Weight Options
 */

class Font_Weight_Options {
    public function __construct() {
        add_action( 'admin_menu', array( $this, 'add_admin_menu' ) );
        add_action( 'wp_head', array( $this, 'apply_font_weights_frontend' ) );
    }

    public function add_admin_menu() {
        add_theme_page(
            __( 'Font Weight Settings', 'font-weight-options' ),
            __( 'Font Weight', 'font-weight-options' ),
            'manage_options',
            'font-weight-settings',
            array( $this, 'render_admin_page' )
        );
    }

    public function apply_font_weights_frontend() {
        $weights = get_option( 'fwo_font_weights', array(
            'body' => 400,
            'headings' => 600,
            'code' => 400,
        ) );

        echo "<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cstyle%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20body%20%7B%20font-weight%3A%20%7B%24weights%5B'body'%5D%7D%20!important%3B%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20h1%2C%20h2%2C%20h3%2C%20h4%2C%20h5%2C%20h6%20%7B%20font-weight%3A%20%7B%24weights%5B'headings'%5D%7D%20!important%3B%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20code%2C%20pre%20%7B%20font-weight%3A%20%7B%24weights%5B'code'%5D%7D%20!important%3B%20%7D%0A%20%20%20%20%20%20%20%20%3C%2Fstyle%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="&lt;style&gt;" title="&lt;style&gt;" />";
    }
}

new Font_Weight_Options();

Фрагмент выше демонстрирует основную логику. Мы опубликовали полный исходный код на GitHub Gist, если вы хотите увидеть плагин целиком, включая форму настроек и валидацию.

Полная версия добавляет:

  • Значения по умолчанию при активации плагина.
  • Простая форма настроек администратора с числовыми полями (100–900).
  • Проверка для поддержания значений в пределах диапазона.
  • Вывод весов как в редакторе блоков, так и в интерфейсе.

В результате появилась новая страница в панели администратора WP, которая позволяет пользователям устанавливать значения насыщенности для трёх шрифтов. Мы выбрали три «нестандартных» значения.

new font weight

Новая страница настроек насыщенности шрифтов на панели администратора WordPress.

Результатом является страница с соответствующими значениями начертания шрифтов, которые отображаются так, как и ожидалось, в редакторе страниц и на внешнем интерфейсе.

test fonts wp

Страница в админке WordPress, отображающая три шрифта с назначенной им шириной.

Более простой и удобный способ добавить один переменный шрифт

Но что делать, если вы предпочитаете что-то другое, а не шрифт Google? Существует множество способов получить должным образом лицензированные шрифты с открытым исходным кодом для ваших проектов. Мы обратились к GitHub, чтобы получить SourceSans3VF-Upright — шрифт Adobe.

Наша цель — использовать его как дополнительный шрифт, который будет корректно отображаться в редакторе и на внешнем интерфейсе.

Файл шрифта находится в /assets/fonts папке нашей дочерней темы. Там мы создали functions.php.

<?php
/**
 * Enqueue parent and child theme styles.
 */
function twentytwentyfive_kinstachild_enqueue_styles() {
    // Parent theme style.
    wp_enqueue_style(
        'twentytwentyfive-style',
        get_parent_theme_file_uri( 'style.css' ),
        array(),
        wp_get_theme()-&amp;amp;amp;gt;get( 'Version' )
    );

    // Child theme style.
    wp_enqueue_style(
        'twentytwentyfive-child-style',
        get_stylesheet_uri(),
        array( 'twentytwentyfive-style' ),
        wp_get_theme()-&amp;amp;amp;gt;get( 'Version' )
    );
}
add_action( 'wp_enqueue_scripts', 'twentytwentyfive_kinstachild_enqueue_styles' );

/**
 * Enqueue child theme styles in the editor.
 */
add_action( 'after_setup_theme', function() {
    add_editor_style( 'style.css' );
} );

Информация

Обратите внимание, что в этой более простой настройке мы не добавляем пользовательские шрифты в очередь вручную. Это связано с тем, что переменные шрифты, определенные в theme.json, автоматически обрабатываются WordPress, если они правильно объявлены. Это одно из преимуществ использования блочной системы тем.

Как и в предыдущем примере, theme.json файл должен ссылаться на коды Manrope и Fira из родительского файла. Отсутствие этих ссылок приведет к их удалению из темы.

 {
  "$schema": "https://schemas.wp.org/wp/6.7/theme.json",
  "version": 3,
  "settings": {
    "typography": {
      "fontFamilies": [
        {
          "name": "Manrope",
          "slug": "manrope",
          "fontFamily": "Manrope, sans-serif",
          "fontFace": [
            {
              "src": [
                "file:../twentytwentyfive/assets/fonts/manrope/Manrope-VariableFont_wght.woff2"
              ],
              "fontWeight": "100 900",
              "fontStyle": "normal",
              "fontFamily": "Manrope"
            }
          ]
        },
        {
          "name": "Fira Code",
          "slug": "fira-code",
          "fontFamily": "\"Fira Code\", monospace",
          "fontFace": [
            {
              "src": [
                "file:../twentytwentyfive/assets/fonts/fira-code/FiraCode-VariableFont_wght.woff2"
              ],
              "fontWeight": "100 900",
              "fontStyle": "normal",
              "fontFamily": "\"Fira Code\""
            }
          ]
        },
        {
          "name": "Source Sans 3",
          "slug": "source-sans-3",
          "fontFamily": "\"Source Sans 3\", sans-serif",
          "fontFace": [
            {
              "src": [
                "file:./assets/fonts/SourceSans3VF-Upright.woff2"
              ],
              "fontWeight": "100 900",
              "fontStyle": "normal",
              "fontFamily": "Source Sans 3"
            }
          ]
        }
      ]
    }
  }
}

Помните, что по-прежнему нужен базовый styles.css файл, включающий необходимые метаданные, сообщающие WordPress, что вы работаете с дочерней темой.

Независимо от того, выбираете ли вы полностью индивидуальную настройку или быструю интеграцию, вариативные шрифты в WordPress — это мощный способ улучшить типографику вашего сайта. Они повышают производительность, упрощают дизайн и предоставляют адаптивные и гибкие возможности дизайна, которые просто невозможно реализовать с помощью традиционных статических шрифтов.

Чтобы раскрыть весь их потенциал, может потребоваться создать специальный пользовательский интерфейс, который отображает переменные оси (например, вес, наклон или оптический размер) и предоставляет владельцам сайтов больше контроля.

Источник: kinsta.com

inet.ws - Powerful VPS Hosting in the USA, Canada, UK and DE!
Алексей Шевченко
редактор wpcafe
Изучает сайтостроение с 2008 года. Практикующий вебмастер, специализирующийся на создании сайтов на WordPress. Задать вопрос Алексею можно на https://profiles.wordpress.org/wpthemeus/

Комментарии к записи: 0

Добавить комментарий