/* Self-hosted subsets (cyrillic + latin). Onest + Golos Text, SIL OFL 1.1

   БЫЛО 12 объявлений @font-face на 12 URL — по одному на каждый вес. Но файлов
   на диске всего ЧЕТЫРЕ уникальных: golos-text-400/500/600/700-cyrillic.woff2
   байт-в-байт одинаковы, то же у латиницы и у обоих Onest. Это вариативные шрифты,
   один файл несёт всю ось веса (проверено: при font-synthesis:none ширина строки
   на 400/600/700 разная — то есть ось настоящая, а не синтетический жир).
   Браузер дедуплицирует по URL, а не по содержимому, и качал одни и те же байты
   до четырёх раз: 104 КБ уникального веса приезжали как 325 КБ.

   Плюс побочный дефект: у 'Golos Text 500' был свой URL, и лицо оставалось
   unloaded — текст на этом весе (.rise__on span, .qopt small) рисовался системным
   шрифтом. С диапазоном 400 700 оно берётся из уже загруженного файла.

   СТАЛО (03.09) восемь объявлений на восемь РАЗНЫХ файлов. Причина — бюджет одного
   ответа: маршрут до 130.49.151.197 рвёт ответ тяжелее 16 384 Б (размер
   максимальной TLS-записи), и три файла из четырёх за него выходили — латиница
   Golos 21 596, кириллица 19 164, латиница Onest 14 672. Оборванный woff2 не
   рисуется вовсе: текст остаётся на системном шрифте, а на VPN это выглядело как
   «через раз ломается вёрстка».

   Режем не символы, а ось веса: тяжёлая таблица одна — gvar, дельты веса. Одна
   ось 400–700 отдаётся двумя файлами, 400–500 и 600–700; покрытие символов у
   каждого прежнее, поэтому ни один знак не потерялся. Браузер выбирает файл по
   паре «диапазон символов × вес», то есть качает ровно то, чем набран текст.
   У Onest на страницах живут только 800 и 900 — там не диапазоны, а два
   статических начертания (запрос 600 по правилам подбора уходит на 800, ровно
   как и раньше при одном файле 800–900).

   ВАЖНО: разбивка по весу обязана совпадать во ВСЕХ диапазонах символов одного
   семейства. Первый заход оставил кириллицу Onest одним лицом «800 900» (9,1 КБ,
   в бюджет влезала) при латинице, разложенной на 800 и 900. Браузер тогда
   грузил только латинские файлы, а кириллическое лицо держал unloaded — и все
   заголовки уезжали в системный шрифт. На кадрах приёмки это не бросается
   в глаза, ловится замером: ширина H1 на /repetitor/ 503 → 466 px.

   Имена файлов первых половин прежние: на них стоит <link rel=preload> в шапке
   каждого макета, и переименование дало бы 404 на самом раннем запросе страницы.

   Сабсеты собирает tools/mkfonts.py, оригиналы — в fonts/.orig-full/.
   Осталось на потом: ← → ★ ✦ ₽ ‑ в исходных файлах отсутствуют и рисуются
   системным шрифтом — сабсет тут ни при чём. */

@font-face{font-family:'Onest';font-style:normal;font-weight:800;font-display:swap;
  src:url('fonts/onest-800-cyrillic.woff2') format('woff2');
  unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}
@font-face{font-family:'Onest';font-style:normal;font-weight:900;font-display:swap;
  src:url('fonts/onest-900-cyrillic.woff2') format('woff2');
  unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}
@font-face{font-family:'Onest';font-style:normal;font-weight:800;font-display:swap;
  src:url('fonts/onest-800-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Onest';font-style:normal;font-weight:900;font-display:swap;
  src:url('fonts/onest-900-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}

@font-face{font-family:'Golos Text';font-style:normal;font-weight:400 500;font-display:swap;
  src:url('fonts/golos-text-400-cyrillic.woff2') format('woff2');
  unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}
@font-face{font-family:'Golos Text';font-style:normal;font-weight:600 900;font-display:swap;
  src:url('fonts/golos-text-600-cyrillic.woff2') format('woff2');
  unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}
@font-face{font-family:'Golos Text';font-style:normal;font-weight:400 500;font-display:swap;
  src:url('fonts/golos-text-400-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Golos Text';font-style:normal;font-weight:600 900;font-display:swap;
  src:url('fonts/golos-text-600-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
