Jednym z powodów jest to, że projektanci stron internetowych lubią obecnie używać czcionek internetowych (zwykle w formacie WOFF ), np. Za pomocą czcionek internetowych Google .
Wcześniej jedynymi czcionkami, które mogły być wyświetlane w witrynie, były te, które użytkownik zainstalował lokalnie. Ponieważ np. Użytkownicy komputerów Mac i Windows niekoniecznie mieli te same czcionki, projektanci instynktownie zawsze definiowali reguły jako
font-family: Arial, Helvetica, sans-serif;
gdzie, jeśli pierwsza czcionka nie zostałaby znaleziona w systemie, przeglądarka szuka drugiej, a na końcu rezerwowej czcionki „sans-serif”.
Teraz można podać adres URL czcionki jako regułę CSS, aby przeglądarka mogła pobrać czcionkę:
@import url(http://fonts.googleapis.com/css?family=Droid+Serif:400,700);
a następnie załaduj czcionkę dla określonego elementu, np .:
font-family: 'Droid Serif',sans-serif;
Jest to bardzo popularne, aby móc używać niestandardowych czcionek, ale prowadzi również do problemu, że tekst nie jest wyświetlany, dopóki zasób nie zostanie załadowany przez przeglądarkę, co obejmuje czas pobierania, czas ładowania czcionki i czas renderowania. Oczekuję, że to artefakt, którego doświadczasz.
Jako przykład: jedna z moich krajowych gazet, Dagens Nyheter , używa czcionek internetowych do swoich nagłówków, ale nie prowadzi, więc kiedy ta strona jest załadowana, zwykle widzę pierwsze, a pół sekundy później wszystkie puste miejsca powyżej są zapełniane z nagłówkami (przynajmniej w Chrome i Operze. Nie próbowałem jeszcze innych).
(Poza tym projektanci rozsypują JavaScript absolutnie wszędzie, więc może ktoś próbuje zrobić coś sprytnego z tekstem, dlatego jest opóźniony. To byłoby bardzo specyficzne dla strony: ogólna tendencja do opóźniania tekstu w tych tekstach czasy to opisany powyżej problem z czcionkami internetowymi).
Dodanie
Ta odpowiedź stała się bardzo pozytywna, choć nie wdałem się w szczegóły, a może właśnie z tego powodu . W wątku pytania było wiele komentarzy, więc postaram się trochę rozwinąć (wydaje się, że wiele komentarzy zniknęło krótko po tym, jak temat został zabezpieczony - prawdopodobnie jakiś moderator oczyścił je ręcznie). Przeczytaj także inne odpowiedzi w tym wątku, ponieważ wszystkie rozwijają się na swój własny sposób.
Zjawisko to jest najwyraźniej znane jako „flash niestylizowanej treści” w ogóle, a „flash niestylizowanego tekstu” w szczególności. Wyszukiwanie „FOUC” i „FOUT” daje więcej informacji.
Mogę polecić post projektanta sieci Paula Irish'a na FOUT w związku z czcionkami internetowymi .
Należy zauważyć, że różne przeglądarki radzą sobie z tym inaczej. Napisałem powyżej, że przetestowałem Operę i Chrome, które zachowały się podobnie. Wszystkie te oparte WebKit (Chrome, Safari, itp) wybrać, aby uniknąć FOUT przez nie renderowania tekstu czcionki internetowej z awaryjnej czcionki w okresie internetowej załadunku czcionki. Nawet jeśli czcionka internetowa jest buforowana, nastąpi opóźnienie renderowania . W tym wątku pytania jest wiele komentarzy mówiących inaczej i że błędem jest, że buforowane czcionki zachowują się w ten sposób, ale np. Z powyższego linku:
W jakich przypadkach otrzymasz FOUT
- Will: Pobieranie i wyświetlanie zdalnego ttf / otf / woff
- Will: Wyświetlanie buforowanego pliku ttf / otf / woff
- Will: Pobieranie i wyświetlanie danych-uri ttf / otf / woff
- Will: Wyświetlanie buforowanych danych uri ttf / otf / woff
- Nie będzie: wyświetlanie czcionki, która jest już zainstalowana i nazwana w tradycyjnym stosie czcionek
- Nie będzie: wyświetlanie czcionki, która jest zainstalowana i nazwana przy użyciu lokalizacji local ()
Ponieważ Chrome czeka na zniknięcie ryzyka FOUT przed renderowaniem, powoduje to opóźnienie. W jakim stopniu efekt jest widoczny (szczególnie podczas ładowania z pamięci podręcznej) wydaje się zależeć między innymi od ilości tekstu, który należy renderować, i być może innych czynników, ale buforowanie nie usuwa całkowicie efektu.
W dolnej części postu Irlandczycy mają także kilka aktualizacji dotyczących zachowania przeglądarki z lat 2011–04–14:
- Firefox (od FFb11 i FF4 Final) nie ma już FOUT! Wooohoo! http://bugzil.la/499292 Zasadniczo tekst jest niewidoczny przez 3 sekundy, a następnie przywraca czcionkę zastępczą. Webfont prawdopodobnie załaduje się w ciągu tych trzech sekund, choć… mam nadzieję…
- IE9 obsługuje WOFF, TTF i OTF (choć wymaga osadzenia zestawu bitów - głównie spornego, jeśli używasz WOFF). JEDNAK!!! IE9 ma FOUT. :(
- Webkit ma łatkę czekającą na wylądowanie, aby wyświetlić tekst zastępczy po 0,5 sekundy. Takie samo zachowanie jak FF, ale 0,5 s zamiast 3 s.
- Dodatek : Blink ma również zarejestrowany błąd , ale wydaje się, że nie osiągnięto ostatecznego konsensusu co do tego, co z tym zrobić - obecnie taka sama implementacja jak WebKit.
Gdyby było to pytanie skierowane do projektantów, można by na wiele sposobów uniknąć tego rodzaju problemów webfontloader
, ale byłoby to inne pytanie. Link do irlandzkiego Paula zawiera dalsze szczegóły na ten temat.