/* common-core: пробел, цифры и пунктуация вынесены из latin-core.
   Раньше latin-core объявлялся как U+0020-007E, а в cyrillic-core этих
   глифов нет вовсе — из-за чего полностью русская страница тянула 150 КБ
   латиницы ради пробелов. Теперь латиница грузится только там, где есть
   латинские буквы. */
/* Шрифты «Оттиска» — размещены у нас: сайт не зависит от внешних CDN
   (Google Fonts с некоторых VPN-выходов висит и блокирует отрисовку).
   Literata, Golos Text, JetBrains Mono — лицензия OFL.

   Core-файлы оставляют русский и расширенный кириллический набор исходных
   webfont-файлов, basic Latin, цифры и реально используемую русскую
   типографику. Вариационные оси wght ограничены диапазонами, которые
   объявлены ниже; оптическая ось Literata сохранена полностью. Оригинальные
   файлы лежат рядом как безопасный источник для будущего пересобирания. */

/* Golos Text · variable 400–600 · cyrillic */
@font-face {
  font-family: 'Golos Text';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(golos-text-normal-400-600-cyrillic-core.woff2) format('woff2');
  unicode-range: U+0301, U+0401-040C, U+040E-044F, U+0451-045C, U+045E-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* Golos Text · variable 400–600 · latin */
@font-face {
  font-family: 'Golos Text';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(golos-text-normal-400-600-common-core.woff2) format('woff2');
  unicode-range: U+0020-0023, U+0025-002F, U+0030-003F, U+005B-005D, U+005F, U+00A0, U+00A7, U+00A9, U+00AB, U+00B0-00B1, U+00B6-00B7, U+00BB, U+00D7, U+2009, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026;
}
@font-face {
  font-family: 'Golos Text';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(golos-text-normal-400-600-latin-core.woff2) format('woff2');
  unicode-range: U+0024, U+0040, U+0041-005A, U+005E, U+0060, U+0061-007A, U+007B-007E, U+2032-2033, U+2039-203A, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215;
}
/* JetBrains Mono · variable 400–600 · cyrillic */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(jetbrains-mono-normal-400-600-cyrillic-core.woff2) format('woff2');
  unicode-range: U+0301, U+0401-040C, U+040E-044F, U+0451-045C, U+045E-045F, U+0490-0491, U+2116;
}
/* JetBrains Mono · variable 400–600 · latin */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(jetbrains-mono-normal-400-600-common-core.woff2) format('woff2');
  unicode-range: U+0020-0023, U+0025-002F, U+0030-003F, U+005B-005D, U+005F, U+00A0, U+00A7, U+00A9, U+00AB, U+00B0-00B1, U+00B6-00B7, U+00BB, U+00D7, U+2009, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026;
}
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(jetbrains-mono-normal-400-600-latin-core.woff2) format('woff2');
  unicode-range: U+0024, U+0040, U+0041-005A, U+005E, U+0060, U+0061-007A, U+007B-007E, U+2032-2033, U+2039-203A, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215;
}
/* Literata · italic 400 · cyrillic */
@font-face {
  font-family: 'Literata';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(literata-italic-400-cyrillic-core.woff2) format('woff2');
  unicode-range: U+0301, U+0401-044F, U+0451-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* Literata · italic 400 · latin */
@font-face {
  font-family: 'Literata';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(literata-italic-400-common-core.woff2) format('woff2');
  unicode-range: U+0020-0023, U+0025-002F, U+0030-003F, U+005B-005D, U+005F, U+00A0, U+00A7, U+00A9, U+00AB, U+00B0-00B1, U+00B6-00B7, U+00BB, U+00D7, U+2009, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026;
}
@font-face {
  font-family: 'Literata';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(literata-italic-400-latin-core.woff2) format('woff2');
  unicode-range: U+0024, U+0040, U+0041-005A, U+005E, U+0060, U+0061-007A, U+007B-007E, U+2032-2033, U+2039-203A, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215;
}
/* Literata · normal 300-700 · cyrillic */
@font-face {
  font-family: 'Literata';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(literata-normal-300-700-cyrillic-core.woff2) format('woff2');
  unicode-range: U+0301, U+0401-044F, U+0451-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* Literata · normal 300-700 · latin */
@font-face {
  font-family: 'Literata';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(literata-normal-300-700-common-core.woff2) format('woff2');
  unicode-range: U+0020-0023, U+0025-002F, U+0030-003F, U+005B-005D, U+005F, U+00A0, U+00A7, U+00A9, U+00AB, U+00B0-00B1, U+00B6-00B7, U+00BB, U+00D7, U+2009, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026;
}
@font-face {
  font-family: 'Literata';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(literata-normal-300-700-latin-core.woff2) format('woff2');
  unicode-range: U+0024, U+0040, U+0041-005A, U+005E, U+0060, U+0061-007A, U+007B-007E, U+2032-2033, U+2039-203A, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215;
}

/* ─────────────────────────────────────────────────────────────────────
   Символы, которых нет в подмножествах Google: ₽ ← → ↗ ≈ ≠ ≤ ▶

   Диапазоны выше их не покрывают, и глифов нет в самих файлах. Показательно:
   в latin есть евро (U+20AC), но не рубль; перечислены U+2191/U+2193 (вверх
   и вниз), но не боковые стрелки. Без правил ниже браузер добирал каждый
   такой символ из случайного системного шрифта — замерено в Chromium/macOS
   через CDP CSS.getPlatformFontsForNode: ₽ приходил из STIX Two Math
   (засечный, рядом с JetBrains Mono видны шпоры), → из Times New Roman,
   ≈ из Courier; на Android — риск тофу.

   Файлы -symbols.woff2 нарезаны из тех же исходников тех же версий, что и
   подмножества выше (Golos Text 2.004, JetBrains Mono 2.211, Literata
   3.103 — очертания всех общих глифов совпали побайтово). Оси wght/opsz
   на месте, поэтому символы тянутся за весом и кеглем наравне с текстом.

   Два правила, которые легко нарушить:

   1. unicode-range у каждого семейства перечисляет РОВНО то, что есть в его
      файле, — составы разные (в Golos нет ≠ и ▶, в Literata нет ↗). Заявить
      лишний код нельзя: браузер выберет это начертание и рисовать будет
      нечем.
   2. font-weight повторяет диапазон соседнего переменного начертания:
      400–600 для Golos Text и JetBrains Mono.

   ★ ✂ ✉ ✒ ✓ сюда не попали: их нет ни в одном из трёх семейств, они и
   дальше берутся системным шрифтом. */

/* Golos Text · символы · variable 400–600 */
@font-face {
  font-family: 'Golos Text';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(golos-text-symbols-400-600-core.woff2) format('woff2');
  unicode-range: U+20BD, U+2190, U+2192, U+2197, U+2248, U+2264;
}
/* JetBrains Mono · символы · variable 400–600 — ширина ₽ 600/1000, как у цифр:
   моноширинность и tabular-nums не ломаются */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(jetbrains-mono-symbols-400-600-core.woff2) format('woff2');
  unicode-range: U+20BD, U+2190, U+2192, U+2197, U+2248, U+2260, U+2264, U+25B6;
}
/* Literata · символы · normal 300-700 и italic 400 (↗ в Literata нет) */
@font-face {
  font-family: 'Literata';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(literata-normal-300-700-symbols-core.woff2) format('woff2');
  unicode-range: U+20BD, U+2190, U+2192, U+2248, U+2260, U+2264, U+25B6;
}
@font-face {
  font-family: 'Literata';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(literata-italic-400-symbols-core.woff2) format('woff2');
  unicode-range: U+20BD, U+2190, U+2192, U+2248, U+2260, U+2264, U+25B6;
}
