/*
  Self-hosted type for xovv.io. Latin subsets of Outfit and DM Mono (Fontsource packages
  @fontsource/outfit 5.3.0 and @fontsource/dm-mono 5.3.0), served from our own domain.
  License: SIL Open Font License 1.1, see /assets/fonts/OFL-outfit.txt and /assets/fonts/OFL-dm-mono.txt.

  Use:
    font-family: 'Outfit', 'Outfit Fallback', ui-sans-serif, system-ui, sans-serif;
    font-family: 'DM Mono', 'DM Mono Fallback', ui-monospace, monospace;

  Fallback faces
  --------------
  While the web fonts load (font-display: swap) text renders in a local font that has been
  resized and given the web font's vertical metrics, so the swap barely moves the layout.

  Metrics, read from the font files (units per em, hhea ascent/descent/lineGap; the Outfit and DM Mono
  OS/2 typo and win values are identical to hhea). xWidthAvg is capsize's letter-frequency-weighted
  average advance for latin text.

    font              upm  ascent  descent  lineGap  xWidthAvg  avg/upm
    Outfit 400       1000    1000     -260        0        445  0.4450
    Outfit 500       1000    1000     -260        0        446  0.4460
    Outfit 600       1000    1000     -260        0        454  0.4540
    DM Mono 400/500  1000     992     -310        0        600  0.6000
    Arial            2048    1854     -434       67        913  0.4458
    Helvetica        2048    1577     -471        0        913  0.4458
    Menlo            2048    1901     -483        0       1233  0.6021

  Formula (next/font):
    size-adjust      = (font xWidthAvg / font upm) / (fallback xWidthAvg / fallback upm)
    ascent-override  = font ascent  / (font upm * size-adjust)
    descent-override = |font descent| / (font upm * size-adjust)
    line-gap-override = font lineGap / (font upm * size-adjust)

    face                       avg / fallback avg  = size-adjust   ascent  descent  line-gap
    Outfit 400 on Arial        0.4450 / 0.4458 =  99.82%   100.18%  26.05%  0.00%
    Outfit 500 on Arial        0.4460 / 0.4458 = 100.04%    99.96%  25.99%  0.00%
    Outfit 600 on Arial        0.4540 / 0.4458 = 101.84%    98.19%  25.53%  0.00%
    DM Mono 400/500 on Menlo   0.6000 / 0.6021 =  99.66%    99.54%  31.11%  0.00%

  Notes
  - Outfit widens as it gets heavier, so each weight has its own fallback face. Each is declared at
    that weight, so browsers use the regular local face as-is rather than faking bold.
  - Helvetica has the same xWidthAvg and units per em as Arial (913/2048), so the same overrides fit it.
  - local() matches a face's full or PostScript name. Menlo's are "Menlo Regular" and "Menlo-Regular"
    (Chrome does not resolve plain 'Menlo'), so all three spellings are listed.
  - Courier New (xWidthAvg 1229/2048) is 0.32% narrower than Menlo; close enough to share Menlo's numbers.
  - The latin subset does not include U+2192 (rightwards arrow); draw arrows as SVG.
*/

@font-face {
  font-family: 'Outfit';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/outfit-latin-400.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: 'Outfit';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('../fonts/outfit-latin-500.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: 'Outfit';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('../fonts/outfit-latin-600.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: 'DM Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/dm-mono-latin-400.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: 'DM Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('../fonts/dm-mono-latin-500.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: 'Outfit Fallback';
  font-style: normal;
  font-weight: 400;
  src: local('Arial'), local('Helvetica');
  size-adjust: 99.82%;
  ascent-override: 100.18%;
  descent-override: 26.05%;
  line-gap-override: 0.00%;
}

@font-face {
  font-family: 'Outfit Fallback';
  font-style: normal;
  font-weight: 500;
  src: local('Arial'), local('Helvetica');
  size-adjust: 100.04%;
  ascent-override: 99.96%;
  descent-override: 25.99%;
  line-gap-override: 0.00%;
}

@font-face {
  font-family: 'Outfit Fallback';
  font-style: normal;
  font-weight: 600;
  src: local('Arial'), local('Helvetica');
  size-adjust: 101.84%;
  ascent-override: 98.19%;
  descent-override: 25.53%;
  line-gap-override: 0.00%;
}

@font-face {
  font-family: 'DM Mono Fallback';
  font-style: normal;
  font-weight: 400 500;
  src: local('Menlo'), local('Menlo Regular'), local('Menlo-Regular'), local('Courier New');
  size-adjust: 99.66%;
  ascent-override: 99.54%;
  descent-override: 31.11%;
  line-gap-override: 0.00%;
}
