Możesz teraz dostosować skalę czcionki podczas ładowania, aby znormalizować rozmiary czcionek w dokumencie i zapobiec przesuwaniu układu przy przełączaniu się między czcionkami.
Przyjrzyjmy się tej prezentacji, w której font-size
to spójny 64px
, a jedyną różnicą między każdym z tych nagłówków jest font-family
. Przykłady po lewej stronie nie zostały skorygowane i mają niespójny rozmiar końcowy. Przykłady po prawej stronie używają wartości size-adjust
, aby zapewnić, że 64px
będzie mieć stały rozmiar końcowy.
W tym poście omawiamy nowy deskryptor czcionki CSS o nazwie size-adjust
. Pokazuje też kilka sposobów na poprawienie i unormowanie rozmiarów czcionek, aby zapewnić płynniejsze działanie, spójne systemy projektowania i bardziej przewidywalny układ strony. Jednym z ważnych przypadków użycia jest optymalizacja renderowania czcionek internetowych w celu zapobiegania całkowitemu przesunięciu układu (CLS).
Oto interaktywna prezentacja przestrzeni problematycznej. Spróbuj zmienić czcionkę w menu i obserwuj:
- różnice wysokości w wynikach.
- Atrakcyjne wizualnie treści
- Przesuwanie interaktywnych obszarów docelowych (wypadajce menu się przesuwa).
Jak skalować czcionki za pomocą size-adjust
Wprowadzenie do składni:
@font-face {
font-family: "Adjusted Typeface";
size-adjust: 150%;
src: url(some/path/to/typeface.woff2) format('woff2');
}
- Tworzy niestandardowy krój pisma o nazwie
Adjusted Typeface
. - Używa
size-adjust
, aby powiększyć każdy glif do 150% swojego domyślnego rozmiaru. - Dotyczy tylko jednego zaimportowanego kroju pisma.
Użyj wyżej wymienionej czcionki niestandardowej w ten sposób:
h1 {
font-family: "Adjusted Typeface";
}
Łagodzenie CLS dzięki płynnemu zamianie czcionek
Na przykładzie poniżej tego GIF-a zwróć uwagę na przykłady po lewej stronie i zobacz, jak zmienia się czcionka, gdy czcionka się zmienia. To tylko mały przykład z jednym nagłówkiem, ale problem jest bardzo widoczny.
Aby usprawnić renderowanie czcionek, warto użyć zamieniania czcionek. Renderuj szybko ładującą się czcionkę systemową, by ta treść była wyświetlana jako pierwsza, a po jej zakończeniu zamień ją na czcionkę internetową. Rozwiązanie to zapewnia korzyści obu stron: treści są widoczne tak szybko, jak to możliwe, a strona ma ładny styl, a użytkownicy nie muszą tracić czasu na ich zapoznawanie. Problem polega jednak na tym, że czasami po wczytaniu czcionka internetowa przesuwa całą stronę, ponieważ wyświetla się ona przy nieco innej wysokości ramki.
Ustawienie wartości size-adjust
w regułach @font-face
powoduje ustawienie globalnego dostosowania znaków dla kroju czcionki. Odpowiednie wyczucie czasu pozwoli zminimalizować
wizualną zmianę i płynną zamianę. Aby uzyskać płynne przejście, dostosuj ręcznie lub użyj kalkulatora rozmiarów Malte Ubl.
Na początku tego posta problem z rozmiarem czcionki został rozwiązany metodą prób i błędów. size-adjust
został zmieniony w źródłowym kodzie, aż ten sam nagłówek w plikach Cookie
i Arial
generował ten sam 64px
, co plik Press Start 2P
.
Dopasowałem 2 czcionki do docelowego rozmiaru czcionki.
@font-face {
font-family: 'Adjusted Arial';
size-adjust: 86%;
src: local(Arial);
}
@font-face {
font-family: 'Cookie';
size-adjust: 90.25%;
src: url(...woff2) format('woff2');
}
Kalibruję czcionki
Ty jako autor określasz cele kalibracji w celu normalizacji skali czcionki. Możesz przywrócić normalizację według czasu, zdjęcia lub czcionki systemowej, a następnie dostosować do nich niestandardowe czcionki. Możesz też dostosować czcionki lokalne, aby pasowały do pobranych.
Strategie kalibracji funkcji size-adjust
:
- Zdalny cel:
Dostosuj czcionki lokalne do pobranych czcionek. - Lokalny cel:
dostosuj pobrane czcionki do lokalnych czcionek docelowych.
Przykład 1. Cel zdalny
Weźmy pod uwagę poniższy fragment kodu, który dostosowuje rozmiar czcionki dostępnej lokalnie do rozmiaru niestandardowego atrybutu src. Zdalna czcionka niestandardowa jest celem kalibracji, np. czcionka marki:
@font-face {
font-family: "Adjusted Regular Arial For Brand";
src: local(Arial);
size-adjust: 90%;
}
@font-face {
font-family: "Rad Brand";
src: url(some/path/to/a.woff2) format('woff2');
}
html {
font-family: "Rad Brand", "Adjusted Regular Arial For Brand";
}
W tym przykładzie lokalny font Arial dostosowuje się do załadowanego fontu niestandardowego, aby zapewnić płynną wymianę.
Ta strategia ma tę zaletę, że oferuje projektantom i programistom ten sam krój czcionki do stosowania w różnych rozmiarach i typach. Marka jest celem kalibracji. To świetna wiadomość dla systemów projektowania.
Kalkulator Malte używa czcionki marki jako celu. Wybierz czcionkę Google, a my obliczy, jak ją dopasować, aby zmienić ją na czcionkę Google. Oto przykładowy kod CSS robota Roboto z kalkulatora, w którym załadowano plik {8/} o nazwie „Roboto-fallback”:
@font-face {
font-family: "Roboto-fallback";
size-adjust: 100.06%;
src: local("Arial");
}
Aby utworzyć w pełni dostosowanie na wielu platformach, zapoznaj się z przykładem poniżej, w którym podano 2 dostosowane lokalne czcionki zastępcze w zależności od czcionki marki.
@font-face {
font-family: "Roboto-fallback-1";
size-adjust: 100.06%;
src: local("Arial");
}
@font-face {
font-family: "Roboto-fallback-2";
size-adjust: 99.94%;
src: local("Arimo");
}
@font-face {
font-family: "Roboto Regular";
src: url(some/path/to/roboto.woff2) format('woff2');
}
html {
font-family: "Roboto Regular", "Roboto-fallback-1", "Roboto-fallback-2";
}
Przykład 2. Lokalne miejsce docelowe
Przyjrzyjmy się temu fragmentowi kodu, który dopasowuje niestandardową czcionkę marki do formatu Adobe:
@font-face {
font-family: "Rad Brand - Adjusted For Arial";
src: url(some/path/to/a.woff2) format('woff2');
size-adjust: 110%;
}
html {
font-family: "Rad Brand - Adjusted For Arial", Arial;
}
Ta strategia ma tę zaletę, że renderowanie odbywa się bez żadnych korekt, a następnie dopasowuje się do niego czcionki.
Dostrojenie ascent-override
, descent-override
i line-gap-override
Jeśli ogólne skalowanie glifów nie jest wystarczające do dostosowania strategii projektowania lub wczytywania, oto kilka bardziej precyzyjnych opcji dostrajania, które sprawdzą się wraz z funkcją size-adjust
. Te właściwości ascent-override
, descent-override
i line-gap-override
są obecnie zaimplementowane w Chromium 87 i nowszych oraz w Firefoksie od wersji 89.
ascent-override
Opis ascent-override
określa wysokość nad podstawą czcionki.
@font-face {
font-family: "Ascent Adjusted Arial Bold";
src: local(Arial Bold);
ascent-override: 71%;
}
Nad wielką literą A i O w czerwonym nagłówku znajduje się spacja, natomiast niebieski nagłówek został zmieniony w taki sposób, że wysokość reklamy mieści się w ramce ograniczającej.
descent-override
Deskryptor descent-override
określa wysokość poniżej linii bazowej czcionki.
@font-face {
font-family: "Ascent Adjusted Arial Bold";
src: local(Arial Bold);
descent-override: 0%;
}
Czerwony nagłówek (bez korekty) ma odstęp pod punktami odniesienia D i O, a niebieski nagłówek został dostosowany w taki sposób, aby litery dobrze przylegały do linii bazowej.
line-gap-override
Deskryptor line-gap-override
określa dane o przerwach między wierszami dla czcionki.
Jest to zalecana odległość między wierszami lub odstęp zewnętrzny.
@font-face {
font-family: "Line Gap Adjusted Arial";
src: local(Arial);
line-gap-override: 50%;
}
Czerwony nagłówek (bez korekty) nie zawiera elementu line-gap-override
, zasadniczo ma wartość 0%
, a niebieski nagłówek został zmieniony o 50%, tworząc odpowiednio odstępy i odstępy nad i pod literami.
Podsumowanie
Każde z tych zastąpień zapewnia dodatkowy sposób usunięcia nadmiarowych elementów z bezpiecznej ramki ograniczającej tekst w internecie. Możesz dostosować pole tekstowe do precyzyjnego wyświetlania.
Podsumowanie
Funkcja CSS @font-face
size-adjust
to ciekawy sposób na dostosowanie pola ograniczającego tekst w układzie strony internetowej, aby ulepszyć proces wymiany czcionki i uniknąć zmiany układu dla użytkowników. Więcej informacji znajdziesz w tych materiałach:
- Specyfikacja czcionek CSS na poziomie 5
- Dostosowywanie rozmiaru w MDN
- Generator płynnej zamiany @font-face
- Skumulowane przesunięcie układu (CLS) w web.dev
- Nowy sposób zmniejszania wpływu wczytywania czcionek: opisy czcionek w CSS
Zdjęcie: Kristian Strand na Unsplash