/*
 * Krój pisma interfejsu — Instrument Sans.
 *
 * Plik wczytywany z WŁASNEGO serwera, nie z fonts.googleapis.com. Odnośnik do
 * Google działałby tak samo, ale kosztowałby trzy rzeczy naraz: połączenie
 * z obcym serwerem przy każdym otwarciu aplikacji (a więc adres IP i nagłówki
 * przeglądarki użytkownika u strony trzeciej), zależność działania interfejsu
 * od cudzej dostępności oraz dodatkowe rozwiązanie nazwy i uzgodnienie TLS
 * przed pobraniem czegokolwiek. Dwa pliki w repozytorium to 41 kB, które
 * pochodzą stamtąd, skąd cała reszta aplikacji.
 *
 * Krój ZMIENNY (`font-weight: 400 700`) zamiast osobnych plików na każdą
 * grubość. Interfejs używa czterech (400, 500, 600, 700); cztery pliki statyczne
 * ważyłyby więcej niż jeden zmienny, a przy okazji wymuszałyby wybór spośród
 * wartości gotowych.
 *
 * Podział na dwa podzbiory znaków jest tu istotny, nie kosmetyczny.
 * Przeglądarka pobiera plik dopiero wtedy, gdy na stronie wystąpi znak z jego
 * zakresu (`unicode-range`). Polskie znaki diakrytyczne rozkładają się między
 * oba podzbiory: „ó" leży w `latin`, ale „ą", „ć", „ę", „ł", „ń", „ś", „ź"
 * i „ż" już w `latin-ext`. Pominięcie tego drugiego dałoby usterkę pozornie
 * losową — słowa bez ogonków składane nowym krojem, a te z ogonkami zastępczym.
 */

/* latin-ext — polskie znaki diakrytyczne poza „ó". */
@font-face {
    font-family: 'Instrument Sans';
    font-style: normal;
    font-weight: 400 700;
    font-stretch: 100%;

    /*
     * `swap`: do czasu pobrania pliku tekst jest składany krojem zastępczym
     * i pozostaje czytelny. Wartość domyślna (`auto`, w praktyce `block`)
     * ukrywałaby go na czas wczytywania — użytkownik z wolnym łączem patrzyłby
     * przez chwilę na układ bez treści. Ceną jest jednorazowe przeskoczenie
     * tekstu po zamianie kroju; jest to zamiana świadoma, bo tekst niewidoczny
     * jest gorszy od tekstu, który drgnie.
     */
    font-display: swap;

    src: url('/fonts/instrument-sans-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7,
                   U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF,
                   U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0,
                   U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* latin — alfabet podstawowy, cyfry, znaki przestankowe i „ó". */
@font-face {
    font-family: 'Instrument Sans';
    font-style: normal;
    font-weight: 400 700;
    font-stretch: 100%;
    font-display: swap;

    src: url('/fonts/instrument-sans-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;
}
